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

# Get Products in a Bundle by ID

> A bundle is a collection of products that are sold together as a single package. For example, a laptop is bundled with a carrying case and a wireless mouse to be sold as a package. This endpoint gets a paginated list of published products in a bundle by bundle ID. You can refine your search results by specifying query parameters - `excludeBundleProducts`, `excludeCollections`, `excludeCategories` and `excludeVariants` **Note**: <br />1. You can refine the results by specifying `offset` and `limit`. When they're not specified, by default, you'll get up to 10 products. <br /> 2. If you don't have product ID, use the corresponding item ID-based or SKU-based endpoints.



## OpenAPI

````yaml published-product.openapi get /published-products/{id}/bundle-products
openapi: 3.0.2
info:
  title: Products - Published Products API
  version: 3.0.0
  description: >-
    fabric **Published Products** API enables displaying products (items,
    variants, and bundles) and their details on your e-commerce platform
    (website or mobile app). Published products are products that are ready to
    be sold. Published products API supports getting one or more product details
    by product ID, SKUs, or Item IDs. And, also support search and filter
    functions, making it easier for shoppers to view product details such as
    descriptions, specification, images, and more. This will help them make
    informed purchases and enjoy a better shopping experience.
  contact:
    email: support@fabric.inc
    name: Product team
  license:
    name: fabric API License
    url: https://fabric.inc/api-license
  x-audience: external-public
  termsOfService: https://fabric.inc/terms-of-use
servers:
  - url: https://api.fabric.inc/v3
    description: Production URL
security:
  - authorization: []
tags:
  - name: Published Products By ID
    description: >-
      These are read-only endpoints used with Storefront. They support product
      operations by product ID.
  - name: Published Products By SKU
    description: >-
      These are read-only endpoints used with Storefront. They support product
      operations by product SKU.
  - name: Published Products By itemId
    description: >-
      These are read-only endpoints used with Storefront. They support product
      operations by item ID, which is a unique identifier of an item, a variant
      or a bundle. <br /> `NOTE:` This is a legacy ID which will be deprecated
      eventually. The recommendation is to use Product ID (`id`).
externalDocs:
  description: Find out more about Product
  url: https://developer.fabric.inc/docs/products-overview
paths:
  /published-products/{id}/bundle-products:
    get:
      tags:
        - Published Products By ID
      summary: Get Products in a Bundle by ID
      description: >-
        A bundle is a collection of products that are sold together as a single
        package. For example, a laptop is bundled with a carrying case and a
        wireless mouse to be sold as a package. This endpoint gets a paginated
        list of published products in a bundle by bundle ID. You can refine your
        search results by specifying query parameters - `excludeBundleProducts`,
        `excludeCollections`, `excludeCategories` and `excludeVariants`
        **Note**: <br />1. You can refine the results by specifying `offset` and
        `limit`. When they're not specified, by default, you'll get up to 10
        products. <br /> 2. If you don't have product ID, use the corresponding
        item ID-based or SKU-based endpoints.
      parameters:
        - $ref: '#/components/parameters/x-fabric-tenant-id'
        - $ref: '#/components/parameters/x-fabric-request-id'
        - $ref: '#/components/parameters/idPathParameter'
        - $ref: '#/components/parameters/localeParameter'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          $ref: '#/components/responses/getBundledProductsByProductId200Response'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/notAuthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '413':
          $ref: '#/components/responses/payloadLimitExceededError'
        '500':
          $ref: '#/components/responses/internalServerError'
