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

# Get Product Substitutions

> Returns a list of up to 10 products that can be substituted for the provided product code.



## OpenAPI

````yaml /openapi/openapi_catalog_storefront.json get /commerce/catalog/storefront/products/{productCode}/substitutions
openapi: 3.0.1
info:
  description: |-
    <div id="overview_CATALOG_STOREFRONT">
                <h2>CATALOG STOREFRONT</h2>
                <p>The Catalog Storefront APIs are a collection of resources for managing storefront categories, currencies, price lists, products, and
                    product search. This controls how the products in your catalog are organized and displayed on the
                    storefront. See the
                    <a href="/concept-guides/catalog">Catalog user guides</a>
                    for information about the related features in the Unified Commerce Admin.</p>
                <p>Use the <strong>Currencies</strong> resource to retrieve exchange rates for displaying prices on your storefront.</p>
                <p>Use the <strong>Storefront Categories</strong> resource to view the product category hierarchy as it appears to shoppers
                    who are browsing the storefront. The hierarchy can be returned as a flat list or as a category tree.</p>
                <p>Use the <strong>Pricelists</strong> resource to retrieve the details of a price list. The details may contain a hierarchy
                    of ancestor and/or descendant price lists dependening on your configuration.</p>
                <p>Use the <strong>Storefront Products</strong> resource to manage the shopper product selection process during a visit to
                    the web storefront. You can update product options as shoppers pick and choose their product choices. A
                    shopper cannot add a product to a cart until all of its required options have been selected.</p>
                <p>Use the <strong>Product Search</strong> resource to provide dynamic search results to shoppers as they browse and search
                    for products on the web storefront, and to suggest possible search terms as the shopper enters text. The related <strong>Search Redirect</strong>
                    resource allows you to retrieve any search redirect items.</p>
            </div>
  title: Catalog Storefront
  version: 0.0.1
servers:
  - description: Kibo Base URL
    url: '{baseUrl}/api'
    variables:
      baseUrl:
        default: https://t1000000.sb.usc1.gcp.kibocommerce.com
        description: Base URL
security:
  - bearerAuth: []
paths:
  /commerce/catalog/storefront/products/{productCode}/substitutions:
    get:
      tags:
        - StorefrontProducts
      summary: Get Product Substitutions
      description: >-
        Returns a list of up to 10 products that can be substituted for the
        provided product code.
      parameters:
        - in: path
          name: productCode
          required: true
          schema:
            type: string
        - in: query
          name: preferredProductCode
          schema:
            type: string
        - description: limits which fields are returned in the response body
          in: query
          name: responseFields
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductSubstituteCollection'
            text/json:
              schema:
                $ref: '#/components/schemas/ProductSubstituteCollection'
            text/plain:
              schema:
                $ref: '#/components/schemas/ProductSubstituteCollection'
          description: OK
