Skip to main content
All routes require:
Paths are store-scoped. The key must include the matching group scope and access to that shop. Dashboard permission ceilings still apply (manageGroups). Groups bundle products for the storefront. They are not categories.

List

Scope: group:read
limit max is 100. List rows omit member products (products is []); use GET one for membership.

Create

Scope: group:create · 201
storeId in the JSON body is ignored.

Get / update / delete

Scopes: group:read · group:update · group:delete GET includes membership:
PATCH any subset of name, image, visibility, products. Omitting products leaves membership unchanged. Sending products: [] unlinks every product. Sending numeric IDs replaces membership. A group that belongs to another shop returns 404. Unknown product IDs return 400. Duplicate names return 400. DELETE unlinks products, then removes the group.

Errors