components:
  parameters:
    x-fabric-tenant-id:
      name: x-fabric-tenant-id
      in: header
      description: >-
        A header used by fabric to identify the tenant making the request. You
        must include tenant id in the authentication header for an API request
        to access any of fabric’s endpoints. You can retrieve the tenant id ,
        which is also called account id, from
        [Copilot](/v3/platform/settings/account-details/getting-the-account-id).
        This header is required.
      schema:
        type: string
        example: 517fa9dfd42d8b00g1o3k312
    x-fabric-request-id:
      name: x-fabric-request-id
      in: header
      description: Unique request ID
      schema:
        type: string
        example: 263e731c-45c8-11ed-b878-0242ac120002
      required: false
    idPathParameter:
      name: id
      in: path
      example: 33184766610c0e32a86d8759
      description: 24-character system-generated product ID.
      schema:
        type: string
      required: true
    localeParameter:
      name: locale
      in: query
      example: en_US
      description: Locale name
      schema:
        type: string
      required: true
    limit:
      in: query
      name: limit
      description: Maximum number of records per page
      schema:
        type: integer
        format: int32
        default: 10
        example: 20
    offset:
      in: query
      name: offset
      description: >-
        Number of records to skip before returning records. For example,
        `offset=20, limit=10` returns records 21-30.
      schema:
        type: integer
        format: int32
        default: 0
        example: 2
      required: false
  responses:
    getBundledProductsByProductId200Response:
      description: OK
      headers:
        x-fabric-request-id:
          $ref: '#/components/headers/x-fabric-request-id-header'
      content:
        application/json:
          schema:
            type: object
            properties:
              data:
                $ref: '#/components/schemas/bundleProducts'
              offset:
                $ref: '#/components/schemas/offset'
              limit:
                $ref: '#/components/schemas/limit'
              count:
                $ref: '#/components/schemas/count'
    badRequest:
      description: Request is invalid or malformed
      headers:
        x-fabric-request-id:
          $ref: '#/components/headers/x-fabric-request-id-header'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/genericError'
    notAuthorized:
      description: Requester is unauthorized.
      headers:
        x-fabric-request-id:
          $ref: '#/components/headers/x-fabric-request-id-header'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/genericError'
          example:
            message: Request is unauthorized
            type: Unauthorized request
            errors:
              - type: UNAUTHORIZED_ERROR
                message: The requester is unauthorized
    forbidden:
      description: User isn't allowed to perform the action
      headers:
        x-fabric-request-id:
          $ref: '#/components/headers/x-fabric-request-id-header'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/genericError'
          example:
            type: REQUEST_DENIED
            message: User doesn't have the required permission
    notFound:
      description: Not found
      headers:
        x-fabric-request-id:
          $ref: '#/components/headers/x-fabric-request-id-header'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/notFound'
    payloadLimitExceededError:
      description: Payload limit exceeded (> 10MB)
      headers:
        x-fabric-request-id:
          $ref: '#/components/headers/x-fabric-request-id-header'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/genericError'
          example:
            message: Payload exceeds maximum configured size
            type: Payload limit exceeded
            errors:
              - type: PAYLOAD_LIMIT_EXCEEDED_ERROR
                message: Payload exceeds maximum configured size
    internalServerError:
      description: Internal server error
      headers:
        x-fabric-request-id:
          $ref: '#/components/headers/x-fabric-request-id-header'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/genericError'
          example:
            message: Internal Server Error
            type: Internal Server Error
            errors:
              - type: SERVER_ERROR
                message: Internal Server Error
  headers:
    x-fabric-request-id-header:
      description: Unique request ID
      schema:
        type: string
        example: 263e731c-45c8-11ed-b878-0242ac120002
  schemas:
    bundleProducts:
      type: array
      items:
        $ref: '#/components/schemas/bundleProduct'
    offset:
      type: integer
      format: int32
      default: 0
      description: >-
        Number of records to skip before returning records. For example,
        `offset=20, limit=10` returns records 21-30.
      example: 10
    limit:
      type: integer
      format: int32
      default: 10
      description: Maximum number of records per page
      example: 10
    count:
      type: integer
      format: int32
      description: Total number of records in the response
      example: 100
    genericError:
      type: object
      properties:
        message:
          type: string
          description: Place holder error message for all 4xx, 5xx errors
          example: Request was invalid
        type:
          type: string
          description: Place holder error type for all 4xx, 5xx errors
          example: Bad request
        errors:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                description: Error type
                example: CLIENT_ERROR
              message:
                type: string
                description: Error message
                example: Invalid request. Unable to find/create product
    notFound:
      type: object
      description: Error message for 404 error code
      properties:
        type:
          type: string
          description: Placeholder 404 error type
          example: NOT_FOUND
        message:
          type: string
          description: Requested product not found
          example: Provided ID doesn't exist
    bundleProduct:
      description: >-
        Bundles are combo of two or more products sold exclusively together or
        as individual products (depending on the configuration). For example, an
        iPhone and a 20W USB-C Power Adapter becomes a bundle that can be sold
        together to offer value to shoppers.
      allOf:
        - $ref: '#/components/schemas/bundleProductsQuantity'
        - $ref: '#/components/schemas/productSkuId'
        - $ref: '#/components/schemas/productId'
        - $ref: '#/components/schemas/itemId'
      type: object
      properties:
        attributes:
          $ref: '#/components/schemas/productAttributesArray'
        localizedProperties:
          $ref: '#/components/schemas/productAttributesArray'
    bundleProductsQuantity:
      type: object
      description: Number of published products in a bundle
      properties:
        quantity:
          type: integer
          format: int32
          description: Product quantity
          example: 2
    productSkuId:
      type: object
      description: Unique Store Keeping Unit (SKU) of product
      properties:
        sku:
          type: string
          example: XP-123345
          description: >-
            Unique product ID that maps to fabric's standard attribute called
            `SKU`. <br /> <b>Note:</b> `sku` shouldn't include `;` or `=`
          pattern: ^[^;=]*$
    productId:
      type: object
      description: >-
        Depending on the context, this is a 24-character system-generated ID for
        item, attribute, variant, bundle, or category.
      properties:
        id:
          type: string
          example: 5f7329dfd5288b0011332366
          description: 24-character system-generated product ID
    itemId:
      type: object
      description: Unique identifier of item
      properties:
        itemId:
          type: number
          format: int32
          example: 1682313863
          description: Unique identifier of an item, a variant or a bundle
    productAttributesArray:
      type: array
      items:
        $ref: '#/components/schemas/productAttribute'
    productAttribute:
      type: object
      description: Details of product attributes
      properties:
        id:
          $ref: '#/components/schemas/id'
        name:
          type: string
          example: color
          description: Attribute name that's unique for a merchant
        value:
          anyOf:
            - $ref: '#/components/schemas/booleanSchema'
            - $ref: '#/components/schemas/stringSchema'
            - $ref: '#/components/schemas/doubleSchema'
            - $ref: '#/components/schemas/integerSchema'
            - $ref: '#/components/schemas/arrayOfStrings'
          description: Attribute value
          example: blue
        type:
          type: string
          description: Attribute type
          example: string
    id:
      type: string
      description: >-
        24-character system-generated entity ID. Depending on context, entity
        could be item, attribute, variant, bundle or category.
      example: 5f7329dfd5288b0011332322
    booleanSchema:
      type: boolean
      nullable: true
      description: Sample boolean schema
      example: true
    stringSchema:
      type: string
      nullable: true
      description: Sample string schema
      example: blue
    doubleSchema:
      type: number
      nullable: true
      format: double
      description: Sample double schema
      example: 1
    integerSchema:
      type: integer
      nullable: true
      format: int32
      description: Sample integer schema
      example: 1
    arrayOfStrings:
      type: array
      items:
        $ref: '#/components/schemas/stringSchema'
  securitySchemes:
    authorization:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: S2S access token (JWT) from fabric Identity service (during Login)

````