components:
  schemas:
    ProductSubstituteCollection:
      description: Collection used for product substitutions
      properties:
        allowAutoSubstitutions:
          description: Indicates if a product allows automatic substitutions
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/ProductSubstitution'
          nullable: true
          type: array
        totalCount:
          format: int32
          type: integer
      type: object
    ProductSubstitution:
      properties:
        baseProductCode:
          description: >-
            When a configurable product has IsPurchasable=true on a GetProduct,
            this property will be populated for submission to cart.
          nullable: true
          type: string
        bundledProducts:
          description: >-
            The list of Bundled products included in this product. This is only
            populated when ProductUsage=Bundle
          items:
            $ref: '#/components/schemas/CatalogRuntimesBundledProduct'
          nullable: true
          type: array
        mfgPartNumber:
          description: Manufacturer part number.
          nullable: true
          type: string
        price:
          $ref: '#/components/schemas/CatalogRuntimesProductPrice'
        productCode:
          description: >-
            Merchant-created code associated with the product, for example, a
            SKU.
          nullable: true
          type: string
        productImages:
          items:
            $ref: '#/components/schemas/ProductImage'
          nullable: true
          type: array
        productName:
          nullable: true
          type: string
        productUsage:
          description: >-
            The UsageType of this product (Standard, Configurable, Bundle,
            Component, Collection)
          nullable: true
          type: string
        upc:
          description: UPC code of the products (populated for configurable products).
          nullable: true
          type: string
      type: object
    CatalogRuntimesBundledProduct:
      properties:
        content:
          $ref: '#/components/schemas/ProductContent'
        creditValue:
          description: >-
            Credit Value applicable to this product. Should only be present on
            DigitalCredit goodsType....
          format: double
          nullable: true
          type: number
        goodsType:
          description: The GoodsType of this product (Physical, Digital, DigitalCredit)
          nullable: true
          type: string
        inventoryInfo:
          $ref: '#/components/schemas/CatalogRuntimesProductInventoryInfo'
        isPackagedStandAlone:
          description: Is this product shipped in its own package
          nullable: true
          type: boolean
        measurements:
          $ref: '#/components/schemas/CatalogRuntimesPackageMeasurements'
        optionAttributeFQN:
          description: >-
            Fully Qualified Name of the selected option's attribute (only
            applies to Products as extras)
          nullable: true
          type: string
        optionValue:
          description: Value of the selected option (only applies to Products as extras)
          nullable: true
        productCode:
          description: >-
            Merchant-created code associated with the product, for example, a
            SKU.
          nullable: true
          type: string
        productType:
          nullable: true
          type: string
        quantity:
          description: The quantity of the bundled product
          format: int32
          type: integer
      type: object
    CatalogRuntimesProductPrice:
      description: Price of the product with any sale and discounts applied.
      properties:
        catalogListPrice:
          description: Current Price Listed in the catalog.
          format: double
          nullable: true
          type: number
        catalogSalePrice:
          description: >-
            Current sale price of the product listed in the catalog. This is not
            typically dispalyed directly to the user as it will be listed in
            SalePrice if applicable.
          format: double
          nullable: true
          type: number
        creditValue:
          description: >-
            Credit Value applicable to this product. Should only be present on
            DigitalCredit goodsType....
          format: double
          nullable: true
          type: number
        discount:
          $ref: '#/components/schemas/CatalogRuntimesAppliedDiscount'
        effectivePricelistCode:
          description: The priceList that was applied to this product
          nullable: true
          type: string
        msrp:
          description: >-
            Manufacturer suggested Retail price, this may be null if one is not
            set in the catalog.
          format: double
          nullable: true
          type: number
        price:
          description: >-
            Listed Price of the product. This is the price that the merchant
            intends to sell the product for if no sale is active.
          format: double
          nullable: true
          type: number
        priceListEntryCode:
          description: The specific PriceListCode that was applied (includes inheritence
          nullable: true
          type: string
        priceListEntryEndDate:
          description: EndDate if PriceListEntry present.
          format: date-time
          nullable: true
          type: string
        priceListEntryMode:
          description: >-
            IF a PriceList Entry was applied to this price it will be (simple,
            bulk...)
          nullable: true
          type: string
        priceType:
          description: >-
            Futher clarification of what value is being returned in the Price
            field
          nullable: true
          type: string
        salePrice:
          description: >-
            Current sale price of the product. This can be either a specific
            numerical amount or it can be calculated based on an active
            discount. Optional.
          format: double
          nullable: true
          type: number
        salePriceType:
          nullable: true
          type: string
      type: object
    ProductImage:
      description: Image or video associated with a product.
      properties:
        altText:
          description: >-
            Descriptive text associated with the image. Unicode data with a
            maximum length of 200 characters.
          nullable: true
          type: string
        cmsId:
          description: Id of the image in the CMS.
          nullable: true
          type: string
        imageLabel:
          description: Image title.  Unicode data with a maximum length of 50 characters.
          nullable: true
          type: string
        imageUrl:
          description: Image URL. Unicode data with a maximum length of 4000 characters.
          nullable: true
          type: string
        mediaType:
          description: >-
            Type of media. Used by the client to determine how to render the
            image or video or what have you.
          nullable: true
          type: string
        productImageGroupId:
          nullable: true
          type: string
        sequence:
          description: >-
            For products with multiple images, the sequence is the order in
            which this image appears. Whole number data. Required.
          format: int32
          nullable: true
          type: integer
        videoUrl:
          description: >-
            URL of the video. Unicode data with a maximum length of 4000
            characters.
          nullable: true
          type: string
      type: object
    ProductContent:
      description: >-
        Name of the product and, if supplied, description, metatags, friendly
        URL, and associated images.
      properties:
        metaTagDescription:
          description: Metadata description used to manage information internally.
          nullable: true
          type: string
        metaTagKeywords:
          description: Metadata keywords used to manage information internally.
          nullable: true
          type: string
        metaTagTitle:
          description: Metadata title used to manage information internally.
          nullable: true
          type: string
        productFullDescription:
          description: >-
            Detailed description of the product typically used for a product
            details page.
          nullable: true
          type: string
        productImages:
          description: Images associated with the product.
          items:
            $ref: '#/components/schemas/ProductImage'
          nullable: true
          type: array
        productName:
          description: Name of the product.
          nullable: true
          type: string
        productShortDescription:
          description: >-
            Brief description of the product typically used when the product is
            displayed in a list or search results.
          nullable: true
          type: string
        seoFriendlyUrl:
          description: >-
            Human-readable identifier defined for the product to create friendly
            URLs.
          nullable: true
          type: string
      type: object
    CatalogRuntimesProductInventoryInfo:
      description: >-
        Use the Products resource to create and manage products for your store.
        You can create products with options that a shopper configures (such as
        a T-shirt color and size). The system can manage inventory for all
        combinations of your product options, and can calculate tax and shipping
        costs.
      properties:
        availableDate:
          description: Date the item will become available for back order if out of stock
          format: date-time
          nullable: true
          type: string
        isSubstitutable:
          description: ReadOnly flag indicates is the product has substitutions defined
          type: boolean
        manageStock:
          description: If true, the Products service manages inventory for this product.
          nullable: true
          type: boolean
        onlineLocationCode:
          description: Directship location code for OnlineStockAvailable
          nullable: true
          type: string
        onlineSoftStockAvailable:
          description: Number of product items currently available for purchase.
          format: int32
          nullable: true
          type: integer
        onlineStockAvailable:
          description: Number of product items currently available for purchase.
          format: int32
          nullable: true
          type: integer
        outOfStockBehavior:
          description: >-
            The behvior when the ManageStock is true and the product is not in
            stock.
          nullable: true
          type: string
      type: object
    CatalogRuntimesPackageMeasurements:
      description: >-
        Physical dimensions of the package required to ship the product and its
        weight.
      properties:
        packageHeight:
          $ref: '#/components/schemas/CommerceRuntimeMeasurement'
        packageLength:
          $ref: '#/components/schemas/CommerceRuntimeMeasurement'
        packageWeight:
          $ref: '#/components/schemas/CommerceRuntimeMeasurement'
        packageWidth:
          $ref: '#/components/schemas/CommerceRuntimeMeasurement'
      type: object
    CatalogRuntimesAppliedDiscount:
      description: Discount applied to the product.
      properties:
        couponCode:
          description: If the discount is a coupon, code associated with the coupon.
          nullable: true
          type: string
        discount:
          $ref: '#/components/schemas/CatalogRuntimesDiscount'
        discounts:
          description: Discount name and expiration date.
          items:
            $ref: '#/components/schemas/CatalogRuntimesDiscount'
          nullable: true
          type: array
        impact:
          description: >-
            The new calculated price of the product. That is, the product price
            minus the discount amount.
          format: double
          type: number
      type: object
    CommerceRuntimeMeasurement:
      properties:
        unit:
          nullable: true
          type: string
        value:
          format: double
          nullable: true
          type: number
      type: object
    CatalogRuntimesDiscount:
      description: Discount name and expiration date.
      properties:
        discountId:
          description: Unique identifier of the discount.
          format: int32
          type: integer
        expirationDate:
          description: Date when the discount expires.
          format: date-time
          nullable: true
          type: string
        friendlyDescription:
          description: Description of the discount.
          nullable: true
          type: string
        impact:
          description: The Impact of the individual Discount
          format: double
          type: number
        name:
          description: Name of the discount.
          nullable: true
          type: string
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: JWT Authorization header using the Bearer scheme.
      scheme: bearer
      type: http

````