> ## Documentation Index
> Fetch the complete documentation index at: https://developer.fabric.inc/llms.txt
> Use this file to discover all available pages before exploring further.

# Identifiers

## Identifiers in fabric APIs

This topic explains how fabric uses `sku`, `itemId`, `pricelineId`, and `inventoryId` as methods of identification with fabric APIs.
In general, fabric uses `sku` to specify a product because it's used across all domains. However, other identifiers are also used in certain API services.

<Note>fabric recommends avoiding `itemId` in V3 API implementations. However, `itemId` is still supported and used in V2.</Note>

The following table provides a list of all identifiers used across different services and the corresponding services:

| **Identifier** | **Description**                                                                                                                                                                                                                                                                                |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `sku`          | This identifier is used across all services, such as [Product Catalog](#product-catalog), [Offers](#offers), [Carts](#carts), [Orders](#orders), and [Inventory](#inventory).                                                                                                                  |
| `itemId`       | This identifier is used in [Offers](#offers), [Carts](#carts), [Orders](#orders), and [Inventory](#inventory). The [Product Catalog](#product-catalog) service doesn't use `itemId`. In [Carts](#carts), a user-generated `itemId` is used, separate from the `itemId` used in other services. |
| `priceListId`  | This identifier is used in [Offers](#offers) and [Carts](#carts).                                                                                                                                                                                                                              |
| `inventoryId`  | This identifier is used only in [Inventory](#inventory).                                                                                                                                                                                                                                       |

## Product catalog

### Stock keeping unit (SKU)

In Product Catalog, a `sku` is a unique identifier for a specific product. SKUs are created by the user when adding a product. SKUs are the preferred method for managing products. They allow you to monitor, publish, and unpublish products.

You can perform several key actions with SKUs to manage products and their lifecycles.

The following table shows examples of supported operations using `sku`:

| **Operations**                                                                                                                                      | **Descriptions**                                                                                             |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| [Retrieve a product](/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/get-product-by-sku)                                | View the details of a single product, including its attributes and variants.                                 |
| [Retrieve products](/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/get-product-by-sku)                                 | Get a paginated list of products, including items, bundles, or variants, with their attributes and variants. |
| [Update product attributes](/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/update-product-attributes-by-sku)           | Replace all existing product attributes.                                                                     |
| [Partially update product attributes](/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/update-product-attributes-by-sku) | Modify specific product attributes without affecting others.                                                 |
| [Delete product](/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/delete-product-by-sku)                                 | Remove a product from the catalog, with an option to delete associated variants.                             |
| [Publish product](/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/publish-product-by-sku)                               | Change a product’s status from "Draft" to "Published."                                                       |
| [Retrieve published product](/v3/product-catalog/api-reference/product-catalog/published-products-by-sku/get-published-product-by-sku)              | Get the details of a published product for display on your Storefront.                                       |

###

Similar to SKUs, the `itemId` is also used to identify products in Product Catalog.

However, unlike SKUs,`itemId` is automatically generated by the fabric system when a new product is created.

The following table shows examples of supported operations using `itemId`:

| **Operations**                                                                                                                     | **Descriptions**                                                                 |
| ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| [Retrieve a product using `itemId`](/v3/api-reference/product-catalog/product-operations-by-id/get-product-by-id)                  | View the details of a single product, including its attributes and variants.     |
| [Update product attributes using `itemId`](/v3/api-reference/product-catalog/product-operations-by-id/update-product)              | Replace all existing product attributes.                                         |
| [Delete product using `itemId`](/v3/api-reference/product-catalog/product-operations-by-sku/delete-product-by-sku)                 | Remove a product from the catalog, with an option to delete associated variants. |
| [Publish product using `sku`](/v3/api-reference/product-catalog/product-operations-by-sku/publish-product-by-sku)                  | Change a product’s status from "Draft" to "Published."                           |
| [Retrieve published product using `sku`](/v3/api-reference/product-catalog/published-products-by-sku/get-published-product-by-sku) | Get the details of a published product for display on your Storefront.           |

## Offers

### Stock keeping unit (SKU)

fabric's Offers APIs enable you to manage prices and create various types of discounts and promotions using `sku`.

The following are some examples of operations in Offers that are supported using `sku`:

| **Operations**                                                                                                             | **Descriptions**                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| [Set the price of an item](/v3/offers/api-reference/offers/prices/create-price)                                            | When creating a price for an item, `sku` or `itemId` can be used as an identifier in the request body.              |
| [Retrieve price of an item](/v3/offers/api-reference/offers/prices/get-price-by-sku)                                       | When retrieving the default price for an item, `sku` can be used as an identifier if `priceListId` isn't specified. |
| [Delete price of an item](/v3/offers/api-reference/offers/prices/delete-price-by-sku)                                      | When removing an items price, `sku` can be used as an identifier if `priceListId` isn't specified.                  |
| [Retrieve product and price details](/v3/offers/api-reference/offers/priced-products/get-product-and-price-details-by-sku) | When retrieving a products price, details, or any additional information, `sku` can be used as an identifier.       |

### Item ID

fabric's Offers APIs enable you to manage prices and create various types of discounts and promotions using `itemId`.

The following are some examples of operations in Offers that are supported using `itemId`:

| **Operations**                                                                                                                         | **Descriptions**                                                                                                       |
| -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| [Set the price of an item](/v3/offers/api-reference/offers/prices/create-price)                                                        | When creating a price for an item, `sku` or `itemId` can be used as an identifier in the request body.                 |
| [Retrieve price of an item](/v3/offers/api-reference/offers/prices/get-price-by-itemid)                                                | When retrieving the default price for an item, `itemId` can be used as an identifier if `priceListId` isn't specified. |
| [Delete price of an item](/v3/offers/api-reference/offers/prices/delete-price-by-itemid)                                               | When removing an items price, `itemId` can be used as an identifier if `priceListId` isn't specified.                  |
| [Retrieve product and price details](/v3/offers/api-reference/offers/priced-products/get-product-and-price-details-by-product-item-id) | When retrieving a products price, details, or any additional information, `itemId` can be used as an identifier.       |

### Price list ID

Offers API creates a `priceListId` when generating a price list, which includes generic information such as currency.
The `priceListId` is used to identify entities that specify how the items should be priced.

The following are some examples of how `priceListId` is utilized:

| **Operations**                                                                                                                    | **Descriptions**                                                                                                              |
| --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| [Create price list](/v3/offers/api-reference/offers/price-lists/create-price-list)                                                | When creating price list for an item, `priceListId` is automatically generated and is used to identify different price lists. |
| [Create promotion](/v3/offers/api-reference/offers/promotions/create-promotion)                                                   | If the `priceList` is eligible, a promotion is created for the item.                                                          |
| [Retrieve SKUs in a price list](/v3/offers/api-reference/offers/priced-products/get-product-and-price-details-by-product-item-id) | In a given price list, all associated `sku` and `productItemId` values are returned in the response body.                     |
| [Retrieve priced products](/v3/offers/api-reference/offers/priced-products/get-priced-products)                                   | If `priceListId` is sent in the request body, all items belonging to the price list are returned in the response body.        |

## Carts

### Stock keeping unit (SKU)

The Carts API allows you to add, update, and remove items, and those items can be identified by `sku`, from the storefront cart.

When creating a checkout, the system uses the `cartId` to identify all items using `sku` in the specific cart.

While `sku` isn't used in the path parameter for Carts endpoints, it's used in the request body. The following shows examples of operations where you use `sku` in the request body and view it in the response body:

| **Operations**                                                                        | **Descriptions**                                                                    |
| ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| [Create a line item](/v3/cart-and-checkout/api-reference/carts-v3/items/items)        | Adds a line item to the cart using `sku`.                                           |
| [Update a line item](/v3/cart-and-checkout/api-reference/carts-v3/items/update-items) | Updates a line item in the cart to a new item by referencing the `sku`.             |
| [Retrieve a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/get-cart)        | In the cart details, you can view the line items and their associated `sku` values. |

### Item ID

The Carts endpoint creates a cart-specific `itemId`, also referred to as `lineItemId`. You can use the `itemId` to add an item to the corresponding `cartId` and adjust prices.

The following are some examples of operations in Carts that are supported using `itemId`:

| **Operations**                                                                                                                          | **Descriptions**                                                             |
| --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [Add an item into the specified cart](/v3/cart-and-checkout/api-reference/carts-v3/items/items)                                         | Manually enter the `itemId`, which can then be used in other cart endpoints. |
| [Update an item in the specified cart](/v3/cart-and-checkout/api-reference/carts-v3/items/items)                                        | Update item details within a specific cart using `lineItemId`.               |
| [Adjust price of the item in the specified cart](/v3/cart-and-checkout/api-reference/carts-v3/item-adjustments/create-item-adjustments) | Adjust the prices of an item in the specified cart.                          |

### Price list ID

The Carts API uses `priceListId` to calculate prices and evaluate discounts for individual products and carts. This ensures accurate pricing when items are added to a cart.

The following are some examples of how `priceListId` is utilized:

| **Operations**                                                                                   | **Descriptions**                                                                                              |
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| [Add an item into the specific cart](/v3/cart-and-checkout/api-reference/carts-v3/items/items)   | When a line item is added to the cart, the respective `priceListId` is included to identify the cart's price. |
| [Update an item in the specified cart](/v3/cart-and-checkout/api-reference/carts-v3/items/items) | When a line item is updated, the price is also adjusted.                                                      |

## Orders

### Stock keeping unit (SKU)

When creating or modifying an order, you can add one or more `sku` by selecting a network and channel, a network and channel, which enables browsing for all the available `sku`.
Only `sku` with an "Available" stock status and availability greater than or equal to one can be added to an order.
You can select more than one `sku` at once and specify the quantity for each.
Orders display `sku` information, including `sku`, price per unit, quantity, and availability.

`sku` is used as unique identifier for items in an order. Order details typically show `sku`, quantity, and total cost for each item.

The following are some examples of when `sku` is used to verify that orders contain the correct items:

| **Operations**                                                                                                                                           | **Descriptions**                                                                                                               |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **[Create a new order](/v3/orders-and-inventory/api-reference/orders/orders/create-new-order)**                                                          | When creating a new order, the item’s `sku` and `itemId` are used to verify that the correct item is processed.                |
| **[Search for backorders or preorders](/v3/orders-and-inventory/api-reference/orders/backorders-preorders/search-for-backorders-or-preorders-by-query)** | After searching for backorders or preorders, you can use the `sku` to verify that the correct items are included in the order. |
| **[Search for allocation](/v3/orders-and-inventory/api-reference/orders/allocations/search-for-allocations-by-query)**                                   | One of the filter criteria for searching inventory allocation is `sku`.                                                        |
| **[Create a new shipment](/v3/orders-and-inventory/api-reference/orders/shipments/create-new-shipment)**                                                 | To fulfill an order and ship it, the items that are set to ship can be identified by `sku`.                                    |

### Item ID

When creating or modifying an order, you can add one ore more `sku` by selecting a network and channel, and then browsing available `itemId`.
Only `itemId` with an "Available" stock status and availability greater than or equal to one can be added to an order.
You can select more than one `itemId` at once and specify the quantity for each.
Orders display `itemId` information, including `itemId`, price per unit, quantity, and availability.

`itemId` is used as a unique identifier for items in an order. Order details typically show `itemId`, quantity, and total cost for each item.

The following are some examples of when `itemId` is used to verify that orders contain the correct items:

| **Operations**                                                                                                                                           | **Descriptions**                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **[Create a new order](/v3/orders-and-inventory/api-reference/orders/orders/create-new-order)**                                                          | When creating a new order, the item’s `sku` and `itemId` are used to verify that the correct item is processed.                   |
| **[Search for backorders or preorders](/v3/orders-and-inventory/api-reference/orders/backorders-preorders/search-for-backorders-or-preorders-by-query)** | After searching for backorders or preorders, you can use the `itemId` to verify that the correct items are included in the order. |
| **[Search for allocation](/v3/orders-and-inventory/api-reference/orders/allocations/search-for-allocations-by-query)**                                   | One of the filter criteria for searching inventory allocation is `itemId`.                                                        |
| **[Create a new shipment](/v3/orders-and-inventory/api-reference/orders/shipments/create-new-shipment)**                                                 | To fulfill an order and ship it, the items that are set to ship can be identified by `itemId`.                                    |

## Inventory

### Stock keeping unit (SKU)

When you create inventory, the `sku` is stored as a native value.
During network setup, you can apply conditional rules to include specific SKUs and configure safety stock levels to maintain optimal inventory availability.
Inventory networks also aggregate `sku` quantities across various locations. Even if `sku` isn't directly referenced in some endpoints, they play a crucial role in the background.

The following are some examples of operations in Inventory that are supported using `sku`:

| **Operations**                                                                                                                                           | **Descriptions**                                                                                                                 |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **[Create inventory](/v3/orders-and-inventory/api-reference/inventory/inventory/create-inventory)**                                                      | Create inventory using a combination of location number, channel ID, and either `sku` or `itemId`.                               |
| **[Add new property to an existing inventory](/v3/orders-and-inventory/api-reference/inventory/inventory/update-inventory-by-adding-new-property)**      | By using `sku` to identify inventory, you can add a new property or update an existing one by specifying it in the request body. |
| **[Find inventory of specific items](/v3/orders-and-inventory/api-reference/inventory/inventory/find-inventory-of-specific-items-in-a-specific-region)** | Search for all items in the location specified in the request body that match the `sku` in the request body.                     |
| **[Create inventory network](/v3/orders-and-inventory/api-reference/inventory/networks/create-inventory-network)**                                       | Creates an inventory network. Although `sku` isn’t used directly, it’s utilized within the network to monitor item quantities.   |

### Item ID

When you create inventory, the `itemId` is stored as a native value.
During network setup, you can apply conditional rules to include a specific `itemId` and configure safety stock levels to maintain optimal inventory availability.
Inventory networks also aggregate `itemId` quantities across various locations. Even if `sku` isn't directly referenced in some endpoints, they play a crucial role in the background.

The following are some examples of operations in Inventory that are supported by `itemId`:

| **Operations**                                                                                                                                           | **Descriptions**                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **[Create inventory](/v3/orders-and-inventory/api-reference/inventory/inventory/create-inventory)**                                                      | Create inventory using a combination of location number, channel ID, and either `sku` or `itemId`.                                  |
| **[Add new property to an existing inventory](/v3/orders-and-inventory/api-reference/inventory/inventory/update-inventory-by-adding-new-property)**      | By using `itemId` to identify inventory, you can add a new property or update an existing one by specifying it in the request body. |
| **[Find inventory of specific items](/v3/orders-and-inventory/api-reference/inventory/inventory/find-inventory-of-specific-items-in-a-specific-region)** | Search for all items in the location specified in the request body that match the `itemId` in the request body.                     |
| **[Create inventory network](/v3/orders-and-inventory/api-reference/inventory/networks/create-inventory-network)**                                       | Creates an inventory network. Although `itemId` isn’t used directly, it’s utilized within the network to monitor item quantities.   |

Shipping Method Association: `itemId` are used to determine which items are associated with specific shipping methods.

### Inventory ID

`inventoryId` is used to track inventory to manage and track product stock across different locations, channels, and items.

Inventory is the only domain that uses `inventoryId`.

The following are some examples of how `inventoryId` is utilized:

| **Operations**                                                                                                                             | **Descriptions**                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
| [Create inventory](/v3/orders-and-inventory/api-reference/inventory/inventory/create-inventory)                                            | The system automatically generates a unique `inventoryId` when you create new inventory for a `sku`.               |
| [Change inventory counters](/v3/orders-and-inventory/api-reference/inventory/inventory/adjust-inventory-counters)                          | Adjust inventory counters by passing the `inventoryId` in the request body.                                        |
| [Update inventory with a new property](/v3/orders-and-inventory/api-reference/inventory/inventory/update-inventory-by-adding-new-property) | Verify that the correct inventory was updated by checking the `inventoryId` in the response body after the update. |
