openapi: 3.0.0
info:
  title: Product Catalog
  description: >-
    As brands and retailers grow, they often expand their item catalogs,
    resulting in the need to enrich and manage more product (commonly referred
    to as item in fabric) data. fabric Product Catalog alleviates the burden of managing large amounts of item data by
    means of a central storage repository. fabric Product Catalog helps you with improved
    data quality, consistent customer experience, reduced time to market, easy
    integration with external systems, reduced management costs and risks,
    faster and easier updates, and easy scaling. You can create, import, enrich,
    validate, distribute, and manage complex item information, centrally. As a
    result, you deliver product experiences that drive sales through every
    channel. <br /> <br /> During onboarding, you are given the necessary
    credentials to access Product Catalog - Copilot UI, APIs, or both. As a prerequisite,
    you create the items to be sold, identify their unique as well as common
    properties, and envision their organization into categories and sub
    categories. A basic workflow is: <br /> 1) **Create item attributes** using
    POST /api-product/v1/product/attribute/bulk. <br /> 2) **Update attribute
    mapping** using POST /api-product/v1/product/attribute/mapping <br /> 3)
    **Create Primary category** using the POST /api-category/v1/category to
    create the original organizational structure. <br /> 4) **Assign item
    attributes** to Primary category using POST
    /api-category/v1/category/item-attribute. <br /> 5) **Create items** using
    POST /api-product/v1/product/bulk/insert. <br /> 6) **Create Alternate
    category**, for distribution management and fulfilling various merchandising
    objectives.
  version: 2.0.0
  contact:
    email: support@fabric.inc
  license:
    name: fabric API License
    url: https://fabric.inc/api-license
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.
  - name: Product
    description: >-
      **Product**, a subset of Product Catalog endpoints, aims at making item management
      more efficient. They create, update, and get items, which may be
      individual items or collection of items (called bundles). Each item has a
      title, item ID, description, category, and assigned attributes. Multiple
      options of a given item become variants of that item. For example, a
      t-shirt with three sizes may have small, medium, and large variants. Each
      variant has its own item ID, attributes, and other data points. Each
      variant is nested under its parent item, allowing the different options to
      appear on the same product page. You can also create or update one or more
      item attributes and attribute groups.
  - 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.
  - name: Bulk Import
    description: >-
      Set of endpoints to help bulk import of items, bundles, categories and
      attributes through CSV files
externalDocs:
  description: Find out more about Product Catalog
  url: /v3/product-catalog/user-guides/product-catalog/overview
servers:
  - url: https://live.copilot.fabric.inc
    description: Production
