fabric Product API

**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.

OpenAPI Specification

fabric-com-product-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Cart Actions Endpoints Product API
  description: fabric's **Cart API** lets you add, update, and remove items from your Storefront cart, either as a guest user or as a logged-in user. It also provides functionality to merge carts when you switch from guest user to logged-in user, and apply coupons and other attributes (for example, gift wrapping) to the line items. Additionally, the API supports more advanced tasks such as using multiple carts within a B2B organization, sharing carts, and supporting a unified cart experience for multi-region and multi-brand businesses.<p>The Cart API provides high performance, scalability, multi-tenancy, and configurability to the end-to-end order processing actions that start from the item being added to the cart; through the pre-checkout stage that includes billing, shipping, and payment details; to the checkout stage where the order is processed and confirmed by fabric's Order Management System (OMS)
  contact:
    name: Cart Support
    email: support.cnc@fabric.inc
  license:
    name: fabric API License
    url: https://fabric.inc/api-license
  version: 3.0.0
servers:
- url: https://api.fabric.inc/v3
security:
- bearerAuth: []
tags:
- name: 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.'
paths:
  /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'
components:
  schemas:
    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)
    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
    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'
    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
    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
    AttributeValue:
      type: object
      properties:
        name:
          type: string
          example: Mobile
          description: Attribute name
        value:
          type: string
          example: AMD X570 mobo
          description: Attribute value
    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'
    ProductSearch:
      allOf:
      - $ref: '#/components/schemas/SearchResponse'
      - type: object
        properties:
          children:
            type: array
            items:
              $ref: '#/components/schemas/ProductChild'
    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
    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

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fabric-com/refs/heads/main/openapi/fabric-com-product-api-openapi.yml