Sections, products & variants
Sections
Section titled “Sections”A bundle is organized into sections — the groups a customer picks from. Sections come from GET /bundles/:id:
| Field | Type | Description |
|---|---|---|
id | number | Section ID. |
name | string | Section title (e.g. “Choose a shirt”). |
description | string | Optional description. |
imageUrl | string | Optional section image. |
order | number | Display order. |
products[] | array | Allowed items in this section. |
Each entry in products[] references a product (and optionally specific variants) allowed in that section:
| Field | Type | Description |
|---|---|---|
bundleItemId | number | The bundle-item ID. |
shopifyProductId | string | Shopify product ID. |
variantIds | string[] | Allowed variant IDs. Empty = all variants allowed. |
Products & variants
Section titled “Products & variants”Full product and variant detail comes from GET /bundles/:id/products (the SDK merges it into getBundle()):
Product
| Field | Type | Description |
|---|---|---|
shopifyProductId | string | Numeric ID. |
shopifyProductGid | string | gid://shopify/Product/<id>. |
title | string | Product title. |
handle | string | URL handle. |
imageUrl | string | Product image (may be empty). |
variants[] | array | The product’s variants. |
Variant
| Field | Type | Description |
|---|---|---|
shopifyVariantId | string | Numeric ID. |
shopifyVariantGid | string | gid://shopify/ProductVariant/<id>. |
title | string | Variant title (e.g. “Small / Black”). |
price | string | Price formatted to 2 decimals, e.g. "29.99". |
sku | string | SKU (empty string if none). |
available | boolean | Whether it can be purchased (see below). |
inventoryQuantity | number | Current inventory quantity. |
Availability logic
Section titled “Availability logic”available is computed as:
trueif inventory is not managed by Shopify for the variant; ortrueif the inventory policy iscontinue(oversell allowed); otherwiseinventoryQuantity > 0.