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

# List bundles

> List the bundles stored for a store. Each product is looked up in your
catalog, so you get SKUs and names rather than bare identifiers.

## Finding one bundle

Pass `parent_sku` to return just that bundle. The lookup goes through your
catalog, so a bundle created in the Redo UI is found too. `sku_resolved`
tells you whether the SKU exists at all, as opposed to existing but having
no bundle. If the SKU is on more than one variant, you get every matching
bundle; use `parent.variant_id` to tell them apart. Filtered requests are
not paged.

## Quantities

Each child carries `quantity`, the number of units of that product in the
bundle. This mirrors what you send on `PUT`.

## Products that no longer exist

A product can be deleted after a bundle is built. When that happens the
entry has `resolved: false` and `sku` and `name` are `null`. A resolved
product with a `null` `sku` simply has no SKU set; such a bundle can only be
managed from the Bundles page in Redo.

## Paging

`X-Page-Size` sets the page size, up to 250 (default 50). When more bundles
remain, the response includes an `X-Page-Next` header; send it back as
`X-Page-Continue` for the next page. Treat the cursor as opaque.

Requires the [`returns_read`](/docs/api-reference/scopes) scope.




## OpenAPI

````yaml /api-schema/openapi.yaml get /stores/{storeId}/bundles
openapi: 3.1.0
info:
  contact:
    email: engineering-admin@getredo.com
    name: Redo Engineering
  description: |
    ## Endpoints

    Endpoints are authenticated using the Bearer authorization scheme, using the
    REDO_API_SECRET.

    ```txt
    GET /v2.2/resource HTTP/1.1
    Authorization: Bearer 77bb7598b7a972475cc7c7e171ec33af
    Host: api.getredo.com
    ```

    ## Webhooks

    Webhooks are authenticated using the Bearer authorization scheme, using
    a secret supplied by the subscriber.

    ```txt
    POST /events HTTP/1.1
    Authorization: Bearer subscriberauth123
    Host: subscriber.example.com
    ```

    Webhook events are delivered in order for each individual subject (e.g.
    return).

    If the response is not a 2xx status code, the event will be retried multiple
    times before discarding it.
  title: Redo API
  version: 2.2.1
servers:
  - url: https://api.getredo.com/v2.2
security: []
tags:
  - description: >-
      Group several products under one product shoppers buy, so a returned
      bundle can be broken back into the products it contains.
    name: Bundles
  - name: Checkout Buttons
  - name: Coverage Info
  - name: Coverage Products
  - name: Custom Events
  - name: Customer Portal
  - name: Customer Subscriptions
  - name: Customers
  - name: Inbound Shipments
  - name: Inventory Items
  - name: Inventory Levels
  - name: Invoices
  - name: Merchant Admin
  - name: Orders
  - name: Products
  - name: Returns
  - description: >-
      Push orders into Redo from a commerce platform Redo does not support
      directly, so shoppers can return them.
    name: Returns Custom Integration
  - name: Storefront
  - name: Webhooks
paths:
  /stores/{storeId}/bundles:
    summary: Bundles
    parameters:
      - $ref: '#/components/parameters/store-id.param'
    get:
      tags:
        - Bundles
      summary: List bundles
      description: >
        List the bundles stored for a store. Each product is looked up in your

        catalog, so you get SKUs and names rather than bare identifiers.


        ## Finding one bundle


        Pass `parent_sku` to return just that bundle. The lookup goes through
        your

        catalog, so a bundle created in the Redo UI is found too. `sku_resolved`

        tells you whether the SKU exists at all, as opposed to existing but
        having

        no bundle. If the SKU is on more than one variant, you get every
        matching

        bundle; use `parent.variant_id` to tell them apart. Filtered requests
        are

        not paged.


        ## Quantities


        Each child carries `quantity`, the number of units of that product in
        the

        bundle. This mirrors what you send on `PUT`.


        ## Products that no longer exist


        A product can be deleted after a bundle is built. When that happens the

        entry has `resolved: false` and `sku` and `name` are `null`. A resolved

        product with a `null` `sku` simply has no SKU set; such a bundle can
        only be

        managed from the Bundles page in Redo.


        ## Paging


        `X-Page-Size` sets the page size, up to 250 (default 50). When more
        bundles

        remain, the response includes an `X-Page-Next` header; send it back as

        `X-Page-Continue` for the next page. Treat the cursor as opaque.


        Requires the [`returns_read`](/docs/api-reference/scopes) scope.
      operationId: Bundles list
      parameters:
        - $ref: '#/components/parameters/bundle-page-continue.param'
        - $ref: '#/components/parameters/bundle-page-size.param'
        - $ref: '#/components/parameters/bundle-parent-sku.param'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bundle-list-response.schema'
              examples:
                page:
                  summary: A page of bundles
                  value:
                    bundles:
                      - parent:
                          variant_id: '55518673568035'
                          sku: BUNDLE-STARTER-KIT
                          name: Starter Kit
                          resolved: true
                        children:
                          - variant_id: '55518673404195'
                            sku: SOCKS-BLK-L
                            name: Socks - Black / L
                            returnable: true
                            quantity: 1
                            resolved: true
                          - variant_id: '55518673600803'
                            sku: TSHIRT-BLK-M
                            name: T-Shirt - Black / M
                            returnable: true
                            quantity: 2
                            resolved: true
                        return_types:
                          - return
                          - warranty
                dangling_reference:
                  summary: A bundle pointing at a deleted product
                  value:
                    bundles:
                      - parent:
                          variant_id: '55518673568035'
                          sku: BUNDLE-STARTER-KIT
                          name: Starter Kit
                          resolved: true
                        children:
                          - variant_id: '55518673404195'
                            sku: SOCKS-BLK-L
                            name: Socks - Black / L
                            returnable: true
                            quantity: 1
                            resolved: true
                          - variant_id: '40668437479506'
                            sku: null
                            name: null
                            returnable: true
                            quantity: 1
                            resolved: false
                        return_types:
                          - claim
                          - return
                          - warranty
                          - recycle
                          - withdrawal
                sku_not_found:
                  summary: parent_sku matched no product in the catalog
                  value:
                    bundles: []
                    sku_resolved: false
          description: Success
          headers:
            X-Page-Next:
              $ref: '#/components/headers/page-next.header'
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/error.schema'
          description: Invalid `X-Page-Size`, or a malformed `X-Page-Continue` cursor
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/error.schema'
          description: The bundle lookup did not complete
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/error.schema'
          description: Error
      security:
        - Bearer: []
