Shops & products¶
List shops¶
Scope: products.read
Response¶
Use shop_id values in product catalog and order calls.
List shop products¶
GET /api/v2/public/orgs/{orgId}/products?shop_id=shop1&limit=50&page=1
Authorization: Bearer {token}
Scope: products.read
| Query | Required | Default | Description |
|---|---|---|---|
shop_id |
Yes | — | Shop belonging to org |
limit |
No | 50 |
Page size |
page |
No | 1 |
Page number |
Get single product¶
Scope: products.read
{
"p1_id": "12345",
"name": "Product name",
"slug": "product-slug",
"category": "Blüten",
"price": 8.99,
"stock_quantity": 100,
"shop_id": "shop1"
}
Add product to org inventory¶
Adds a global catalog product to the organization's inventory (required before shop assignment).
POST /api/v2/public/orgs/{orgId}/products/add-to-inventory
Authorization: Bearer {token}
Content-Type: application/json
{
"p1_id": "12345",
"initial_stock": 10,
"price": 8.99
}
Scope: products.write
| Field | Required | Description |
|---|---|---|
p1_id |
Yes | Catalog product id |
initial_stock |
No | Default 1 |
price |
No | Org-specific price override |
Update product¶
PUT /api/v2/public/orgs/{orgId}/products/{p1Id}
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "Updated name",
"price": 9.99,
"available": true
}
Scope: products.write
Product must exist in org inventory. Optional fields include name, slug, description, category, price, THC/CBD, and availability flags.
Shop assignment¶
See also Inventory & stock for stock prerequisites.
Attach product to shop¶
Product must have stock > 0 in org inventory. shop_id must belong to {orgId}.
POST /api/v2/public/orgs/{orgId}/shops/attach-product
Authorization: Bearer {token}
Content-Type: application/json
{
"shop_id": "shop1",
"p1_id": "12345",
"overrides": {},
"mode": "merge"
}
Scope: products.write
Detach product from shop¶
POST /api/v2/public/orgs/{orgId}/shops/detach-product
Authorization: Bearer {token}
Content-Type: application/json
{ "shop_id": "shop1", "p1_id": "12345" }
Set shop product overrides¶
POST /api/v2/public/orgs/{orgId}/shops/product-overrides
Authorization: Bearer {token}
Content-Type: application/json
{
"shop_id": "shop1",
"p1_id": "12345",
"overrides": { "price": 9.99 },
"mode": "merge"
}
mode |
Behavior |
|---|---|
merge |
Deep-merge overrides (default) |
replace |
Replace entire overrides object |