Catalog
Publish and keep your assortment in sync. A product is the master record; each product has one or more variants (a simple product has a single variant). Per-store price and stock live on a variant as items — read them here, write them through the Inventory API. Brands, categories and tags classify products.
https://zopping.comProducts
The master product record. Set clientItemId to your own SKU so you can fetch later by clientId. Pass storeId on reads to include store-specific price and stock.
| Field | Type | Description |
|---|---|---|
id | integerread-only | Zopping product id. |
organizationId | stringrequired | Your tenant id. |
name | stringrequired | Product name. |
slug | string | URL slug; generated from name if omitted. |
status | enum | ENABLED or HIDDEN. |
brandId | integer | Owning brand. |
primaryCategoryId | integer | Primary category. |
categoryIds | integer[] | All categories the product belongs to. |
barcodes | string[] | EAN/UPC barcodes. |
clientItemId | stringkey | Your external product id (SKU). |
hasVariants | 0 | 1 | 1 if the product has multiple variants. |
soldByWeight | 0 | 1 | 1 for loose/weighed items. |
variants | Variant[] | One or more variants (see below). |
metaData | json | Free-form custom attributes. |
/api/catalogue-service/productList products
Paginated. Most filters accept comma-separated values. Pass `storeId` to include each variant’s store price and stock.
| Parameter | Type | Description |
|---|---|---|
organizationIdrequired | integer· query | Your tenant id. |
page | integer· query | Default 1. |
limit | integer· query | Default 20, max 100. |
clientId | string· query | Look up by your SKU(s), comma-separated. |
brandId | integer· query | Filter by brand. |
categoryId | string· query | Category id(s), comma-separated. |
storeId | integer· query | Include store price/stock. |
curl https://zopping.com/api/catalogue-service/product?organizationId=<org-id>&storeId=<store-id> \
-H "Authorization: Bearer $ZOPPING_TOKEN"{
"product": [
{
"id": 10231,
"name": "Tata Salt 1kg",
"slug": "tata-salt-1kg",
"status": "ENABLED",
"brandId": 55,
"clientItemId": "SKU-TATA-SALT-1KG",
"hasVariants": 0,
"variants": [
{
"id": 88120,
"name": "1kg",
"storeSpecificData": [
{
"storeId": "<store-id>",
"stock": 240,
"mrp": 28,
"discount": 2,
"status": "ENABLED"
}
]
}
]
}
],
"count": 1,
"offset": 0,
"limit": 20
}/api/catalogue-service/productCreate a product
Include at least one variant. For a simple product, send a single variant.
curl -X POST https://zopping.com/api/catalogue-service/product \
-H "Authorization: Bearer $ZOPPING_TOKEN" -H "Content-Type: application/json" \
-d '{"organizationId":"<org-id>","name":"Tata Salt 1kg","clientItemId":"SKU-TATA-SALT-1KG","variants":[{"name":"1kg"}]}'{
"organizationId": "<org-id>",
"name": "Tata Salt 1kg",
"status": "ENABLED",
"brandId": 55,
"primaryCategoryId": 1201,
"barcodes": [
"8901030865278"
],
"clientItemId": "SKU-TATA-SALT-1KG",
"variants": [
{
"name": "1kg",
"barcodes": [
"8901030865278"
]
}
]
}{
"product": {
"id": 10231,
"name": "Tata Salt 1kg",
"status": "ENABLED"
}
}/api/catalogue-service/product/{id}Get a product
| Parameter | Type | Description |
|---|---|---|
idrequired | integer· path | Product id. |
storeId | integer· query | Include store price/stock. |
/api/catalogue-service/product/{id}Update a product
/api/catalogue-service/product/{id}Delete a product
Variants
A purchasable variation of a product (size, pack, flavour). Store price and stock are exposed on storeSpecificData.
| Field | Type | Description |
|---|---|---|
id | integerread-only | |
name | stringrequired | e.g. "500g". |
productId | integer | Parent product. |
clientItemId | stringkey | Your external SKU. |
barcodes | string[] | |
status | enum | ENABLED or HIDDEN. |
storeSpecificData | Item[]read-only | Per-store price & stock. |
/api/catalogue-service/variantList variants
| Parameter | Type | Description |
|---|---|---|
organizationIdrequired | integer· query | |
productId | string· query | Product id(s), comma-separated. |
clientItemId | string· query | Your SKU. |
storeId | integer· query |
Brands
Manufacturers/brands a product belongs to.
| Field | Type | Description |
|---|---|---|
id | integerread-only | |
organizationId | stringrequired | |
name | stringrequired | |
slug | string | |
logo | string | Logo URL. |
status | enum | |
productsCount | integerread-only |
/api/catalogue-service/brandList brands
| Parameter | Type | Description |
|---|---|---|
organizationIdrequired | string· query | |
name | string· query | |
status | enum· query |
curl https://zopping.com/api/catalogue-service/brand?organizationId=<org-id> \
-H "Authorization: Bearer $ZOPPING_TOKEN"{
"brand": [
{
"id": 55,
"name": "Tata",
"slug": "tata",
"status": "ENABLED",
"productsCount": 36
}
],
"count": 1
}/api/catalogue-service/brandCreate a brand
/api/catalogue-service/brand/{id}Update a brand
/api/catalogue-service/brand/{id}Delete a brand
Categories
Hierarchical classification. Pass hierarchy=true to receive a nested tree via subCategories.
| Field | Type | Description |
|---|---|---|
id | integerread-only | |
name | stringrequired | |
parentCategoryId | integer | Nest under a parent. |
subCategories | Category[]read-only | |
status | enum | |
productsCount | integerread-only |
/api/catalogue-service/categoryList categories
| Parameter | Type | Description |
|---|---|---|
organizationIdrequired | string· query | |
hierarchy | boolean· query | Return a nested tree. |
curl https://zopping.com/api/catalogue-service/category?organizationId=<org-id>&hierarchy=true \
-H "Authorization: Bearer $ZOPPING_TOKEN"{
"data": [
{
"id": 1201,
"name": "Staples",
"parentCategoryId": null,
"productsCount": 120
}
],
"count": 1
}/api/catalogue-service/categoryCreate a category
/api/catalogue-service/category/{id}Update a category
/api/catalogue-service/category/{id}