components:
  parameters:
    store-id.param:
      description: Store ID
      in: path
      name: storeId
      required: true
      schema:
        example: 64e5a8a1af49a89df37e4ee7
        type: string
    bundle-page-continue.param:
      description: Page marker, from the X-Page-Next header of the previous response
      example: eyJvZmZzZXQiOjUwfQ==
      in: header
      name: X-Page-Continue
      schema:
        type: string
    bundle-page-size.param:
      description: Page size, defaults to 50
      example: 50
      in: header
      name: X-Page-Size
      schema:
        maximum: 250
        minimum: 1
        type: integer
    bundle-parent-sku.param:
      description: >-
        Return only bundles whose parent product has this SKU. Case-sensitive.
        If the SKU is on more than one variant, every matching bundle is
        returned.
      example: BUNDLE-STARTER-KIT
      in: query
      name: parent_sku
      schema:
        type: string
  schemas:
    bundle-list-response.schema:
      description: A page of stored bundles.
      properties:
        bundles:
          description: The bundles on this page.
          items:
            $ref: '#/components/schemas/bundle-list-item.schema'
          title: Bundles
          type: array
        sku_resolved:
          description: >-
            Present only when `parent_sku` was supplied. `false` means no
            product in your catalog has that SKU, which is different from the
            SKU existing but having no bundle.
          title: SKU Resolved
          type: boolean
      required:
        - bundles
      title: Bundle List Response
      type: object
    error.schema:
      description: >-
        Problem details. See [RFC 7807 Section
        3](https://datatracker.ietf.org/doc/html/rfc7807#section-3).
      properties:
        detail:
          description: Human-readable description of the problem.
          title: Detail
          type: string
        instance:
          description: A URI reference that identifies this problem.
          format: uri-reference
          type: string
        title:
          description: Human-readable summary of the problem type.
          title: Title
          type: string
        type:
          default: about:blank
          description: A URI reference that identifies the problem type.
          format: uri-reference
          type: string
      title: Problem details
      type: object
    bundle-list-item.schema:
      description: A stored bundle, with its products resolved against your catalog.
      properties:
        parent:
          allOf:
            - $ref: '#/components/schemas/bundle-variant.schema'
          description: The product shoppers buy, which identifies the bundle.
          title: Parent
        children:
          description: The products the bundle contains.
          items:
            allOf:
              - $ref: '#/components/schemas/bundle-variant.schema'
            properties:
              returnable:
                description: Whether this product may be returned on its own.
                title: Returnable
                type: boolean
              quantity:
                description: How many units of this product the bundle contains.
                example: 2
                minimum: 1
                title: Quantity
                type: integer
            required:
              - returnable
              - quantity
            type: object
          title: Children
          type: array
        return_types:
          description: Return types the bundle applies to.
          items:
            enum:
              - claim
              - return
              - warranty
              - recycle
              - withdrawal
            type: string
          title: Return Types
          type: array
      required:
        - parent
        - children
        - return_types
      title: Bundle List Item
      type: object
    bundle-variant.schema:
      description: >-
        A product referenced by a bundle, looked up in your catalog when the
        bundle is read.
      properties:
        variant_id:
          description: Identifier of the product variant the bundle points at.
          example: '55518673568035'
          title: Variant ID
          type: string
        sku:
          description: >-
            The variant's SKU, or `null` when it has none or no longer exists. A
            bundle whose parent has no SKU cannot be updated through this API.
          example: BUNDLE-STARTER-KIT
          title: SKU
          type:
            - string
            - 'null'
        name:
          description: >-
            Product name, with the variant appended when the product has more
            than one. `null` when the variant no longer exists.
          example: Starter Kit - Large
          title: Name
          type:
            - string
            - 'null'
        resolved:
          description: >-
            Whether the variant was found in your catalog. `false` means the
            bundle points at a product that has since been deleted, and `sku`
            and `name` will be `null`.
          title: Resolved
          type: boolean
      required:
        - variant_id
        - sku
        - name
        - resolved
      title: Bundle Variant
      type: object
  headers:
    page-next.header:
      description: Next value for X-Page-Continue, for more results
      schema:
        type: string
  securitySchemes:
    Bearer:
      scheme: bearer
      type: http

````