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.
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.
**Note**:
1) As a prerequisite category and attributes must be created beforehand.
2) To add an item variant, parentSku must be additionally specified.
3) An item is assigned to only one category but it can be fetched from Alternate categories.
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.
**Note**:
1) You can update up to 50 items or bundles.
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.
**Note**:
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.
2) You can add or update up to 50 items or bundles.
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.
**Note**:
1) Optional filter parameters can be passed in as query to narrow down the search results.
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).
**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.
**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.
**Note**:
1) Returns a paginated response.
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''.
**Note**:
1) Applicable only when `skus` and `itemIds` are omitted.
2) Returns paginated response.
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''.
**Note**:
1) Applicable only when `skus` and `itemIds` are omitted.
2) Returns paginated response.
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''.
**Note**:
1) Applicable only when `skus` or `itemIds` are omitted.
2) Returns paginated response.
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''.
**Note**:
1) Applicable only when `skus` and `itemIds` are omitted.
2) Returns paginated response.
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.
**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**:
1) `status` and `date` query parameters works only with pagination when `parentSku` is omitted. Separate responses are shown for bundle and product.
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).
**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.
**Note**:
1) Returns a paginated response.
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''.
**Note**:
1) Applicable only when `skus` and `itemIds` are omitted.
2) Returns paginated response.
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''.
**Note**:
1) Applicable only when `skus` and `itemIds` are omitted.
2) Returns paginated response.
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''.
**Note**:
1) Applicable only when `skus` or `itemIds` are omitted.
2) Returns paginated response.
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''.
**Note**:
1) Applicable only when `skus` and `itemIds` are omitted.
2) Returns paginated response.
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.
**Note**
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.
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.
**Note**: If omitted, all items are retrieved.
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.
**Note**: If omitted, all items are retrieved
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.
**Note**: 1) Always paired with `page`.
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.
**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
false: Includes children items'
schema:
type: boolean
example: false
- in: query
name: onlyChildren
description: 'true: Excludes parent items
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.
This endpoint gets all attributes of an item, by SKU or itemId.
**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.
**Note**: If omitted `itemId` becomes mandatory.'
schema:
type: string
example: MOBO-1024
- in: query
name: itemId
description: 'Item ID.
**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
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
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 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'
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'
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.
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
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)
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
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'
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
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)
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`
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)
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'
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'
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
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.
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'
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'
BundleSearch:
allOf:
- $ref: '#/components/schemas/SearchResponse'
- type: object
properties:
bundleItems:
type: array
items:
$ref: '#/components/schemas/ProductChild'
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'
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: []
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'
ProductChild:
type: object
properties:
sku:
type: string
description: Stock Keeping Unit (SKU) of item
attributes:
type: array
items:
$ref: '#/components/schemas/ProductAttribute'
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.
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'
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
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"}'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'This is the authorization token used to authenticate the request. You must pass the access token generated from the system app. For more information, see the [Making your first API request](/v3/api-reference/getting-started/getting-started-with-fabric-apis#procedure) section.
'