List Bundle Groups

Retrieves a paginated list of product bundle groups for the specified app, including their associated bundles, markets, and translations. Optionally filter by bundle group name using the search parameter.

GET/api/v1/{team_slug}/{app_slug}/bundle-groups
API
Management
Updated
Apr 26, 2026

management-api:GET:/api/v1/{team_slug}/{app_slug}/bundle-groups

Retrieves a paginated list of product bundle groups for the specified app, including their associated bundles, markets, and translations. Optionally filter by bundle group name using the search parameter.

API ownership

  • API family: Management API
  • Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data.
  • Do not use from: Browser-only storefront code or public clients.
  • Guide route: /apis/management/latest

The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.

Operation

  • Method: GET
  • Path: /api/v1/\{team_slug\}/\{app_slug\}/bundle-groups
  • Summary: List Bundle Groups
  • Description: Retrieves a paginated list of product bundle groups for the specified app, including their associated bundles, markets, and translations. Optionally filter by bundle group name using the search parameter.
  • OpenAPI contract: management-api
  • Operation ID: Not documented in the OpenAPI contract.

Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.

Parameters5 parameters
NameInRequiredTypeDescription
app_slugpathYesstringApp slug
team_slugpathYesstringTeam slug
pagequeryNointegerPage number (default is 1)
per-pagequeryNointegerAmount of bundle groups per page. Minimum 1 and max 100 (default is 20)
searchqueryNostringSearch on bundle group name
Request bodyNo documented body

Not documented in the OpenAPI contract.

Responses4 statuses
StatusDescriptionContent
200Product bundle group listsapplication/json (object)
400Invalid request (e.g. bad UUID, validation error)application/json (object)
401Unauthorized accessapplication/json (object)
500Internal server errorapplication/json (object)

200 - object

Product Bundle Group List

PropertyTypeRequiredDetails
dataobject[]No-
successbooleanNo-
totalintegerNo-
total_pagesintegerNo-
Bundle Group
PropertyTypeRequiredDetails
bundlesobject[]NoBundles associated with the group
complianceobjectNoCompliance level for the bundle group, "none" means that there is no valid/complete configuration, "partial" means that some of the rules are valid, "full" means that all rules are valid
created_atstringNoCreation timestamp
descriptionstringNo-
end_datestringNoEnd date of the bundle group
idstringNoID
marketsobject[]NoMarkets associated with the bundle group
namestringNoName of the bundle group
start_datestringNoStart date of the bundle group
translationsobjectNoBundle group translations
updated_atstringNoLast updated timestamp
Bundle
PropertyTypeRequiredDetails
attributesobject[]No-
compliantobjectNoCompliance level for the bundle
created_atstringNoCreation timestamp
discount_percentageintegerNoDiscount percentage [1-100]
discount_typestringNoDiscount type [fixed, relative]
discountsobjectNoDiscount for bundle. Amount is stored in cents
idstringNoID
rulesobject[]NoBundle rules
statusstringNoStatus of the bundle
updated_atstringNoLast updated timestamp
Compliance
PropertyTypeRequiredDetails
infostring[]NoExplanation of any issues with the bundle, it will be empty if the bundle is fully compliant
levelstringNoCompliance level for the bundle, "full" if all rules are valid, "partial" if some rules are valid but it can still be used as a bundle, "none" if no rules are valid
Bundle Group Market
PropertyTypeRequiredDetails
activebooleanNo-
country_codesstring[]No-
created_atstringNo-
currency_codestringNo-
idstringNo-
localestringNo-
namestringNo-
slugstringNo-
store_group_idstringNoStore group ID
store_group_slugstringNoStore group slug
updated_atstringNo-
Bundle Group Translation
PropertyTypeRequiredDetails
descriptionobject[]No-
nameobject[]No-
{
  "data": [
    {
      "bundles": [
        {
          "attributes": null,
          "compliant": null,
          "created_at": null,
          "discount_percentage": null,
          "discount_type": null,
          "discounts": null,
          "id": null,
          "rules": null,
          "status": null,
          "updated_at": null
        }
      ],
      "compliance": {
        "info": [],
        "level": "string"
      },
      "created_at": "string",
      "description": "string",
      "end_date": "string",
      "id": "string",
      "markets": [
        {
          "active": null,
          "country_codes": null,
          "created_at": null,
          "currency_code": null,
          "id": null,
          "locale": null,
          "name": null,
          "slug": null,
          "store_group_id": null,
          "store_group_slug": null,
          "updated_at": null
        }
      ],
      "name": "string",
      "start_date": "string",
      "translations": {
        "description": [],
        "name": []
      },
      "updated_at": "string"
    }
  ],
  "success": false,
  "total": 0,
  "total_pages": 0
}

400 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

401 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

500 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

Contract identity

Use these fields to confirm you are implementing the intended endpoint contract.

  • API family: Management API
  • Method: GET
  • Path: /api/v1/\{team_slug\}/\{app_slug\}/bundle-groups
  • Operation ID: Not documented in the OpenAPI contract.
  • OpenAPI tag: Product Bundle Groups
  • OpenAPI summary: List Bundle Groups

List Bundle Groups

# List Bundle Groups Retrieves a paginated list of product bundle groups for the specified app, including their associated bundles, markets, and translations. Optionally filter by bundle group name using the search parameter.
GET /api/v1/{team_slug}/{app_slug}/bundle-groups
Purpose

