openapi: 3.0.1 info: title: Cart Actions Endpoints Category 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: Category description: 'Categories (also called hierarchies or nodes) are hierarchical structures to organize items and services into intuitive groups. Organizing items in this way simplifies item discovery and lifecycle management. There are two types of categories - **Primary** and **Alternate**. They enable you to create, organize, and distribute item data. - Primary category is the original catalog tree with nested levels of categories that place each item where it belongs, within a category. For example, `Computers` is a parent category with `Laptops` and `Desktops` as children categories, and `MacBook Pro` is an item within `Laptops`. This organization can be represented as Computers > Laptops > MacBook Pro. - Alternate categories serve as alternate organizations of the Primary category. Their main purpose is distribution management by displaying items on your website based on separate browsing structure configurations you set to help you achieve various merchandizing objectives, such as organizational requirements, multi-regional assortments, multi-channel assortments, and collections. For example, a company that sells, repairs, and supports computers and related items and services will have a Primary category containing a full list of their SKUs. However, this Primary category is not granular enough to use on their storefront. Hence, multiple Alternate hierarchies are created to target specific shopper segment experiences. For laptop consumers they''ll have one Alternate category, which lists all the laptops and PCs. For large businesses they''ll have another Alternate category, which lists all commercial laptops, PCs, printers, and servers. Both of the Alternate categories act as filters of the Primary category, tailored to the purpose of that merchandising strategy. **Category**, a subset of Product Catalog endpoints, aims to simplify catalog management by letting you create, update, and get one or more categories, category attributes, and item attributes. In addition, you can add and update category sources, source exclusions, and item attribute conditions. **Note**: The root name of primary category is PRIMARY, and it cannot be changed.' paths: /api-category/v1/category: post: tags: - Category summary: Create Category description: 'Creates Primary or Alternate category to organize items into logical groups.
**Note**:
1) To add **Primary** category, only `name` is required in the request.
2) To add a **child** category, both `name` and `parentNodeId` are required. For **child** category, you can additionally specify `order` of display.
3) To add an **Alternate** category, both `name` and `type` are required.
**Note**: Category details including category ID received in the response are required for subsequent calls. For example, it''s required to *Create item* (POST /v1/product/bulk/insert).' operationId: categoryCreate security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCategoryRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ModifyCategory' '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' get: tags: - Category summary: Get Categories description: 'Gets categories and their details including attributes, breadcrumbs, and details of children categories.
**Note**:
1) Specify either `ids` or `nodeIds` to get specific categories.
2) Use `type` to get a specific category type.
3) When query parameters are omitted, this endpoint returns a paginated response listing all Alternate categories in Active status. Using the query parameters `size` and `page`, you can narrow down the search results.' operationId: getCategoriesById security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: ids description: A 24-character system-generated category IDs. If `ids` and `nodeIds` are omitted, this endpoint returns all Alternate categories in Active status. Using `size` and `page`, you can narrow down the search results. example: - 6196b45b5cb04b7ce167cb46 - 7196b45b5cb04b7ce167cb45 explode: false schema: type: array items: type: string - in: query name: nodeIds description: Numeric category IDs. When `ids` and `nodeIds` are omitted, specify `size` and `page` to narrow down the search results. example: - 123 - 234 explode: false schema: type: array items: type: number - in: query name: keyword description: Keywords to search for categories. You will get a pagination response. Using `size` and `page`, you can narrow down the search results. example: computers schema: type: string - in: query name: type description: 'Category type.
**Note**: When omitted, you will get `ALTERNATE` categories by default.' schema: type: string enum: - PRIMARY - ALTERNATE - ALL example: ALL - in: query name: status description: 'Category status.
**Note**: If omitted, you will get Alternate categories in Active status by default.
**Note**: When `type` is Primary, `status` must be Active. Inactive status is not applicable for Primary category.' schema: type: string enum: - ACTIVE - INACTIVE - ALL example: ALL - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Size' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryPage' '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-category/v1/category/{nodeId}: put: tags: - Category summary: Modify Category description: Updates category details such as name, parent, and its order of appearance amongst sibling categories. operationId: categoryModify security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: path name: nodeId required: true description: Numeric category ID example: 1204 schema: type: number requestBody: content: application/json: schema: $ref: '#/components/schemas/ModifyCategoryRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ModifyCategory' '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-category/v1/category/search: get: tags: - Category summary: Find Categories description: 'Finds categories, by keywords, category identifiers, type, or status.
**Note**:
1) Categories and children categories must already exist in the system.
2) When query parameters are omitted, this endpoint returns a paginated response with all the categories. Using `size` and `page`, you can narrow down the search results.
3) GET /v1/category (Store admin context) or Algolia search (Shopper context) is strongly recommended over this endpoint.' operationId: searchCategories security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: keyword description: Keywords to search for categories. The response is paginated. Using query parameters `page` and `size`, you can narrow down the search results. example: computers schema: type: string - in: query name: ids description: A 24-characters system-generated category IDs. If `ids` and `nodeIds` are omitted, this endpoint returns a paginated response. Using query parameters `page` and `size`, you can narrow down the search results. example: - 6196b45b5cb04b7ce167cb46 - 7196b45b5cb04b7ce167cb47 explode: false schema: type: array items: type: string - in: query name: nodeIds description: Numeric category IDs. If `ids` and `nodeIds` are omitted, this endpoint returns a paginated response. Using query parameters `page` and `size`, you can narrow down the search results. example: - 15 - 16 explode: false schema: type: array items: type: number - in: query name: type description: 'Category type.
**Note**: If omitted, you will get a paginated response with `ALL` categories. Using query parameters `page` and `size`, you can narrow down the search results.' schema: type: string enum: - PRIMARY - ALTERNATE - ALL example: ALL - in: query name: status description: 'Category status. If omitted, you will get a paginated response of categories in `ACTIVE` status. Using the query parameters `page` and `size`, you can narrow down the search results.
**Note**: When `type` is Primary, `status` must be Active. Inactive status is not applicable for Primary category.' schema: type: string enum: - ACTIVE - INACTIVE - ALL example: ALL - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Size' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryPage' '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-category/v1/category/tree: get: tags: - Category summary: Get Category Tree description: 'Hierarchy of parent and children categories form a tree structure. This endpoint returns a tree of categories rooted in the category identified by `id` or `nodeId`.
**Note**:
1) If parent category does not exist in the system, you''ll get a `404 - Not found` error
2) If a child category does not exist for the given parent, you''ll get a success response but `children` property will show a blank array.' operationId: getCategoryTree security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: id description: A 24-character system-generated ID of root category. Either `id` or `nodeId` must be specified. example: 6196b44a5cb04b7ce167cb34 schema: type: string - in: query name: nodeId description: Numeric category ID. Either `id` or `nodeId` must be specified. example: 12 schema: type: integer - in: query name: depth description: Limits the size of the hierarchical category tree returned in the response. Depth of 0 means no children categories, attributes, or breadcrumbs, are included in the response. Unless depth is specified, entire category is returned up to the last set of categories (that have no more children categories). example: 1 schema: type: number - in: query name: excludeAttributes description: Set `true` to exclude attributes from both parent and children objects or false to include attributes in both parent and children details.
The default setting false. example: true schema: type: boolean - in: query name: excludeBreadcrumbs description: Set `true` to exclude breadcrumbs from both parent and children objects or false to include breadcrumbs in both parent and children details.
The default setting false. example: true schema: type: boolean - in: query name: excludeItemIds description: Set `true` to exclude item IDs from both parent and children objects or false to include item IDs in both parent and children details.
The default setting false. example: true schema: type: boolean - in: query name: onlyIncludeAttributes description: Attributes are included based on their exact, case-sensitive names. For example, if you specify the values as xyZ and Abc, the response will include these attributes in both parent and child objects. schema: type: array items: type: string example: - Category Image - Category Type responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryTree' '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-category/v1/category/sku: get: tags: - Category summary: Get Skus in a Category description: 'Gets SKUs of all items belonging to a category.
**Note**:
1) Categories must exist in the system to get SKUs in that category. If SKUs are not available in the given category ID, this endpoint returns an empty list.' operationId: getCategorySKUs security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: id description: A 4-character system-generated category ID. Either `id` or `nodeId` must be specified. example: 6196b45b5cb04b7ce167cb46 schema: type: string - in: query name: nodeId description: Numeric category ID. Either `id` or `nodeId` must be specified. example: 2 schema: type: integer - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Size' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SKUPage' '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-category/v1/category/attribute: post: tags: - Category summary: Assign and Unassign Category Attributes description: Category attributes let you define characteristics of categories and children categories.
This endpoint assigns or unassigns attributes of a single category. The primary purpose is to assign attributes. operationId: postCategoryAttributeByID security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/ModifyCategoryAttributesRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryAttributes' '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' get: tags: - Category summary: Get Assigned Category Attributes description: 'Gets all attributes assigned to a category.
**Note**:
*Get category* endpoint (GET /v1/category) returns categories, their attributes, children categories, and breadcrumb details. So, this endpoint is recommended if you have a category ID and only require its attributes.' operationId: getCategoryAttributesByID security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: id description: A 24-character system-generated category ID. Either `id` or `nodeId` must be specified. example: 619a8ba6f1875f6dbcaf0521 schema: type: string - in: query name: nodeId description: Numeric category ID. Either `nodeId` or `id` must be specified. example: 2 schema: type: integer - in: query name: status description: Attribute status. When `id` or `nodeId` is specified along with `status` = `Assigned`, the response is faster because the data is fetched from cache. When the `status` is `Unassigned`, the data is fetched from the DB and the response could take longer. schema: type: string enum: - ASSIGNED - UNASSIGNED example: ASSIGNED - $ref: '#/components/parameters/MandatoryPage' - $ref: '#/components/parameters/MandatorySize' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AttributePage' '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-category/v1/category/item-attribute: post: tags: - Category summary: Assign and Unassign Item Attributes description: Categories are used to segregate and group items. You can specify `mandatory` and `optional` attributes that all items within that category must have. Attributes are used to store structured information about items.
Use this endpoint to create and manage item attributes for the specified category. operationId: postCategoryItemibuteByID security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/ModifyCategoryItemAttributesRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryItemAttributes' '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' get: tags: - Category summary: Get Assigned Item Attributes description: 'Gets all the item attributes for the specified category.
**Note**: Items may also inherit item attributes from parent categories.' operationId: getCategoryItemAttributes security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: id description: 'A 24-character system-generated category ID. `id` and `nodeId` are the two identifiers of a category.
**Note**: If `id` is specified, `status` must be specified as well.' example: 6196b45b5cb04b7ce167cb46 schema: type: string - in: query name: nodeId description: 'Numeric category ID. `id` and `nodeId` are the two identifiers of a category.
**Note**: If `nodeId` is specified, `status` must be specified as well.' example: 25 schema: type: number - in: query name: status description: Status of item attributes. `Assigned` indicates item attributes are already assigned to categories and `unassigned` indicates otherwise. Applicable only when `id` or `nodeId` is specified. schema: type: string enum: - ASSIGNED - UNASSIGNED - $ref: '#/components/parameters/MandatoryPage' - $ref: '#/components/parameters/MandatorySize' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetCategoryItemAttributes' '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-category/v1/category/source: post: tags: - Category summary: Add and Remove Category Source Inclusions description: Adds and removes category sources.
Primary category is the original catalog tree consisting of nested levels of children categories and is used to place items where they belong. Alternate categories are dynamic and populated from the Primary category, which is the original source of items. Source for an Alternate category points to a Primary category, and makes all items in the Primary category appear within the Alternate category; it behaves like a symlink. operationId: modifyCategoriesNodeSources security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/ModifyNodeSourcesRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NodeSourcesAndExclusions' '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' get: tags: - Category summary: Get Category Source Inclusions description: Gets all the available category sources.
Items are created under the Primary category, and Alternate categories are created to export alternate organizations of the Primary category. So, the Primary category is the source of items that appear in Alternate categories. The category sources are Primary categories that can be used as item sources in Alternate categories. Sources behave similar to symlinks. operationId: getCategoriesNodeSources security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: id description: A 24-character system-generated category ID. `id` and `nodeId` are the two identifiers of a category and one of them must be specified. schema: type: string example: 6170135a49b4af38190970fe - in: query name: nodeId description: Numeric category ID. `id` and `nodeId` are the two identifiers of a category and one of them must be specified. schema: type: number example: 12 - in: query name: status description: Status of Category source. If omitted, 'ASSIGNED' status is used as default. schema: type: string enum: - ASSIGNED - UNASSIGNED example: ASSIGNED - $ref: '#/components/parameters/MandatoryPage' - $ref: '#/components/parameters/MandatorySize' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NodeSources' '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-category/v1/category/source/exclusion: post: tags: - Category summary: Add and Remove Category Source Exclusions description: Adds and removes exclusions for category source, by ID. For example, a category source `Electronics` has Laptop, Mobile, and Tablet as children categories. It's possible to exclude Tablet using this endpoint, so that it does not appear for shoppers. operationId: modifyCategoriesNodeSourceExclusions security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/NodeSourcesAndExclusionsRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NodeSourcesAndExclusions' '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' get: tags: - Category summary: Get Category Source Exclusions description: Gets available exclusions applied to a category source. operationId: getCategoriesNodeSourceExclusions security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: id description: A 24-character system-generated category ID. `id` and `nodeId` are the two identifiers of a category and one of them must be specified. schema: type: string - in: query name: nodeId description: Numeric category ID. `id` and `nodeId` are the two identifiers of a category and one of them must be specified. schema: type: number - in: query name: status description: 'Status of category source.
**Note**: If omitted, ''ASSIGNED'' status is used by default.' schema: type: string enum: - ASSIGNED - UNASSIGNED example: ASSIGNED - $ref: '#/components/parameters/MandatoryPage' - $ref: '#/components/parameters/MandatorySize' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NodeSourceExclusions' '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-category/v1/category/item-attribute/condition: post: tags: - Category summary: Add and Remove Item Attribute Conditions description: 'Adds conditions for item attributes so that items can be filtered based on these conditions, from an Alternate category.
For example, a Primary category called **Chairs** has three chairs of different materials. An Alternate category called **Wooden Chairs** with Primary category **Chairs** as source will list all the three chairs. Through this endpoint you can add a ''item attribute condition'' to filter chairs made of wood from **Wooden Chairs**. Another example: Using this endpoint, you can combine categories and list items on sale (where sale attribute is true).' operationId: postCategoryItemAttributeByID security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/CategoryItemAttributeConditionsRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryItemAttributeConditions' '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' get: tags: - Category summary: Get Item Attribute Conditions description: 'You can filter items from Alternate categories based on the conditions set using the POST /v1/category/item-attribute/condition endpoint.
**Note**: Items may inherit conditions from parent category as well.' operationId: getCategoryItemAttributesCondition security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' - in: query name: id description: A 24-character system-generated category ID. `id` and `nodeId` are the two identifiers of a category, and one of them must be specified. example: 6196b45b5cb04b7ce167cb46 schema: type: string - in: query name: nodeId description: Numeric category ID. `id` and `nodeId` are the two identifiers of a category, and one of them must be specified. example: 25 schema: type: number - in: query name: status description: Status of item attribute schema: type: string enum: - ASSIGNED - UNASSIGNED example: ASSIGNED - $ref: '#/components/parameters/MandatoryPage' - $ref: '#/components/parameters/MandatorySize' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetCategoryItemAttributeConditions' '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-category/v1/category/bulk/upsert: post: tags: - Category summary: Create or Update Multiple Categories or Collections description: 'With endpoint, you can create or update up to 20 categories and collections, along with their children. It is particularly useful when dealing with complex organization structures.
**Note**:
1) `parentNodeName` is a breadcrumb string of parent having delimeter as **->**
2) **PRIMARY** is the root category (level 0) name. To create root categories or children of PRIMARY root category, pass **PRIMARY** as `parentNodeName` parameter. For collections, the collection name is the root, followed by its children with delimeter
3) If a category name already exists as a parent category, use this endpoint to update the existing category. Otherwise, it creates a new category under the given parent.' operationId: postBulkUpsertCategories security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkUpsertCategory' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BulkUpsertCategoryResponse' '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-category/v1/category/find: post: tags: - Category summary: Find Categories description: Using this endpoint, you can search for categories and collections based on status, type, or category attributes. You will get a paginated response, which you can fine tune by specifying the query parameters `page` and `size`.
Data is retrieved from the database, ensuring latest results. operationId: findCategories security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/findCategoryRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryPage' '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-category/v1/category/bulk/category-attribute: post: tags: - Category summary: Manage Category Attributes for Multiple Categories or Collections description: With this endpoint, you can efficiently assign and unassign category attributes to specified categories and collections. You can assign or unassign up to 10 category attributes simultaneously. For example, you can assign category attributes, such as material or color, to all clothing categories, such as dresses and shirts. operationId: manageCategoryAttributes security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/manageCategoryAttributesRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/manageCategoryAttributesResponse' '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-category/v1/category/bulk/item-attribute: post: tags: - Category summary: Manage Item Attributes for Multiple Categories description: Use this endpoint to assign and unassign item attributes to specified categories. You can assign or unassign up to 10 item attributes simultaneously. operationId: manageItemAttributes security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/manageItemAttributesRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/manageItemAttributesResponse' '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' components: schemas: ModifyCategory: type: object properties: id: description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: string example: 6170135a49b4af38190970fe nodeId: description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: number example: 12 name: description: Category name type: string example: Furniture createdOn: description: Time of category creation (UTC format) type: string example: '2021-12-01T00:00:00.000Z' modifiedOn: description: Time when category was last updated (UTC format) type: string example: '2021-12-01T00:00:00.000Z' attributes: type: array items: type: object properties: {} children: type: array items: type: object properties: {} breadcrumbs: description: Path of categories leading to root of category type: array items: type: object properties: {} CategoryTree: type: object properties: id: description: A 24-character system-generated category ID type: string example: 6196b45b5cb04b7ce167cb46 nodeId: description: Numeric category ID type: number example: 16 name: description: Category name type: string example: PCs hierarchy: type: string enum: - PRIMARY - ALTERNATE example: ALTERNATE description: Category type isActive: description: 'true: Category is Active
false: Category is Inactive
**Note**: Inactive status is not applicable for Primary category.' type: boolean example: true attributes: description: Details of attributes belonging to this category type: array items: $ref: '#/components/schemas/Attribute' children: description: Children categories of this category type: array items: $ref: '#/components/schemas/CategoryChild' createdOn: type: string example: '2022-03-09T23:37:54.086Z' description: Time of category creation (UTC format) modifiedOn: type: string example: '2022-03-09T23:37:54.086Z' description: Time when category was last updated (UTC format) SKUPage: type: object properties: totalSize: description: Total number of records type: number example: 3 pageSize: description: Number of records (SKUs) per page type: number example: 10 pages: description: Number of pages for the given `pageSize` type: number example: 1 id: type: string example: 6196b45b5cb04b7ce167cb46 description: A 24-character system-generated category ID nodeId: type: number example: 2 description: Numeric category ID name: type: string example: electronics description: Numeric category ID skus: description: SKUs of items belonging to this category. type: array example: - mobo12001 - mobo12002 - mobo12003 items: type: string BulkUpsertCategoryResponse: type: object properties: success: type: array items: type: object properties: id: description: 24-character system-generated category ID type: string example: 611686da50fb7e0c5df78c2e name: type: string description: Category name example: Sofa parentId: type: string description: 24-character system-generated parent category ID example: 63ea48368da1ae00089b7052 nodeId: type: number description: Category ID example: 12 message: type: string example: Categories upserted successfully failed: type: array items: type: object properties: name: type: string example: testNodeChild description: Category name parentNodeName: type: string example: PRIMARY->testNode description: Parent category name message: type: string example: Parent node not found description: Error message 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 AttributePage: type: object properties: totalSize: description: Total number of records (attributes) type: number example: 100 pageSize: description: Number of records (attributes) in a page type: number example: 10 pages: description: Number of pages for the given `pageSize` type: number example: 10 id: type: string example: 619a8ba6f1875f6dbcaf0521 description: A 24-character system-generated category ID nodeId: type: number example: 2 description: Numeric category ID name: type: string example: electronics attributes: type: array items: $ref: '#/components/schemas/Attribute' CategoryItemAttribute: type: object properties: id: description: A 24-character system-generated attribute ID type: string example: 61ba11691a29d52cb2842541 name: description: Attribute name type: string example: published type: description: Attribute type type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - DATETIME example: BOOLEAN required: type: boolean example: false description: 'true: Attribute is mandatory
false: Attribute is optional' Breadcrumbs: type: object properties: id: description: A 24-character system-generated category ID type: string example: 6196b44a5cb04b7ce167cb34 nodeId: type: number example: 10 description: Numeric category ID name: description: Category name type: string example: Computers level: description: Depth below the root of the tree type: number example: 0 hierarchy: description: Category type type: string enum: - PRIMARY - ALTERNATE example: ALTERNATE isActive: description: 'true: Category is Active
false: Category is Inactive
**Note**: Inactive status is not applicable for Primary category.' type: boolean example: true createdOn: type: string example: '2022-03-09T23:37:54.086Z' description: Time of category creation (UTC format) modifiedOn: type: string example: '2022-03-09T23:37:54.086Z' description: Time when category was last updated (UTC format) manageCategoryAttributesRequest: type: object properties: attributes: type: array items: type: object required: - action - attributeId properties: action: type: string description: Assign or unassign category attributes example: SET enum: - SET - UNSET id: type: string description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 6196b45b5cb04b7ce167cb46 nodeId: type: number description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 25 attributeId: type: string description: A 24-character system-generated attribute ID example: 609ac75051f11a0007cf38b3 value: oneOf: - type: boolean - type: number - type: string BulkUpsertCategory: type: array items: type: object required: - name - parentNodeName properties: name: description: Category name to upsert type: string example: Sofa parentNodeName: description: Parent Category breadcrumb starting from **PRIMARY** which is the name of root node type: string example: PRIMARY->Furniture order: description: Order in which category will be displayed in Product Catalog in Copilot. type: number example: 2 ModifyCategoryItemAttributesRequest: type: object required: - itemAttributes properties: id: description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: string example: 619a8ba6f1875f6dbcaf0521 nodeId: description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: number example: 25 itemAttributes: description: Item attributes within a category type: array items: type: object required: - action - attributeId properties: action: type: string enum: - SET - UNSET description: Action type attributeId: type: string example: 609ac75051f11a0007cf38b3 description: A 24-character system-generated attribute ID mandatory: type: boolean example: false description: 'true: Attribute is mandatory
false: Attribute is optional' findCategoryRequest: type: object properties: include: type: object description: Inclusion criteria properties: children: description: 'true: Include children in the response
false: Exclude children from response' example: false type: boolean itemAttributes: description: 'true: Include item attributes in the response
false: Exclude item attributes from the response' example: false type: boolean nodeAttributes: description: 'true: Include category attributes in the response
false: Exclude category attributes from the response' example: false type: boolean filters: description: 'true: Include attributes in the response
false: Exclude attributes from the response' example: false type: boolean sources: description: 'true: Include sources in the response
false: Exclude sources from the response' example: false type: boolean statuses: description: 'true: Include statuses in the response
false: Exclude statuses from the response' example: true type: boolean type: description: Category type. The primary hierarchy contains all branches, whereas alternate hierarchies exist to export alternate organizations of the primary hierarchy. If omitted `ALTERNATE` is considered by default. example: ALTERNATE type: string enum: - PRIMARY - ALTERNATE status: description: Category status. Only ALTERNATE Hierarchies can be filtered using this paramater. If omitted `ACTIVE` status is considered by default. example: ALL type: string enum: - ACTIVE - INACTIVE - ALL page: description: Number of pages in the response. type: number example: 1 size: description: Number of categories per page. type: number example: 10 match: type: object properties: attribute: $ref: '#/components/schemas/CategoryAttributeMatch' and: type: array items: type: object properties: attribute: $ref: '#/components/schemas/CategoryAttributeMatch' or: type: array items: type: object properties: attribute: $ref: '#/components/schemas/CategoryAttributeMatch' CategoryChild: type: object properties: id: description: A 24-character system-generated category ID type: string example: 619973877a22c466eee93219 name: description: Category name type: string example: Apple breadcrumbs: description: Path of categories leading to root of categories type: array items: $ref: '#/components/schemas/Breadcrumbs' attributes: description: Attributes and their details type: array items: $ref: '#/components/schemas/Attribute' children: description: Details of children categories type: array items: $ref: '#/components/schemas/CategoryChild' CategorySingle: type: object properties: id: description: A 24-character system-generated category ID type: string example: 6196b45b5cb04b7ce167cb46 nodeId: description: Numeric category ID type: number example: 16 name: description: Category name type: string example: PCs hierarchy: description: Category type type: string enum: - PRIMARY - ALTERNATE example: ALTERNATE isActive: description: 'true: Category is Active
false: Category is Inactive
**Note**: Inactive status is not applicable for Primary category.' type: boolean example: true breadcrumbs: description: Path of categories leading to root of categories type: array items: $ref: '#/components/schemas/Breadcrumbs' attributes: description: Attributes belonging to this category type: array items: $ref: '#/components/schemas/Attribute' children: description: Children categories of this category type: array items: $ref: '#/components/schemas/CategoryChild' createdOn: type: string example: '2022-03-09T23:37:54.086Z' description: Time of category creation (UTC format) modifiedOn: type: string description: Time when category was last updated (UTC format) example: '2022-03-09T23:37:54.086Z' CategoryItemAttributeConditionsRequest: type: object required: - itemAttributes properties: id: description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: string example: 6196b45b5cb04b7ce167cb46 nodeId: description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: number example: 25 itemAttributeConditions: description: Details of conditions set or unset type: array items: type: object required: - action - attributeId properties: action: type: string enum: - SET - UNSET description: Action type attributeId: type: string example: 609ac75051f11a0007cf38b3 description: A 24-character system-generated attribute ID condition: type: object required: - type properties: type: description: Applicable criteria type: string enum: - 'YES' - 'NO' - CONTAINS - DOES_NOT_CONTAIN - IS_EXACT_MATCH - IS_EQUAL_TO - IS_GREATER_THAN - IS_LESS_THAN - INCLUDES - EXCLUDES example: CONTAINS value: type: string example: shoe description: Value corresponding to condition `type` CategoryAttribute: type: object properties: id: description: A 24-character system-generated attribute ID type: string example: 61ba11481a29d52cb284252f name: description: Attribute name type: string example: active type: description: Attribute type type: string example: BOOLEAN enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - DATETIME value: example: true description: Value corresponding to `type` manageItemAttributesResponse: type: object properties: success: type: array items: type: object properties: action: type: string description: action performed for an attribute to a node (SET | UNSET) example: SET id: type: string description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 6196b45b5cb04b7ce167cb46 nodeId: type: number description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 25 attributeId: type: string description: A 24-character system-generated attribute ID example: 609ac75051f11a0007cf38b3 name: type: string description: Attribute name example: Image nodeName: type: string description: Category name example: Sofa mandatory: type: boolean example: false failed: type: array items: type: object properties: index: type: number description: Points to the user attributes array index where the error occured filter: type: object properties: id: type: string description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category or node, and one of them must be specified. example: 6196b45b5cb04b7ce167cb46 nodeId: type: number description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 25 attributeId: type: string description: 24-character system-generated attribute ID example: 609ac75051f11a0007cf38b3 statuses: type: array items: type: object properties: code: type: string description: The error code example: NODE_NOT_FOUND name: type: string description: error name example: Node not found description: type: string description: Node doesn't exists in node collection CategoryAttributes: type: object properties: id: description: A 24-character system-generated category ID type: string example: 6196b45b5cb04b7ce167cb46 nodeId: type: number example: 25 description: Numeric category ID name: description: Category name type: string example: notes attributes: description: Attributes and their details type: array items: $ref: '#/components/schemas/CategoryAttribute' ModifyCategoryRequest: type: object required: - name properties: name: description: Category name type: string example: Furniture active: description: 'true: Category is Active
false: Category is Inactive
**Note**: Inactive status is not applicable for Primary category.' type: boolean example: true parentNodeId: description: Numeric ID of parent category, for external users type: number example: 1 order: description: Position of this category amongst sibling categories within the same parent category type: number example: 3 manageItemAttributesRequest: type: object properties: attributes: type: array items: type: object required: - action - attributeId properties: action: type: string description: Assign or unassign item attributes example: SET enum: - SET - UNSET id: type: string description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 6196b45b5cb04b7ce167cb46 nodeId: type: number description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 25 attributeId: type: string description: A 24-character system-generated attribute ID example: 609ac75051f11a0007cf38b3 mandatory: type: boolean description: 'true: Attribute is mandatory
false: Attribute is optional' example: false Attribute: type: object properties: id: description: A 24-character system-generated attribute ID type: string example: 619a8ba6f1875f6dbcaf0521 name: description: Attribute name type: string example: notes description: type: string description: Attribute description example: Notes for this particular category. type: type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - DATETIME example: TEXT value: type: string example: Unable to fulfill demand. description: Value corresponding to `type` CategoryPage: type: object properties: totalSize: description: Total number of records (categories) type: number example: 100 pageSize: description: Number of records (categories) per page type: number example: 10 pages: description: Number of pages for the given `pageSize` type: number example: 10 categories: type: array items: $ref: '#/components/schemas/CategorySingle' 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. NodeSources: type: object properties: totalSize: description: Total number of records (categories) type: number example: 100 pageSize: description: Number of records (categories) in a page type: number example: 10 pages: description: Number of pages for the given `pageSize` type: number example: 10 id: type: string example: 6170135a49b4af38190970fe description: A 24-character system-generated category ID nodeId: type: number example: 12 description: Numeric category ID name: type: string example: Furniture description: Category name sources: type: array items: type: object properties: id: type: string example: 61701259125b7225cbfb21b9 description: A 24-character system-generated attribute ID nodeId: type: number example: 12 description: Numeric category ID name: type: string example: picture description: Category name breadcrumbString: type: string example: PRIMARY/Furniture/Chairs description: Path of categories leading to source category CategoryItemAttributes: type: object properties: id: type: string example: 619a8ba6f1875f6dbcaf0521 description: A 24-character system-generated category ID nodeId: type: number example: 25 description: Numeric category ID name: type: string example: electronics description: Category name itemAttributes: type: array items: $ref: '#/components/schemas/CategoryItemAttribute' CategoryItemAttributeConditions: type: object properties: id: type: string example: 619a8ba6f1875f6dbcaf0521 description: A 24-character system-generated category ID nodeId: type: number example: 25 description: Numeric category ID itemAttributeConditions: type: array items: type: object properties: {} NodeSourceExclusions: type: object properties: totalSize: description: Total number of records type: number example: 100 pageSize: description: Number of records (categories) in a page type: number example: 10 pages: description: Number of pages for the given `pageSize` type: number example: 10 id: type: string example: 6170135a49b4af38190970fe description: A 24-character system-generated category ID. nodeId: type: number example: 12 description: Numeric category ID name: type: string example: Furniture description: Category name sourceExclusions: type: array items: type: object properties: id: type: string example: 61701259125b7225cbfb21b9 description: A 24-character system-generated category ID nodeId: type: number example: 12 description: Numeric category ID name: type: string example: picture description: Category name breadcrumbString: type: string example: PRIMARY/Furniture/Chairs description: Path leading to source of category GetCategoryItemAttributes: 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: Number of pages for the given `pageSize` type: number example: 10 itemAttributes: type: array items: type: object properties: id: description: A 24-character system-generated attribute ID type: string example: 61701259125b7225cbfb21b9 mapping: description: If this attribute is mapped to one of the standard names used by Product Catalog, this is the name the attribute is mapped to. type: string example: image name: description: Attribute name type: string example: picture type: description: Attribute type type: string example: TEXT required: description: 'true: Attribute is mandatory
false: Attribute is optional' type: boolean example: true ModifyCategoryAttributesRequest: type: object required: - attributes properties: id: description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: string example: 6196b45b5cb04b7ce167cb46 nodeId: description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: number example: 25 attributes: description: Details of category attributes type: array items: type: object required: - action - attributeId properties: action: type: string enum: - SET - UNSET description: Action type attributeId: type: string example: 609ac75051f11a0007cf38b3 description: A 24-character system-generated attribute ID value: oneOf: - type: boolean - type: number - type: string NodeSourcesAndExclusionsRequest: type: object properties: id: type: string example: 6170135a49b4af38190970fe description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. nodeId: type: number example: 12 description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. sourceExclusions: type: array items: type: object properties: id: type: string example: 61701259125b7225cbfb21b9 description: A 24-character system-generated category ID nodeId: type: number example: 12 description: Numeric category ID action: type: string enum: - SET - UNSET description: Action type ModifyNodeSourcesRequest: type: object properties: id: description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: string example: 6170135a49b4af38190970fe nodeId: description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. type: number example: 12 sources: type: array items: type: object properties: id: type: string example: 61701259125b7225cbfb21b9 description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifiers of a category and one of them must be specified. nodeId: type: number description: Numeric category ID. `nodeId` and `id` are the two identifiers of a category and one of them must be specified. example: 24 action: type: string enum: - SET - UNSET description: Action type CategoryAttributeMatch: type: object properties: id: description: 24-character system-generated attribute ID type: string example: 6196b44a5cb04b7ce167cb34 name: description: Attribute name type: string example: Category Code value: $ref: '#/components/schemas/CategoryAttributeMatchValue' manageCategoryAttributesResponse: type: object properties: success: type: array items: type: object properties: action: type: string description: Action performed on a category attribute such as set or unset example: SET id: type: string description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category or node, and one of them must be specified. example: 6196b45b5cb04b7ce167cb46 nodeId: type: number description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 25 attributeId: type: string description: 24-character system-generated attribute ID example: 609ac75051f11a0007cf38b3 name: type: string description: Attribute name example: Image nodeName: type: string description: Node name example: Sofa value: oneOf: - type: boolean - type: number - type: string failed: type: array items: type: object properties: index: type: number description: Points to the user attributes array index where the error occured filter: type: object properties: id: type: string description: A 24-character system-generated category ID. `nodeId` and `id` are the two identifier of a category or node, and one of them must be specified. example: 6196b45b5cb04b7ce167cb46 nodeId: type: number description: Numeric category ID. `nodeId` and `id` are the two identifier of a category, and one of them must be specified. example: 25 attributeId: type: string description: 24-character system-generated attribute ID example: 609ac75051f11a0007cf38b3 statuses: type: array items: type: object properties: code: type: string description: The error code example: NODE_NOT_FOUND name: type: string description: error name example: Node not found description: type: string description: Node does not exists CreateCategoryRequest: type: object required: - name properties: name: description: Category name type: string example: notes active: description: 'true: Category is Active
false: Category is Inactive
**Note**: When `type` is Primary, `status` must be Active. Inactive status is not applicable for Primary category.' type: boolean example: true parentNodeId: description: Numeric ID of parent category. If omitted, new category is created under the root category. type: number example: 1 order: description: 'The order in which this child category appears among the sibling categories (of the same parent).
**Note**:
1) Applicable only for children categories.
2) Order 0 means this child category appears at the beginning of other sibling categories.
3) Unless order is specified, the child category appears at the end.' type: number example: 3 type: type: string enum: - ALTERNATE - PRIMARY description: Category type. Specify this field to create a new root category. Applicable only if `parentNodeId` is omitted. CategoryAttributeMatchValue: type: object properties: exact: description: Exact value to match oneOf: - type: string - type: integer - type: boolean example: '1234' contains: description: Value to match as a substring type: string example: '1234' GetCategoryItemAttributeConditions: 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: Number of pages for the given `pageSize` type: number example: 10 id: type: string example: 6196b45b5cb04b7ce167cb46 description: A 24-character system-generated category ID nodeId: type: number example: 25 description: Numeric category ID name: type: string example: electronics itemAttributeConditions: type: array items: type: object properties: {} NodeSourcesAndExclusions: type: object properties: id: type: string example: 6170135a49b4af38190970fe description: A 24-character system-generated category ID nodeId: type: number example: 12 description: Numeric category ID name: type: string example: Furniture description: Category name sources: type: array items: type: object properties: id: type: string example: 61701259125b7225cbfb21b9 description: A 24-character system-generated category ID name: type: string example: picture description: Category name breadcrumbString: type: string example: PRIMARY/Furniture/Chairs description: Path of categories leading to source of categories sourceExclusions: type: array items: type: object properties: id: type: string example: 61701259125b7225cbfb21b9 description: A 24-character system-generated category ID name: type: string example: picture description: Category name breadcrumbString: type: string example: PRIMARY/Furniture/Chairs description: Path of categories leading to root of categories parameters: Size: in: query name: size description: 'Number of records per page
**Note**:
1) Always paired with `page`.
2) Applicable only in a paginated response.
3) No default value set. Unless a value is specified, endpoint returns an error.' example: 10 schema: type: number MandatoryPage: in: query name: page description: Page number to be retrieved. Applicable only in a paginated response and always paired with `size`. example: 1 schema: type: number required: true Page: in: query name: page description: 'Page number to be retrieved.
**Note**:
1) Applicable only in a paginated response.
2) Always paired with `size`
3) No default value set. Unless a value is specified, endpoint returns an error.' example: 1 schema: type: number MandatorySize: in: query name: size description: Number of records per page. Applicable only in a paginated response and always paired with `page`. example: 10 schema: type: number required: true 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. '