paths:
  /api-category/v1/category:
    post:
      tags:
        - Category
      summary: Create category
      description: >-
        Creates Primary or Alternate category to organize items into logical
        groups. <br /> **Note**: <br /> 1) To add **Primary**  category, only
        `name` is required in the request. <br /> 2) To add a **child**
        category, both `name` and `parentNodeId` are required. For **child**
        category, you can additionally specify `order` of display. <br /> 3) To
        add an **Alternate** category, both `name` and `type` are required. <br
        /> **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. <br /> **Note**: <br /> 1) Specify
        either `ids` or `nodeIds` to get specific categories. <br /> 2) Use
        `type` to get a specific category type. <br /> 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. <br /> **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. <br /> **Note**: If omitted, you will get Alternate
            categories in Active status by default. <br /> **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.
        <br /> **Note**: <br /> 1) Categories and children categories must
        already exist in the system. <br /> 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. <br /> 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. <br /> **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. <br /> **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`.<br /> **Note**: <br /> 1) If parent category does
        not exist in the system, you'll get a `404 - Not found` error <br /> 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. <br /> 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. <br /> 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.
            <br /> 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. <br /> **Note**: <br />
        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. <br /> 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. <br /> **Note**: <br /> *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. <br /> 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. <br />
        **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. <br /> **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. <br /> **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. <br /> 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. <br /> 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. <br /> **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. <br /> 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. <br
        /> **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. <br /> **Note**: <br /> 1)
        `parentNodeName` is a breadcrumb string of parent having delimeter as
        **->** <br /> 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 <br
        /> 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`. <br /> 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"
  /api-product/v1/product/bulk/insert:
    post:
      tags:
        - Product
      summary: Create items and bundles
      description: >-
        Creates multiple items or bundles along with their attributes. In
        addition, this endpoint supports data validation to ensure accuracy and
        consistency. <br /> **Note**: <br /> 1) As a prerequisite category and
        attributes must be created beforehand. <br /> 2) To add an item variant,
        parentSku must be additionally specified. <br /> 3) An item is assigned
        to only one category but it can be fetched from Alternate categories.
        <br /> 4) Up to 50 items or bundles can be added.
      operationId: createProducts
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProductCreate"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductResponse"
        "400":
          description: Client error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClientError"
        "422":
          description: Failing items
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductModifyError"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServerError"
  /api-product/v1/product/bulk/update:
    post:
      tags:
        - Product
      summary: Update items and bundles
      description: >-
        With this endpoint, you can update multiple items or bundles, along with
        their attributes. <br /> **Note**: <br /> 1) You can update up to 50
        items or bundles. <br /> 2) By specifying the attribute `value` as NULL,
        a reserved keyword, you can remove the existing attribute value.
      operationId: updateProducts
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProductUpdate"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductResponse"
        "400":
          description: Client error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClientError"
        "422":
          description: Failing items
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductModifyError"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServerError"
  /api-product/v1/product/bulk/upsert:
    post:
      tags:
        - Product
      summary: Upsert items and bundles
      description: >-
        With this endpoint, you can create or update items or bundles along with
        their attributes. <br /> **Note**: <br /> 1) If the SKU already exists,
        then the given item or bundle is updated. Otherwise, a new item or
        bundle is created with that SKU. <br /> 2) You can add or update up to
        50 items or bundles. <br /> 3) By specifying the attribute `value` as
        NULL, a reserved keyword, you can remove the existing attribute value.
      operationId: upsertProducts
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProductCreate"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductResponse"
        "400":
          description: Client error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ClientError"
        "422":
          description: Failing items
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductModifyError"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServerError"
  /api-product/v1/product/bundle/update:
    post:
      tags:
        - Product
      summary: Update items in bundle
      description:
        Updates bundle by adding or removing items and adjusting quantities.
      operationId: updateBundles
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BundleUpdateRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BundleUpdateResponse"
        "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:
    get:
      tags:
        - Product
      summary: Get items and children items
      description: >-
        Items can be individual items or a bundle of items. This endpoints
        allows you to retrieve items - individual items and bundles, along with
        their attributes, children items and their details. <br /> **Note**: <br
        /> 1) Optional filter parameters can be passed in as query to narrow
        down the search results. <br /> 2) This API will only return the count
        and details of Parent SKU and not its variants
      operationId: getProducts
      security:
        - authorization: []
      parameters:
        - 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"}
        - in: query
          name: skus
          description: >-
            Stock Keeping Units (SKUs). <br /> **Note**: Either `skus` or
            `itemIds` can be used to get specific items. If they are omitted,
            all items are returned in a paginated response. Using the query
            parameters `page` and `size`, you can narrow down the search
            results.
          schema:
            type: array
            items:
              type: string
          example:
            - BUNDLE-01
            - BUNDLE-02
          explode: false
        - in: query
          name: itemIds
          description: >-
            Item IDs. Applicable only when `skus` are omitted. <br /> **Note**:
            Either `skus` or `itemIds` can be used to get specific items. If
            they are omitted, all items are returned in a paginated response.
            Using the query parameters `page` and `size`, you can narrow down
            the search results.
          schema:
            type: array
            items:
              type: number
          example:
            - 4
            - 5
          explode: false
        - in: query
          name: page
          description: >-
            Page number to be retrieved. Applicable only in a paginated response
            and always paired with `size`.
          schema:
            type: number
            example: 1
        - in: query
          name: size
          description: >-
            Number of records per page. Applicable only in a paginated response
            and always paired with `page`.
          schema:
            type: number
            example: 10
        - in: query
          name: status
          description: >-
            Item status. <br /> **Note**: <br /> 1) Returns a paginated
            response. <br /> 2) When used as the only criteria, must be paired
            with `size` and `page` to narrow down the search results.
          schema:
            type: string
            enum:
              - ACTIVE
              - INACTIVE
            example: ACTIVE
        - in: query
          name: createdAfter
          description: >-
            Lists items created after a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` and `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` to narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - in: query
          name: createdBefore
          description: >-
            Lists items created before a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` and `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` to narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - in: query
          name: modifiedAfter
          description: >-
            Lists items modified after a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` or `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` to narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - in: query
          name: modifiedBefore
          description: >-
            Gets items modified before a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` and `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` to narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - 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:
            - Image
            - Title
        - in: query
          name: onlyExcludeAttributes
          description: >-
            Attributes are excluded based on their exact, case-sensitive names.
            For example, if you specify the values as xyZ and Abc, the response
            will exclude these attributes from both parent and child objects.
            <br /> **Note**: When both `onlyIncludeAttributes` and
            `onlyExcludeAttributes` are used, the `onlyIncludeAttributes` takes
            precedence. As a result, attributes are first filtered based on
            `onlyIncludeAttributes`, and then `onlyExcludeAttributes` is applied
            to further refine the selection.
          schema:
            type: array
            items:
              type: string
          example:
            - Image
            - Title
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/ItemProductsResponse"
                  - $ref: "#/components/schemas/BundleProductsResponse"
                  - $ref: "#/components/schemas/NoProductsResponse"
        "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/v2/product:
    get:
      tags:
        - Product
      summary: Get items and limited children items
      description: >-
        Gets items (single item or bundles) by `skus` or parent `skus`. When a
        parent SKU is sent as query parameter, you'll get children items of
        those SKUs. When `parentSKU` is not specified, children items are not
        retrieved. Optionally, `page` and `size` can be used as query
        parameters. **Note**: <br /> 1) `status` and `date` query parameters
        works only with pagination when `parentSku` is omitted. Separate
        responses are shown for bundle and product.<br /> 2) when `parentSku` is
        passed as request parameter, it will only return the paginated response
        of children of `parentSKU`.
      operationId: getProductsV2
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
        - in: query
          name: skus
          description: >-
            Stock Keeping Units (SKUs). <br /> **Note**: Either `skus` or
            `itemIds` can be used to get specific items. If they are omitted,
            all items are returned in a paginated response. Using the query
            parameters `page` and `size`, you can narrow down the search
            results.
          schema:
            type: string
          example: BUNDLE-01
        - in: query
          name: page
          description: >-
            Page number to be retrieved. Applicable only in a paginated response
            and always paired with `size`.
          schema:
            type: number
            example: 1
        - in: query
          name: size
          description: >-
            Number of records per page. Applicable only in a paginated response
            and always paired with `page`.
          schema:
            type: number
            example: 10
        - in: query
          name: status
          description: >-
            Item status. <br /> **Note**: <br /> 1) Returns a paginated
            response. <br /> 2) When used as the only criteria, must be paired
            with `size` and `page` to narrow down the search results.
          schema:
            type: string
            enum:
              - ACTIVE
              - INACTIVE
            example: ACTIVE
        - in: query
          name: type
          description:
            "Item type. **Note**: Set page and size to use this filter."
          schema:
            type: string
            enum:
              - ITEM
              - BUNDLE
        - in: query
          name: createdAfter
          description: >-
            Items created after a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` and `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` to narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - in: query
          name: createdBefore
          description: >-
            Items created before a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` and `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - in: query
          name: modifiedAfter
          description: >-
            Items modified after a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` or `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` to narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - in: query
          name: modifiedBefore
          description: >-
            Items modified before a specific date. Valid date formats are
            'YYYY/MM/DD', 'YYYY-MM-DDTHH:mm:ss.SSSZ'. <br /> **Note**: <br /> 1)
            Applicable only when `skus` and `itemIds` are omitted. <br /> 2)
            Returns paginated response. <br /> 3) Must be paired with `size` and
            `page` to narrow down the search results.
          schema:
            type: string
            example: "2021-05-28T16:36:50.055Z"
        - in: query
          name: parentSku
          description: >-
            Parent SKU to get its children items. <br /> **Note** <br /> 1) To
            get a p paginates response, optionally, `size` and `page` can be
            used as query parameters. When they are omitted, this endpoint
            returns all children. <br /> 2) Only `page` and `size` are supported
            with this query parameter, to narrow down the search results.
          schema:
            type: string
            example: parent123
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/ItemProductsV2Response"
                  - $ref: "#/components/schemas/BundleProductsResponse"
                  - $ref: "#/components/schemas/NoProductsResponse"
        "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/search:
    get:
      tags:
        - Product
      summary: Find items
      description: >-
        Finds items - both individual items and bundles. You will get a
        paginagted response, which you can narrow down using filter parameters,
        including `page` and `size`.
      operationId: productSearch
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
        - in: query
          name: keyword
          description: Keywords related to SKU or title
          schema:
            type: string
            example: MOBO-1024
        - in: query
          name: skus
          description: >-
            Searches for items based on SKU. <br /> **Note**: If omitted, all
            items are retrieved. <br /> Applicable only when `keyword` is
            omitted.
          schema:
            type: array
            items:
              type: string
          example:
            - MOBO-1024
            - MOBO-1025
          explode: false
        - in: query
          name: itemIds
          description: >-
            Item IDs. <br /> **Note**: If omitted, all items are retrieved <br
            /> Applicable only when `keyword` and `skus` are omitted.
          schema:
            type: array
            items:
              type: string
          example:
            - 4
            - 5
          explode: false
        - in: query
          name: page
          description: Page number to be retrieved.
          schema:
            type: number
          example: 10
        - in: query
          name: size
          description: >-
            Number of records per page. <br />**Note**: 1) Always paired with
            `page`. <br />2) Applicable only in a paginated response.
          schema:
            type: integer
          example: 10
        - in: query
          name: type
          description: Item type
          schema:
            type: string
            enum:
              - ITEM
              - BUNDLE
              - ALL
            example: ITEM
        - in: query
          name: allAttributes
          description: >-
            true: Gets all attributes. false: Gets only the mapped attributes.
            <br /> **Note**: Always clubbed with `page` and `size`. When they
            are not specified, you will get up to 10 records.
          schema:
            type: boolean
            example: true
        - in: query
          name: excludeChildren
          description:
            "true: Excludes children items <br /> false: Includes children items"
          schema:
            type: boolean
            example: false
        - in: query
          name: onlyChildren
          description:
            "true: Excludes parent items <br /> false: Includes parent items"
          schema:
            type: boolean
            example: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/ItemProductSearchResponse"
                  - $ref: "#/components/schemas/BundleProductSearchResponse"
                  - $ref: "#/components/schemas/NoProductsResponse"
        "400":
          description: OK
          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:
    get:
      tags:
        - Product
      summary: Get item attributes
      description: >-
        Item attributes define characteristics of an item. For example, item
        name, its identifiers, and description are the common attributes of any
        item. Attributes are key-value pairs (color: red) that hold information
        for each property of an item. <br /> This endpoint gets all attributes
        of an item, by SKU or itemId. <br /> **Note**: The *Get item* (GET
        /v1/product) gets item details and their attribute. So, this endpoint is
        recommended when you have the item SKU or item ID, and only require its
        attributes.
      operationId: getProductAttribute
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
        - in: query
          name: sku
          description: >-
            Stock Keeping Unit (SKU) of item. <br /> **Note**: If omitted
            `itemId` becomes mandatory.
          schema:
            type: string
            example: MOBO-1024
        - in: query
          name: itemId
          description:
            "Item ID. <br /> **Note**: If omitted `sku` becomes mandatory."
          schema:
            type: number
            example: 3
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductAttributePage"
        "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/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. <br />
        **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. <br /> This endpoint creates and
        updates item attributes to be assigned later. <br /> **Note**: <br /> 1)
        You can add and manage unlimited attributes for your items. Once they
        are created, they appear as a selectable option on product pages. <br />
        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. <br /> Use
        this endpoint to create, update, or delete attribute groups. <br />
        **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"
  /api-category/v1/category/bulk/template:
    get:
      tags:
        - Bulk Import
      summary: Generate CSV template for categories
      description: Generates CSV template to bulk upload categories.
      operationId: generateCSVfileForCategory
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      responses:
        "200":
          description: OK
          content:
            application/csv:
              schema:
                type: string
                format: binary
        "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/upload-url:
    post:
      tags:
        - Bulk Import
      summary: Generate S3 bucket URL for categories import
      description: >-
        Generates S3 bucket URL to upload categories using CSV file. Follow
        these steps to bulk upload categories using CSV: <br /> 1) Download the
        template using *GET /api-category/v1/category/bulk/template* <br /> 2)
        Upload the URL using *POST /api-category/v1/upload-url*<br /> 3) Open
        the URL from the response of the above endpoint (*POST
        /api-category/v1/upload-url*), change the method to PUT, update
        **binary** in the requestBody type to view the select file option and
        upload a CSV from local system <br /> 4) You may check the status using
        this endpoint *GET /api-category/v1/category/bulk/file/:fileId/status*
      operationId: generateS3urlForCategory
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GetS3URLRequestUsingOnlyFileName"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetS3URLResponse"
        "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/file/search:
    post:
      tags:
        - Bulk Import
      summary: Get imported files for categories
      description: >-
        Gets a list of files used for importing categories, along with their
        current statuses. You will get a paginated response, which you can
        narrow down using filter criteria such as `page` and `size`.
      operationId: fileSearchForCategories
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FileSearchRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FilePaginationResponse"
        "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/file/{fileId}/status:
    get:
      tags:
        - Bulk Import
      summary: Get file upload status
      description: Gets file upload status by file ID.
      operationId: getFileStatusForCategories
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
        - in: path
          name: fileId
          description: 24-character system-generated file ID
          schema:
            type: string
          required: true
          example: 626c3c28e041b10009810b21
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/UploadFileStatusResponse"
                  - $ref: "#/components/schemas/UploadFileStatusNoItemResponse"
        "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/bulk/template/{accountId}/{nodeId}:
    get:
      tags:
        - Bulk Import
      summary: Generate CSV template file for items
      description:
        Generates CSV template to upload items for a specific category.
      operationId: generateCSVfile
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
        - in: path
          name: accountId
          description: Account ID
          schema:
            type: string
          required: true
        - in: path
          name: nodeId
          description: A 24-character system-generated category ID
          schema:
            type: string
          required: true
          example: 6131f771d4a7fa4314e45ebd
      responses:
        "200":
          description: OK
          content:
            application/csv:
              schema:
                type: string
                format: binary
        "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/upload-url:
    post:
      tags:
        - Bulk Import
      summary: Generate S3 bucket URL for item import
      description: >-
        Generates S3 bucket URL to upload items using CSV file. Follow these
        steps for bulk upload using CSV: <br /> 1) Download the template using
        *GET /api-product/v1/product/bulk/template/:accountid/:nodeId* <br /> 2)
        Upload the url using *POST /api-product/v1/upload-url*<br /> 3) Open the
        URL from the response of the above endpoint (*POST
        /api-product/v1/upload-url*), change the method to PUT, update
        **binary** in the requestBody type to view the select file option and
        upload a CSV from local system <br /> 4) You may check the status using
        this endpoint *GET /api-product/v1/product/bulk/file/:fileId/status*
      operationId: generateS3url
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GetS3URLRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetS3URLResponse"
        "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/file/search:
    post:
      tags:
        - Bulk Import
      summary: Get imported files for items
      description: >-
        Gets a list of files used to import items, along with their current
        statuses. You will get a paginated response, which you can narrow down
        using filter criteria such as `page` and `size`.
      operationId: fileSearch
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FileSearchRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FilePaginationResponse"
        "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/bulk/template/bundle/{accountId}/{nodeId}:
    get:
      tags:
        - Bulk Import
      summary: Generate CSV template for bundles
      description:
        Generates CSV template to upload bundles for a specific category.
      operationId: generateItemBundleCSVfile
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
        - in: path
          name: accountId
          description: Account ID
          schema:
            type: string
          required: true
        - in: path
          name: nodeId
          description: A 24-character system-generated category ID
          schema:
            type: string
          required: true
          example: 6131f771d4a7fa4314e45ebd
      responses:
        "200":
          description: OK
          content:
            application/csv:
              schema:
                type: string
                format: binary
        "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/upload-url/bundle:
    post:
      tags:
        - Bulk Import
      summary: Generate S3 bucket URL for bundle import
      description: Generates S3 bucket URL to upload item bundles using CSV file
      operationId: generateItemBundleS3url
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GetS3URLBundleRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetS3URLBundleResponse"
        "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/file/bundle/search:
    post:
      tags:
        - Bulk Import
      summary: Get imported files for bundles
      description: >-
        Gets a list of files used to import bundles, along with their current
        statuses. You will get a paginated response, which you can narrow down
        using filter criteria such as `page` and `size`.
      operationId: ItemBundleFileSearch
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FileSearchRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FilePaginationResponse"
        "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/bulk/template/attribute:
    get:
      tags:
        - Bulk Import
      summary: Generate CSV template for item attributes
      description: "Generates CSV template to upload item attributes. "
      operationId: generateItemAttributeCSVfile
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      responses:
        "200":
          description: OK
          content:
            application/csv:
              schema:
                type: string
                format: binary
        "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/upload-url/attribute:
    post:
      tags:
        - Bulk Import
      summary: Generate S3 bucket URL for item attribute import
      description:
        Generates S3 bucket URL to upload item attribute using CSV file
      operationId: generateItemAttributeS3url
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GetS3URLItemAttributeRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetS3URLItemAttributeResponse"
        "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/file/attribute/search:
    post:
      tags:
        - Bulk Import
      summary: Get imported files for item attributes
      description: >-
        Gets a list of files used to import item attributes, along with their
        current statuses. You will get a paginated response, which you can
        narrow down using filter criteria such as `page` and `size`.
      operationId: ItemAttributeFileSearch
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FileSearchRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FilePaginationResponse"
        "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/bulk/file/{fileId}/status:
    get:
      tags:
        - Bulk Import
      summary: Get file upload status
      description: Gets file upload status by using file ID
      operationId: getFileStatus
      security:
        - authorization: []
      parameters:
        - $ref: "#/components/parameters/xSiteContent"
        - in: path
          name: fileId
          description: A 24-character system-generated file ID
          schema:
            type: string
          required: true
          example: 626c3c28e041b10009810b21
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/UploadFileStatusResponse"
                  - $ref: "#/components/schemas/UploadFileStatusNoItemResponse"
        "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:
  securitySchemes:
    api_key:
      type: apiKey
      name: x-api-key
      description: >-
        The `x-api-key` enables you to access the fabric API without
        `Authorization`. You must request fabric Inc to obtain this key.<br
        />Authorization` header is required if `x-api-key` is omitted.
      in: header
    authorization:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description:
        S2S access token (JWT) from fabric Identity service (during Login)
  schemas:
    BulkAttributeRequest:
      type: array
      items:
        type: object
        required:
          - type
          - name
          - action
        properties:
          action:
            type: string
            enum:
              - CREATE
              - UPDATE
              - DELETE
            example: UPDATE
            description: >-
              Action type. <br /> **Note**: <br /> 1) Attribute ID is required
              only for `UPDATE` and `DELETE` actions (not for CREATE). <br /> 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. <br /> **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 <br /> false: Attribute is
                  optional"
                type: boolean
              inheritable:
                description: >-
                  true: Parent attributes inherited to children items <br />
                  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) <br /> false: Follows existing
                  validation
                type: boolean
              unique:
                description: >-
                  true: Value is unique across all items or categories <br />
                  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
    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
    AttributeGroupRequest:
      type: object
      required:
        - transactional
      properties:
        transactional:
          description: >-
            true: All updates succeed or fail as a unit <br /> 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. <br /> **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"
    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 <br /> 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
    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 <br /> 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
    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"
    WorkflowAttributes:
      type: object
      properties: {}
    ImpactedAttributes:
      type: object
      properties: {}
    AttributeGroupTypeRequest:
      type: object
      properties:
        action:
          description: >-
            Action type. <br /> **Note**: <br /> 1) Attribute ID is required
            only for `UPDATE` and `DELETE` actions (not for CREATE). <br /> 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
    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 <br /> 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 <br /> 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
    CreateCategoryRequest:
      type: object
      required:
        - name
      properties:
        name:
          description: Category name
          type: string
          example: notes
        active:
          description: >-
            true: Category is Active <br /> false: Category is Inactive <br />
            **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). <br /> **Note**: <br /> 1)
            Applicable only for children categories. <br /> 2) Order 0 means
            this child category appears at the beginning of other sibling
            categories. <br /> 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.
    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"
    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 <br /> false: Category is Inactive <br />
            **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"
    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 <br /> false: Category is Inactive <br />
            **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)
    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"
    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
    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
    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"
    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"
    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 <br /> false: Attribute is
                  optional"
    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`
    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: {}
    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"
    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`
    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`
    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 <br /> 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 <br /> false: Category is Inactive <br />
            **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)
    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: {}
    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 <br /> false: Attribute is
                  optional"
                type: boolean
                example: true
    ModifyCategoryRequest:
      type: object
      required:
        - name
      properties:
        name:
          description: Category name
          type: string
          example: Furniture
        active:
          description: >-
            true: Category is Active <br /> false: Category is Inactive <br />
            **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
    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: {}
    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
    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
    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
    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
    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
    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
    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.
    ItemProductsResponse:
      type: object
      properties:
        totalSize:
          type: number
          example: 100
          description: Total number of records (items)
        pageSize:
          type: number
          example: 10
          description: Number of records (items) in a page
        pages:
          type: number
          example: 10
          description: Number of pages for the given `pageSize`
        products:
          type: array
          items:
            $ref: "#/components/schemas/Product"
    ItemProductsV2Response:
      type: object
      properties:
        totalSize:
          type: number
          example: 100
          description: Total number of records (items)
        pageSize:
          type: number
          example: 10
          description: Number of records (items) in a page
        pages:
          type: number
          example: 10
          description: Number of pages for the given `pageSize`
        products:
          type: array
          items:
            $ref: "#/components/schemas/ProductV2"
    Product:
      type: object
      properties:
        sku:
          type: string
          example: MOBO-X570
          description: Stock Keeping Unit (SKU) of item
        itemId:
          type: number
          example: 4
          description: Item ID
        children:
          type: array
          items:
            $ref: "#/components/schemas/ProductChild"
        type:
          description: Item type - ITEM or BUNDLE
          type: string
          example: ITEM
          default: ITEM
        status:
          type: boolean
          example: true
          description: "true: Item is Active <br /> false: Item is Inactive"
        categories:
          type: array
          items:
            $ref: "#/components/schemas/ProductCategory"
        attributes:
          type: array
          items:
            $ref: "#/components/schemas/ProductAttribute"
        createdOn:
          type: string
          example: "2022-03-07T22:50:10.668Z"
          description: Time of item creation (UTC format)
        modifiedOn:
          type: string
          example: "2022-03-07T22:52:01.720Z"
          description: Time when item was last updated (UTC format)
    ProductV2:
      type: object
      properties:
        sku:
          type: string
          example: MOBO-X570
          description: Stock Keeping Unit (SKU) of item
        itemId:
          type: number
          example: 4
          description: Item ID
        childrenSize:
          description: Number of children or variants of the item
          type: number
          default: 0
        type:
          description: Item type - ITEM or BUNDLE
          type: string
          example: ITEM
          default: ITEM
        status:
          type: boolean
          example: true
          description: "true: Item is Active <br /> false: Item is Inactive"
        categories:
          type: array
          items:
            $ref: "#/components/schemas/ProductCategory"
        attributes:
          type: array
          items:
            $ref: "#/components/schemas/ProductAttribute"
    ProductChild:
      type: object
      properties:
        sku:
          type: string
          description: Stock Keeping Unit (SKU) of item
        attributes:
          type: array
          items:
            $ref: "#/components/schemas/ProductAttribute"
    ProductAttribute:
      allOf:
        - $ref: "#/components/schemas/Attribute"
        - type: object
          properties:
            description:
              type: string
              description: Explains purpose of the selected attribute
            mapping:
              type: string
              example: description
              description: Attribute mapping (as received)
    ProductAttributePage:
      type: object
      description: Attribute page object
      properties:
        totalSize:
          type: number
          description: Total number of records (item attributes)
          example: 100
        pageSize:
          type: number
          description: Number of records (item attributes) in a page
          example: 10
        pages:
          type: number
          description: Number of pages for the given `pageSize`
          example: 10
        attributes:
          type: array
          description: Attributes details
          items:
            $ref: "#/components/schemas/ProductAttribute"
    ProductCategory:
      type: object
      properties:
        id:
          type: string
          example: 621c121bff2e4507c199b7cb
          description: A 24-character system-generated category ID
        name:
          type: string
          example: electronics
          description: Category name
        nodeId:
          description: Numeric category ID
          type: number
          example: 30
        breadcrumbs:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                example: 621c10f3ff2e4507c199b66b
                description: A 24-character system-generated breadcrumb ID
              nodeId:
                description: Numeric category ID
                type: number
                example: 31
              name:
                type: string
                example: PRIMARY
                description: Category name
              attributes:
                type: array
                items:
                  $ref: "#/components/schemas/ProductAttribute"
    BundleProductsResponse:
      type: object
      properties:
        totalSize:
          type: number
          example: 100
          description: Total number of records
        pageSize:
          type: number
          example: 10
          description: Number of records in a page
        pages:
          type: number
          example: 10
          description: Number of pages for the given `pageSize`
        products:
          type: array
          items:
            $ref: "#/components/schemas/Bundle"
    Bundle:
      type: object
      properties:
        sku:
          type: string
          example: BUNDLE-01
          description: Stock Keeping Unit (SKU), a unique identifier of bundle
        itemId:
          type: number
          example: 4
          description: Item ID
        type:
          description: Item type - Bundle (default) or Item
          type: string
          example: BUNDLE
        status:
          type: boolean
          example: true
          description: "true: Bundle is active <br /> false: Bundle is inactive"
        bundleItems:
          type: array
          items:
            $ref: "#/components/schemas/GetBundleItems"
        categories:
          type: array
          items:
            $ref: "#/components/schemas/ProductCategory"
        attributes:
          type: array
          items:
            $ref: "#/components/schemas/ProductAttribute"
        createdOn:
          type: string
          example: "2022-03-07T22:50:10.668Z"
          description: Time of bundle creation (UTC format)
        modifiedOn:
          type: string
          example: "2022-03-07T22:52:01.720Z"
          description: Time when bundle was last updated (UTC format)
    GetBundleItems:
      type: object
      properties:
        sku:
          type: string
          example: MOBO-1023
          description: Stock Keeping Unit (SKU) of item
        itemId:
          type: number
          example: 1
          description: Item ID
        attributes:
          type: array
          items:
            $ref: "#/components/schemas/ProductAttribute"
        quantity:
          description: Item quantity
          type: number
          example: 6
        children:
          type: array
          items:
            $ref: "#/components/schemas/BundleChild"
    BundleChild:
      type: object
      properties:
        sku:
          type: string
          description: Stock Keeping Unit (SKU) of item
        itemId:
          type: number
          description: Item ID
        attributes:
          type: array
          items:
            $ref: "#/components/schemas/ProductAttribute"
    NoProductsResponse:
      type: object
      properties:
        pageSize:
          type: number
          example: 0
          description: Number of records in a page
        totalSize:
          type: number
          example: 0
          description: Total number of records
        pages:
          type: number
          example: 0
          description: Number of pages for the given `pageSize`
        products:
          description: Item details
          type: array
          items:
            type: string
          example: []
    ItemProductSearchResponse:
      type: object
      properties:
        totalSize:
          type: number
          example: 100
          description: Total number of records
        pageSize:
          type: number
          example: 10
          description: Number of records per page
        pages:
          type: number
          example: 10
          description: Number of pages for the given pageSize
        products:
          type: array
          items:
            $ref: "#/components/schemas/ProductSearch"
    SearchResponse:
      type: object
      properties:
        sku:
          type: string
          example: MSI-Z490
          description: Stock Keeping Unit (SKU) of item
        itemId:
          type: number
          example: 2
          description: Item ID
        type:
          description: Item type - either ITEM or BUNDLE
          type: string
          example: ITEM
          default: ITEM
        categories:
          type: array
          items:
            $ref: "#/components/schemas/ProductCategory"
        attributes:
          type: array
          items:
            $ref: "#/components/schemas/ProductAttribute"
        dependents:
          description: Children SKUs
          type: array
          items:
            type: string
            example:
              - Child1
              - Child2
        createdOn:
          type: string
          example: "2021-05-28T16:36:50.055Z"
          description: Time when the item was added to Product Catalog (UTC format)
        modifiedOn:
          description: Time when item was last updated (UTC format)
          type: string
          example: "2021-05-28T16:36:50.055Z"
    ProductSearch:
      allOf:
        - $ref: "#/components/schemas/SearchResponse"
        - type: object
          properties:
            children:
              type: array
              items:
                $ref: "#/components/schemas/ProductChild"
    BundleSearch:
      allOf:
        - $ref: "#/components/schemas/SearchResponse"
        - type: object
          properties:
            bundleItems:
              type: array
              items:
                $ref: "#/components/schemas/ProductChild"
    BundleProductSearchResponse:
      type: object
      properties:
        totalSize:
          type: number
          example: 100
          description: Total number of records (bundle)
        pageSize:
          type: number
          example: 10
          description: Number of records (bundle) in a page
        pages:
          type: number
          example: 10
          description: Number of pages for the given `pageSize`
        products:
          type: array
          items:
            allOf:
              - $ref: "#/components/schemas/SearchResponse"
              - $ref: "#/components/schemas/BundleSearch"
    ProductCreate:
      type: array
      maxItems: 50
      items:
        properties:
          sku:
            description: Stock Keeping Unit (SKU) of item
            type: string
            example: sku_abc
          type:
            description: Item type
            type: string
            enum:
              - ITEM
              - BUNDLE
            example: ITEM
          nodeName:
            description: >-
              Category name (along with parent category names) for which item is
              being created.
            type: string
            example: PRIMARY->electronics
          parentSku:
            description: >-
              Stock Keeping Unit (SKU) of the parent item. <br />Set the value
              as `detach` or `null` to disassociate the item from parent item.
            type: string
            nullable: true
            example: sku123
          attributeValues:
            description: Attribute details
            type: array
            items:
              anyOf:
                - $ref: "#/components/schemas/AttributeValue"
                - $ref: "#/components/schemas/AttributeValueFrenchLocale"
          inheritedAttributes:
            description: >-
              Category item attributes to be inherited from parent item to
              children items
            $ref: "#/components/schemas/InheritItemAttributesInsert"
          bundleItems:
            description:
              Items to be added to a bundle. Includes SKU and item quantity.
            type: array
            items:
              $ref: "#/components/schemas/BundleItems"
        required:
          - sku
          - type
          - nodeName
    BundleItems:
      type: object
      required:
        - sku
        - quantity
      properties:
        sku:
          description:
            Stock Keeping Unit (SKU) of item that must be added to bundle
          type: string
          example: sku123
        quantity:
          description: Item quantity to be added to bundle
          type: number
          example: 6
    ProductUpdate:
      type: object
      properties:
        skus:
          description: Stock Keeping Units (SKUs)
          maxItems: 50
          type: array
          items:
            type: string
          example:
            - sku12
            - sku13
        type:
          description: Item type - Bundle or Item
          type: string
          example: ITEM
        action:
          description: Action type
          type: string
          example: UPDATE
        parentSku:
          description: >-
            “Stock Keeping Unit (SKU) of the parent item. <br /> Set the value
            as `detach` or `null` to disassociate the item from parent item.”
          type: string
          nullable: true
          example: sku234
        attributeValues:
          type: array
          items:
            anyOf:
              - $ref: "#/components/schemas/AttributeValue"
              - $ref: "#/components/schemas/AttributeValueFrenchLocale"
        inheritedAttributes:
          description: >-
            Category item attributes to inherit from parent item to children
            items
          $ref: "#/components/schemas/InheritItemAttributesUpdate"
    BundleUpdateRequest:
      type: object
      properties:
        action:
          type: string
          enum:
            - UPDATE
          example: UPDATE
          description: Action type
        bundles:
          type: array
          items:
            type: object
            required:
              - action
              - bundleSku
              - itemSku
            properties:
              action:
                type: string
                enum:
                  - SET
                  - UNSET
                example: SET
                description: Action type
              bundleSku:
                type: string
                example: iPhoneBundle
                description: Stock Keeping Unit (SKU) of bundle
              itemSku:
                type: string
                example: iPhone12
                description: "Stock Keeping Unit (SKU) of item "
              quantity:
                type: number
                example: 1
                description: Item quantity
    BundleUpdateResponse:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            example: 625367673ab7402268d8cccf
            description:
              A 24-character system-generated document ID (internal only)
          itemId:
            type: string
            example: 624d94fb27c894222534b260
            description: A 24-character system-generated item ID
          bundleId:
            type: string
            example: 624d939227c894222534b247
            description: A 24-character system-generated bundle ID
          quantity:
            type: number
            example: 1
            description: Bundle quantity
          createdOn:
            type: string
            example: "2022-04-08T23:25:27.753Z"
            description: Time of bundle creation (UTC format)
          modifiedOn:
            type: string
            example: "2022-04-08T23:25:27.753Z"
            description: Time when bundle was last updated (UTC format)
    ProductResponse:
      type: object
      properties:
        success:
          type: array
          items:
            type: object
            properties:
              sku:
                type: string
                example: sku1
                description: Stock Keeping Unit (SKU) of item
              itemId:
                type: string
                example: 611686da50fb7e0c5df78c2e
                description: Item ID
              itemIdSeq:
                type: number
                example: 12
                description: Item ID, which increments sequentially
              message:
                type: string
                example: SKU created successfully.
                description: Success message
              errorAttributes:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      example: Inactive
                      description: Error reason
                    message:
                      type: string
                      example: Attribute value is invalid.
                      description: Human-readable error message
              errorBundles:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Error reason
                    message:
                      type: string
                      description: Human-readable error message
        failed:
          type: array
          items:
            type: object
            properties:
              sku:
                type: string
                example: sku1
                description:
                  Stock Keeping Unit (SKU), a unique identifier of item
              message:
                type: string
                example: Failed because of validation
                description: Failure message
        itemIds:
          description: Item IDs
          example:
            - 611686da50fb7e0c5df78c2e
            - 711686da50fb7e0c5df78c22
          type: array
          items:
            type: string
    AttributeValue:
      type: object
      properties:
        name:
          type: string
          example: Mobile
          description: Attribute name
        value:
          type: string
          example: AMD X570 mobo
          description: Attribute value
    AttributeValueFrenchLocale:
      type: object
      properties:
        name:
          type: string
          example: Mobile-French
          description: Attribute name in French
        value:
          type: string
          example: Le téléphone portatif AMD X570
          description: Attribute value in French
    ProductModifyError:
      type: object
      properties:
        code:
          type: string
          enum:
            - STATUS_ERROR
          description: Error code for backend mapping
        message:
          type: array
          description: Error details for invalid items
          items:
            type: object
            properties:
              index:
                type: number
                description: Index of the item update request
              item:
                $ref: "#/components/schemas/ProductResponse"
    ItemExport:
      type: object
      required:
        - type
      properties:
        include:
          type: object
          required:
            - children
          properties:
            children:
              type: boolean
              description: "true: Includes children; false: Excludes children"
              default: false
              example: false
            type:
              type: string
              enum:
                - ITEM
                - BUNDLE
              default: ITEM
              example: ITEM
              description: Item type
            ids:
              type: array
              description: Item IDs
              minItems: 1
              items:
                type: string
              example:
                - 611686da50fb7e0c5df78c2e
                - 711686da50fb7e0c5df78c22
    ItemExportResponse:
      type: object
      properties:
        code:
          type: number
          example: 200
          description: API response code
        message:
          type: string
          example: >-
            Your export has been queued, you will receive an email once the
            export is ready.
          description: Message corresponding to `code`
        trackingID:
          type: string
          example: 62daee2addfa4f000932cfc9
          description: Tracking ID
    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). <br /> **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`. <br /> **Note**: Most attributes do not have a
              mapping, in which case this will be null. <br /> **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. <br
              /> **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 <br /> false: Attribute is
                  optional"
                type: boolean
              inheritable:
                description: >-
                  true: Parent attributes inherited to children items <br />
                  false: Parent attributes not inherited to children items
                type: boolean
              inverse:
                description: >-
                  true: Inverts existing validation (example - requires that the
                  validation does not pass) <br /> false: Follows existing
                  validation
                type: boolean
              unique:
                description: >-
                  true: Specified value is unique across all items or nodes <br
                  /> 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
    AttributeMappingSearch:
      type: object
      required:
        - page
        - size
      properties:
        include:
          type: object
          properties:
            attribute:
              type: boolean
              description: >-
                true: include the `attribute` in the response; <br /> false:
                exclude `attribute` in the response
        sort:
          $ref: "#/components/schemas/AttributeMappingSort"
        match:
          $ref: "#/components/schemas/AttributeMappingMatch"
        page:
          description: >-
            Page number to be retrieved. <br /> **Note**: <br /> 1) Applicable
            only in a paginated response. <br /> 2) Always paired with `size`
          type: number
          example: 0
        size:
          description: >-
            Number of records per page <br /> **Note**: <br /> 1) Applicable
            only in a paginated response. <br /> 2) Always paired with `page`
          type: number
          example: 10
    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
    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
    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"
    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. <br /> **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; <br /> 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
    AttributeMappingModifyError:
      type: object
      properties:
        code:
          description: Error code
          type: string
          enum:
            - STATUS_ERROR
        message:
          type: array
          description: Errors for the invalid attributes.
          items:
            type: object
            properties:
              index:
                type: number
                description: >-
                  Index of the 'attribute mapping modify request' to which this
                  error corresponds.
              mapping:
                $ref: "#/components/schemas/AttributeMappingResponse"
    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 <br /> false: Mapping is optional"
                type: boolean
    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 <br /> false: attribute cannot be
            localized
          type: boolean
        mapping:
          description: >-
            Attribute mapping. <br /> **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.
            <br /> **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 <br />
            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) <br /> false: Follows existing validation
          type: boolean
          example: false
        unique:
          description: >-
            true: Value is unique across all items or categories <br /> 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
    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
    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
    GetS3URLRequest:
      type: object
      properties:
        nodeId:
          description: Category ID associated with the file
          type: string
          example: 611eef8b81f92b882d4f9741
        fileName:
          description: File name to be uploaded in the generated URL
          type: string
          example: men-shoes.csv
    GetS3URLRequestUsingOnlyFileName:
      type: object
      properties:
        fileName:
          description: File name to be uploaded in the generated URL
          type: string
          example: men-shoes.csv
    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
    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
    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"
    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"
    findCategoryRequest:
      type: object
      properties:
        include:
          type: object
          description: Inclusion criteria
          properties:
            children:
              description: >-
                true: Include children in the response <br /> false: Exclude
                children from response
              example: false
              type: boolean
            itemAttributes:
              description: >-
                true: Include item attributes in the response <br /> false:
                Exclude item attributes from the response
              example: false
              type: boolean
            nodeAttributes:
              description: >-
                true: Include category attributes in the response <br /> false:
                Exclude category attributes from the response
              example: false
              type: boolean
            filters:
              description: >-
                true: Include attributes in the response <br /> false: Exclude
                attributes from the response
              example: false
              type: boolean
            sources:
              description: >-
                true: Include sources in the response <br /> false: Exclude
                sources from the response
              example: false
              type: boolean
            statuses:
              description: >-
                true: Include statuses in the response <br /> 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"
    GetS3URLResponse:
      type: object
      properties:
        fileId:
          description: A 24-character system-generated file ID
          type: string
          example: 626c3c28e041b10009810b21
        url:
          description: S3 bucket URL, to upload the template file.
          type: string
          example: >-
            https://demo-dev02-bulk-import-pim.s3.amazonaws.com/item/609ac75051f11a0007cf38b3/dev02/1651260453554-men-shoes.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA26KLJWUACLU2AF6F%2F20220429%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220429T192736Z&X-Amz-Expires=300&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDsaCXVzLWVhc3QtMSJGMEQCIGW476Ala9Go95rgQ3gVPwSvCbcZPrm4WgLs186q0R6GAiBqqVo4yuAkTKZTMl2qBF8hJOySqicG42ObKpyPtBmGWir4Awj0%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAIaDDc1MjMxNDA3MDI3MiIMSeKQqQmLFWlfgsfVKswDvUDycKtqRnlcHaiuM56ZPrzPio9ylmxLaqjgUDCdF73ZqtkL41jqTf0kI%2FOnkXegoOks5dRbnprCbDwJxQFiwyOgQ9w8VC8ZCVzG6s6V7vnQDMQZ2mAVDk30KjL9BXShFNqBqY6r6COCJtyi5kMHpUjA8HM6Q7N19XOg7kH1VVnm4UZpWU%2F9blF8EMjiqIvWfjmRdv%2BnmBdx3RztZ0jEuJ9g4YeEmOZUUCaZoNLl78nE5vPoTQLNW%2F5YzKMO8ECTJ3Vr8nY%2BCVl5bTrAMK4TdCK%2BVaZjEpw7DQrSKmaR1JhQlYxD%2F%2F3WxPc%2FECeYD7eTLmWOYXh3LELhOYyy49%2Bx0MhdUaYQTlSsuU4NKnWcYcyeIh5J7%2Bef4Q9PgkBZqdE7gCN5m%2BqmfDLzu4W1SjR47MbdXYIiShDdvvM2DDrmwfMuTMS14fEWiMP4zhuehc12gA%2BGTwmuHjqYQCuRswGncP9574CXT1mzu%2BcW5bqMNKg80paslu2ipNJL4vScEjV%2FFYcYGCoXskYgBQr5IZJ4xdtv%2BYGrEMiCbob8UZ1oT5QtJSyLVqOqGt%2FvomDHdHqMved8fQbyddZo28DC%2BwB1DEI3XsLEp3rZFCeLzTCt3bCTBjqmAe%2F4uuvRSexVKYd%2F4XCVdbKrZG%2Fl7JoTsJv%2FI4k8nqezmqPAgpErsqCyvqyUXTx8jgrxi70EuiH6n1F5QEhMfge4C41jFKqYsY%2FxWEkwZw89koTrbzGs2z64i4eCzDU5u3OItYGVaEctdbHnpx%2FA3xnOgdPoGP%2FDQPVgCdsMWvjCkRDbNcBoSLXuXSRBgbOXy2RgkHY5YQ%2Fxys257mGLb3FZhjqvScs%3D&X-Amz-Signature=24c29de90587424ffdb21a7d970ef08c0a68ebaccd562f95b766dd01faad9d56&X-Amz-SignedHeaders=host%3Bx-amz-meta-account%3Bx-amz-meta-channel%3Bx-amz-meta-fileid%3Bx-amz-meta-filename%3Bx-amz-meta-nodeid%3Bx-amz-meta-prefix%3Bx-amz-meta-stage&x-amz-meta-account=609ac75051f11a0007cf38b3&x-amz-meta-channel=12&x-amz-meta-fileid=626c3c28e041b10009810b21&x-amz-meta-filename=men-shoes-bundle-local.csv&x-amz-meta-nodeid=611eef8b81f92b882d4f9741&x-amz-meta-prefix=item&x-amz-meta-stage=dev02
        key:
          description: S3 key of the file
          type: string
          example: item/609ac75051f11a0007cf38b3/dev02/1651260453554-men-shoes.csv
    GetS3URLItemAttributeRequest:
      type: object
      properties:
        fileName:
          description: File name to be uploaded in the generated URL
          type: string
          example: item-attributes.csv
    GetS3URLItemAttributeResponse:
      type: object
      properties:
        fileId:
          description: A 24-character system-generated file ID
          type: string
          example: 626c415430548500093811f1
        url:
          description: S3 bucket url, to upload the template file.
          type: string
          example: >-
            https://demo-dev02-bulk-import-pim.s3.amazonaws.com/attribute/60ac19ef893ab1000864b771/dev02/1651261780352-item-attributes.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA26KLJWUAC474VT4E%2F20220429%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220429T194940Z&X-Amz-Expires=300&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDwaCXVzLWVhc3QtMSJHMEUCIQCesp8JqH%2F%2F3QZP%2BcybG392bRrSI2d%2BHbBfYknEgqDuXAIgStf8iZndc9fOzokQimbgivAGx1hum81ZVqKbxFuigaMqsAII9f%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARACGgw3NTIzMTQwNzAyNzIiDE7VWWdAw%2BMtShgibSqEAtJrxQ%2B0h7Bu9DE3FcCGCi4fyAoLxtkAFRUWQ28ciZDvS5PC%2BU4%2FOvjuXSttg%2Bz%2F8E3Ff0QqI8%2BWOOG02O4DQSpUEc9aDBqXFVB2nezNz6CCyoIhlxRhHJXrjboktovlKAHnRpB0KRgHo7B05v2%2BM9z49w%2FzFrB%2FrW5XF0bFMyYGsm3aK0%2B4C8kS9oJ0dDxaKYxe%2BaKrn0XmcBLBduu3fL2h6WRhv29%2FDQxmwDO9O%2FNXfYAxnB2iQYAo2ZuL8ujcyDQPp2zNLFYiwQpQYE4DhVCT2CDw1SJU7xTi3ZHYDmt7xfe2vgwKxPolZumOIVIhBa7%2Fj7tma%2FbuX%2BAjKHUFnBfMnE5oMPuBsZMGOpoBWHVtEmbAx%2FsCaUu9jpSJoHgNkIDwxVGvV2XPPoNJIhLg9aCC2cMnAkRbbLOplmV4fnWmsY15Hdjd6CIhX5fCKGv2gLJCs6XpanNOm89KI8Ro9q4Gh5MvytJlSIEXuYgBI%2B2%2FWF5iNF0%2BUZX7cNtZjLK7yXHytJP94f0vF%2BqbAIpG%2FT9yyn1Z9KKWyMeIpCYsAsEY%2F1seiB6slA%3D%3D&X-Amz-Signature=b029ce0c5158f33fc4867d6a40f59d133d15d34fb300615e6c74b7414f8fe668&X-Amz-SignedHeaders=host%3Bx-amz-meta-account%3Bx-amz-meta-channel%3Bx-amz-meta-fileid%3Bx-amz-meta-filename%3Bx-amz-meta-prefix%3Bx-amz-meta-stage%3Bx-amz-meta-user&x-amz-meta-account=60ac19ef893ab1000864b771&x-amz-meta-channel=&x-amz-meta-fileid=626c415430548500093811f1&x-amz-meta-filename=item-attributes.csv&x-amz-meta-prefix=attribute&x-amz-meta-stage=dev02
        key:
          description: S3 key of the file
          type: string
          example: >-
            attribute/60ac19ef893ab1000864b771/dev02/1651261780352-item-attributes.csv
    GetS3URLBundleRequest:
      type: object
      properties:
        nodeId:
          description: Category ID associated with the file
          type: string
          example: 626a31a2d877f5e49efad330
        fileName:
          description: File name to be uploaded in the generated URL
          type: string
          example: men-shoes-bundle-local.csv
    GetS3URLBundleResponse:
      type: object
      properties:
        fileId:
          description: A 24-character system-generated file ID
          type: string
          example: 626c3c28e041b10009810b21
        url:
          description: S3 bucket URL, to upload the template file
          type: string
          example: >-
            https://demo-dev02-bulk-import-pim.s3.amazonaws.com/item-bundles/609ac75051f11a0007cf38b3/dev02/1651266490891-men-shoes-bundle-local.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA26KLJWUAMB3F4HM7%2F20220429%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220429T210813Z&X-Amz-Expires=300&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDsaCXVzLWVhc3QtMSJGMEQCIGW476Ala9Go95rgQ3gVPwSvCbcZPrm4WgLs186q0R6GAiBqqVo4yuAkTKZTMl2qBF8hJOySqicG42ObKpyPtBmGWir4Awj0%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAIaDDc1MjMxNDA3MDI3MiIMSeKQqQmLFWlfgsfVKswDvUDycKtqRnlcHaiuM56ZPrzPio9ylmxLaqjgUDCdF73ZqtkL41jqTf0kI%2FOnkXegoOks5dRbnprCbDwJxQFiwyOgQ9w8VC8ZCVzG6s6V7vnQDMQZ2mAVDk30KjL9BXShFNqBqY6r6COCJtyi5kMHpUjA8HM6Q7N19XOg7kH1VVnm4UZpWU%2F9blF8EMjiqIvWfjmRdv%2BnmBdx3RztZ0jEuJ9g4YeEmOZUUCaZoNLl78nE5vPoTQLNW%2F5YzKMO8ECTJ3Vr8nY%2BCVl5bTrAMK4TdCK%2BVaZjEpw7DQrSKmaR1JhQlYxD%2F%2F3WxPc%2FECeYD7eTLmWOYXh3LELhOYyy49%2Bx0MhdUaYQTlSsuU4NKnWcYcyeIh5J7%2Bef4Q9PgkBZqdE7gCN5m%2BqmfDLzu4W1SjR47MbdXYIiShDdvvM2DDrmwfMuTMS14fEWiMP4zhuehc12gA%2BGTwmuHjqYQCuRswGncP9574CXT1mzu%2BcW5bqMNKg80paslu2ipNJL4vScEjV%2FFYcYGCoXskYgBQr5IZJ4xdtv%2BYGrEMiCbob8UZ1oT5QtJSyLVqOqGt%2FvomDHdHqMved8fQbyddZo28DC%2BwB1DEI3XsLEp3rZFCeLzTCt3bCTBjqmAe%2F4uuvRSexVKYd%2F4XCVdbKrZG%2Fl7JoTsJv%2FI4k8nqezmqPAgpErsqCyvqyUXTx8jgrxi70EuiH6n1F5QEhMfge4C41jFKqYsY%2FxWEkwZw89koTrbzGs2z64i4eCzDU5u3OItYGVaEctdbHnpx%2FA3xnOgdPoGP%2FDQPVgCdsMWvjCkRDbNcBoSLXuXSRBgbOXy2RgkHY5YQ%2Fxys257mGLb3FZhjqvScs%3D&X-Amz-Signature=24c29de90587424ffdb21a7d970ef08c0a68ebaccd562f95b766dd01faad9d56&X-Amz-SignedHeaders=host%3Bx-amz-meta-account%3Bx-amz-meta-channel%3Bx-amz-meta-fileid%3Bx-amz-meta-filename%3Bx-amz-meta-nodeid%3Bx-amz-meta-prefix%3Bx-amz-meta-stage&x-amz-meta-account=609ac75051f11a0007cf38b3&x-amz-meta-channel=12&x-amz-meta-fileid=626c3c28e041b10009810b21&x-amz-meta-filename=men-shoes-bundle-local.csv&x-amz-meta-nodeid=626a31a2d877f5e49efad330&x-amz-meta-prefix=item&x-amz-meta-stage=dev02
        key:
          description: S3 key of the file
          type: string
          example: >-
            item-bundles/609ac75051f11a0007cf38b3/dev02/1651266490891-men-shoes-bundle-local.csv
    FileSearchRequest:
      type: object
      properties:
        page:
          description: >-
            Page number to be retrieved. <br /> **Note**: <br /> 1) Applicable
            only in a paginated response. <br /> 2) Always paired with `size`
          type: number
          example: 1
        size:
          description: >-
            Number of records (attribute groups) per page <br /> **Note**: <br
            /> 1) Applicable only in a paginated response. <br /> 2) Always
            paired with `page`
          example: 10
    FilePaginationResponse:
      type: object
      properties:
        totalSize:
          description: Total number of records
          type: number
          example: 100
        pageSize:
          description: Number of records (bundle) in a page
          type: number
          example: 10
        pages:
          description: Number of pages for the given `pageSize`
          type: number
          example: 10
        files:
          description: Files and their details
          type: array
          items:
            $ref: "#/components/schemas/FileResponse"
    UploadFileStatusResponse:
      type: object
      properties:
        createdOn:
          type: string
          description: Time of file upload (UTC format)
          example: "2021-09-14T22:10:30.618Z"
        name:
          type: string
          description: Name of CSV file
          example: Duplicate+New+Dup.csv
        csvLink:
          type: string
          description: URL to download uploaded CSV file.
          example: >-
            https://demo-dev02-bulk-import-pim.s3.amazonaws.com/item-bundles/609ac75051f11a0007cf38b3/dev02/1651266490891-men-shoes-bundle-local.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA26KLJWUAMB3F4HM7%2F20220429%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220429T210813Z&X-Amz-Expires=300&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDsaCXVzLWVhc3QtMSJGMEQCIGW476Ala9Go95rgQ3gVPwSvCbcZPrm4WgLs186q0R6GAiBqqVo4yuAkTKZTMl2qBF8hJOySqicG42ObKpyPtBmGWir4Awj0%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAIaDDc1MjMxNDA3MDI3MiIMSeKQqQmLFWlfgsfVKswDvUDycKtqRnlcHaiuM56ZPrzPio9ylmxLaqjgUDCdF73ZqtkL41jqTf0kI%2FOnkXegoOks5dRbnprCbDwJxQFiwyOgQ9w8VC8ZCVzG6s6V7vnQDMQZ2mAVDk30KjL9BXShFNqBqY6r6COCJtyi5kMHpUjA8HM6Q7N19XOg7kH1VVnm4UZpWU%2F9blF8EMjiqIvWfjmRdv%2BnmBdx3RztZ0jEuJ9g4YeEmOZUUCaZoNLl78nE5vPoTQLNW%2F5YzKMO8ECTJ3Vr8nY%2BCVl5bTrAMK4TdCK%2BVaZjEpw7DQrSKmaR1JhQlYxD%2F%2F3WxPc%2FECeYD7eTLmWOYXh3LELhOYyy49%2Bx0MhdUaYQTlSsuU4NKnWcYcyeIh5J7%2Bef4Q9PgkBZqdE7gCN5m%2BqmfDLzu4W1SjR47MbdXYIiShDdvvM2DDrmwfMuTMS14fEWiMP4zhuehc12gA%2BGTwmuHjqYQCuRswGncP9574CXT1mzu%2BcW5bqMNKg80paslu2ipNJL4vScEjV%2FFYcYGCoXskYgBQr5IZJ4xdtv%2BYGrEMiCbob8UZ1oT5QtJSyLVqOqGt%2FvomDHdHqMved8fQbyddZo28DC%2BwB1DEI3XsLEp3rZFCeLzTCt3bCTBjqmAe%2F4uuvRSexVKYd%2F4XCVdbKrZG%2Fl7JoTsJv%2FI4k8nqezmqPAgpErsqCyvqyUXTx8jgrxi70EuiH6n1F5QEhMfge4C41jFKqYsY%2FxWEkwZw89koTrbzGs2z64i4eCzDU5u3OItYGVaEctdbHnpx%2FA3xnOgdPoGP%2FDQPVgCdsMWvjCkRDbNcBoSLXuXSRBgbOXy2RgkHY5YQ%2Fxys257mGLb3FZhjqvScs%3D&X-Amz-Signature=24c29de90587424ffdb21a7d970ef08c0a68ebaccd562f95b766dd01faad9d56&X-Amz-SignedHeaders=host%3Bx-amz-meta-account%3Bx-amz-meta-channel%3Bx-amz-meta-fileid%3Bx-amz-meta-filename%3Bx-amz-meta-nodeid%3Bx-amz-meta-prefix%3Bx-amz-meta-stage&x-amz-meta-account=609ac75051f11a0007cf38b3&x-amz-meta-channel=12&x-amz-meta-fileid=626c3c28e041b10009810b21&x-amz-meta-filename=men-shoes-bundle-local.csv&x-amz-meta-nodeid=626a31a2d877f5e49efad330&x-amz-meta-prefix=item&x-amz-meta-stage=dev02
        errorCsv:
          type: string
          description: URL to download import error file.
          example: >-
            https://demo-dev02-bulk-import-pim.s3.amazonaws.com/item-bundles/609ac75051f11a0007cf38b3/dev02/1651266490891-error.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIA26KLJWUAMB3F4HM7%2F20220429%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220429T210813Z&X-Amz-Expires=300&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDsaCXVzLWVhc3QtMSJGMEQCIGW476Ala9Go95rgQ3gVPwSvCbcZPrm4WgLs186q0R6GAiBqqVo4yuAkTKZTMl2qBF8hJOySqicG42ObKpyPtBmGWir4Awj0%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAIaDDc1MjMxNDA3MDI3MiIMSeKQqQmLFWlfgsfVKswDvUDycKtqRnlcHaiuM56ZPrzPio9ylmxLaqjgUDCdF73ZqtkL41jqTf0kI%2FOnkXegoOks5dRbnprCbDwJxQFiwyOgQ9w8VC8ZCVzG6s6V7vnQDMQZ2mAVDk30KjL9BXShFNqBqY6r6COCJtyi5kMHpUjA8HM6Q7N19XOg7kH1VVnm4UZpWU%2F9blF8EMjiqIvWfjmRdv%2BnmBdx3RztZ0jEuJ9g4YeEmOZUUCaZoNLl78nE5vPoTQLNW%2F5YzKMO8ECTJ3Vr8nY%2BCVl5bTrAMK4TdCK%2BVaZjEpw7DQrSKmaR1JhQlYxD%2F%2F3WxPc%2FECeYD7eTLmWOYXh3LELhOYyy49%2Bx0MhdUaYQTlSsuU4NKnWcYcyeIh5J7%2Bef4Q9PgkBZqdE7gCN5m%2BqmfDLzu4W1SjR47MbdXYIiShDdvvM2DDrmwfMuTMS14fEWiMP4zhuehc12gA%2BGTwmuHjqYQCuRswGncP9574CXT1mzu%2BcW5bqMNKg80paslu2ipNJL4vScEjV%2FFYcYGCoXskYgBQr5IZJ4xdtv%2BYGrEMiCbob8UZ1oT5QtJSyLVqOqGt%2FvomDHdHqMved8fQbyddZo28DC%2BwB1DEI3XsLEp3rZFCeLzTCt3bCTBjqmAe%2F4uuvRSexVKYd%2F4XCVdbKrZG%2Fl7JoTsJv%2FI4k8nqezmqPAgpErsqCyvqyUXTx8jgrxi70EuiH6n1F5QEhMfge4C41jFKqYsY%2FxWEkwZw89koTrbzGs2z64i4eCzDU5u3OItYGVaEctdbHnpx%2FA3xnOgdPoGP%2FDQPVgCdsMWvjCkRDbNcBoSLXuXSRBgbOXy2RgkHY5YQ%2Fxys257mGLb3FZhjqvScs%3D&X-Amz-Signature=24c29de90587424ffdb21a7d970ef08c0a68ebaccd562f95b766dd01faad9d56&X-Amz-SignedHeaders=host%3Bx-amz-meta-account%3Bx-amz-meta-channel%3Bx-amz-meta-fileid%3Bx-amz-meta-filename%3Bx-amz-meta-nodeid%3Bx-amz-meta-prefix%3Bx-amz-meta-stage&x-amz-meta-account=609ac75051f11a0007cf38b3&x-amz-meta-channel=12&x-amz-meta-fileid=626c3c28e041b10009810b21&x-amz-meta-filename=men-shoes-bundle-local.csv&x-amz-meta-nodeid=626a31a2d877f5e49efad330&x-amz-meta-prefix=item&x-amz-meta-stage=dev02
        statuses:
          type: array
          description: Upload status
          items:
            oneOf:
              - $ref: "#/components/schemas/objectUploadFileStatus"
              - $ref: "#/components/schemas/objectUploadFileStatusNotFound"
    objectUploadFileStatus:
      type: object
      properties:
        code:
          description: Progress code
          type: string
          example: FILE_PROGRESS_COMPLETE
        description:
          description: Status description
          type: string
          example: Import successful
        name:
          description: Status name
          type: string
          example: file progress is complete
    objectUploadFileStatusNotFound:
      type: object
      properties:
        code:
          description: Status code
          type: string
          example: NOT_FOUND
        description:
          description: Description for status
          type: string
          example: status not found
        name:
          description: Status name
          type: string
          example: not found
    UploadFileStatusNoItemResponse:
      type: object
      properties:
        code:
          description: Status code
          type: string
          example: ITEM_NOT_FOUND
        description:
          description: Status description
          type: string
          example: item not found
        name:
          description: Status name
          type: string
          example: item not found
    InheritItemAttributesInsert:
      type: array
      items:
        type: object
        properties:
          name:
            type: string
            description: Name of the attribute that can be inherited
            example: color
          action:
            description: Action to set the inherited attribute
            example: SET
            type: string
            enum:
              - SET
        required:
          - name
          - action
        minItems: 1
    InheritItemAttributesUpdate:
      type: array
      items:
        type: object
        properties:
          name:
            type: string
            description: Name of the attribute that can be inherited
            example: color
          action:
            type: string
            description: Action to set or unset (remove) the inherited attribute
            example: SET
            enum:
              - SET
              - UNSET
        required:
          - name
          - action
        minItems: 1
    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
    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
    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 <br /> false: Attribute is
                  optional"
                example: false
    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
  parameters:
    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"}
    Page:
      in: query
      name: page
      description: >-
        Page number to be retrieved. <br /> **Note**: <br /> 1) Applicable only
        in a paginated response.  <br /> 2) Always paired with `size` <br /> 3)
        No default value set. Unless a value is specified, endpoint returns an
        error.
      example: 1
      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
    Size:
      in: query
      name: size
      description: >-
        Number of records per page <br /> **Note**: <br /> 1) Always paired with
        `page`. <br /> 2) Applicable only in a paginated response. <br /> 3) No
        default value set. Unless a value is specified, endpoint returns an
        error.
      example: 10
      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