Retrieves a paginated list of product bundle groups for the specified app, including their associated bundles, markets, and translations.

Required inputs

app_slug path team_slug path

Primary response

200 ยท Product bundle group lists

Operation key

management-api:GET:/api/v1/{team_slug}/{app_slug}/bundle-groups

## API ownership - API family: Management API - Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data. - Do not use from: Browser-only storefront code or public clients. - Guide route: [/apis/management/latest](/apis/management/latest) The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation. ## Operation - Method: `GET` - Path: `/api/v1/{team_slug}/{app_slug}/bundle-groups` - Summary: List Bundle Groups - Description: Retrieves a paginated list of product bundle groups for the specified app, including their associated bundles, markets, and translations. Optionally filter by bundle group name using the search parameter. - OpenAPI contract: management-api - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `management-api:GET:/api/v1/{team_slug}/{app_slug}/bundle-groups` Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID. ## Parameters | Name | In | Required | Type | Description | | --- | --- | --- | --- | --- | | app_slug | path | Yes | string | App slug | | team_slug | path | Yes | string | Team slug | | page | query | No | integer | Page number (default is 1) | | per-page | query | No | integer | Amount of bundle groups per page. Minimum 1 and max 100 (default is 20) | | search | query | No | string | Search on bundle group name | ## Request body Not documented in the OpenAPI contract. ## Responses | Status | Description | Content | | --- | --- | --- | | 200 | Product bundle group lists | application/json (object) | | 400 | Invalid request (e.g. bad UUID, validation error) | application/json (object) | | 401 | Unauthorized access | application/json (object) | | 500 | Internal server error | application/json (object) | ### 200 - object #### Product Bundle Group List | Property | Type | Required | Details | | --- | --- | --- | --- | | `data` | object[] | No | - | | `success` | boolean | No | - | | `total` | integer | No | - | | `total_pages` | integer | No | - | ##### Bundle Group | Property | Type | Required | Details | | --- | --- | --- | --- | | `bundles` | object[] | No | Bundles associated with the group | | `compliance` | object | No | Compliance level for the bundle group, "none" means that there is no valid/complete configuration, "partial" means that some of the rules are valid, "full" means that all rules are valid | | `created_at` | string | No | Creation timestamp | | `description` | string | No | - | | `end_date` | string | No | End date of the bundle group | | `id` | string | No | ID | | `markets` | object[] | No | Markets associated with the bundle group | | `name` | string | No | Name of the bundle group | | `start_date` | string | No | Start date of the bundle group | | `translations` | object | No | Bundle group translations | | `updated_at` | string | No | Last updated timestamp | ##### Bundle | Property | Type | Required | Details | | --- | --- | --- | --- | | `attributes` | object[] | No | - | | `compliant` | object | No | Compliance level for the bundle | | `created_at` | string | No | Creation timestamp | | `discount_percentage` | integer | No | Discount percentage [1-100] | | `discount_type` | string | No | Discount type [fixed, relative] | | `discounts` | object | No | Discount for bundle. Amount is stored in cents | | `id` | string | No | ID | | `rules` | object[] | No | Bundle rules | | `status` | string | No | Status of the bundle | | `updated_at` | string | No | Last updated timestamp | ##### Compliance | Property | Type | Required | Details | | --- | --- | --- | --- | | `info` | string[] | No | Explanation of any issues with the bundle, it will be empty if the bundle is fully compliant | | `level` | string | No | Compliance level for the bundle, "full" if all rules are valid, "partial" if some rules are valid but it can still be used as a bundle, "none" if no rules are valid | ##### Bundle Group Market | Property | Type | Required | Details | | --- | --- | --- | --- | | `active` | boolean | No | - | | `country_codes` | string[] | No | - | | `created_at` | string | No | - | | `currency_code` | string | No | - | | `id` | string | No | - | | `locale` | string | No | - | | `name` | string | No | - | | `slug` | string | No | - | | `store_group_id` | string | No | Store group ID | | `store_group_slug` | string | No | Store group slug | | `updated_at` | string | No | - | ##### Bundle Group Translation | Property | Type | Required | Details | | --- | --- | --- | --- | | `description` | object[] | No | - | | `name` | object[] | No | - |
Generated example (synthetic) ```json { "data": [ { "bundles": [ { "attributes": null, "compliant": null, "created_at": null, "discount_percentage": null, "discount_type": null, "discounts": null, "id": null, "rules": null, "status": null, "updated_at": null } ], "compliance": { "info": [], "level": "string" }, "created_at": "string", "description": "string", "end_date": "string", "id": "string", "markets": [ { "active": null, "country_codes": null, "created_at": null, "currency_code": null, "id": null, "locale": null, "name": null, "slug": null, "store_group_id": null, "store_group_slug": null, "updated_at": null } ], "name": "string", "start_date": "string", "translations": { "description": [], "name": [] }, "updated_at": "string" } ], "success": false, "total": 0, "total_pages": 0 } ```
### 400 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ### 401 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ### 500 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ## Contract identity Use these fields to confirm you are implementing the intended endpoint contract. - API family: Management API - Method: `GET` - Path: `/api/v1/{team_slug}/{app_slug}/bundle-groups` - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `management-api:GET:/api/v1/{team_slug}/{app_slug}/bundle-groups` - OpenAPI tag: Product Bundle Groups - OpenAPI summary: List Bundle Groups