Zopping
API reference

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.

Base URLhttps://zopping.com

Products

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.

Fields
FieldTypeDescription
idintegerread-onlyZopping product id.
organizationIdstringrequiredYour tenant id.
namestringrequiredProduct name.
slugstringURL slug; generated from name if omitted.
statusenumENABLED or HIDDEN.
brandIdintegerOwning brand.
primaryCategoryIdintegerPrimary category.
categoryIdsinteger[]All categories the product belongs to.
barcodesstring[]EAN/UPC barcodes.
clientItemIdstringkeyYour external product id (SKU).
hasVariants0 | 11 if the product has multiple variants.
soldByWeight0 | 11 for loose/weighed items.
variantsVariant[]One or more variants (see below).
metaDatajsonFree-form custom attributes.
GET/api/catalogue-service/product

List products

Paginated. Most filters accept comma-separated values. Pass `storeId` to include each variant’s store price and stock.

Parameters
ParameterTypeDescription
organizationIdrequiredinteger· queryYour tenant id.
pageinteger· queryDefault 1.
limitinteger· queryDefault 20, max 100.
clientIdstring· queryLook up by your SKU(s), comma-separated.
brandIdinteger· queryFilter by brand.
categoryIdstring· queryCategory id(s), comma-separated.
storeIdinteger· queryInclude store price/stock.
Request
curl https://zopping.com/api/catalogue-service/product?organizationId=<org-id>&storeId=<store-id> \
  -H "Authorization: Bearer $ZOPPING_TOKEN"
Response
{
  "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
}
POST/api/catalogue-service/product

Create a product

Include at least one variant. For a simple product, send a single variant.

Request
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"}]}'
Request body
{
  "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"
      ]
    }
  ]
}
Response
{
  "product": {
    "id": 10231,
    "name": "Tata Salt 1kg",
    "status": "ENABLED"
  }
}
GET/api/catalogue-service/product/{id}

Get a product

Parameters
ParameterTypeDescription
idrequiredinteger· pathProduct id.
storeIdinteger· queryInclude store price/stock.
PUT/api/catalogue-service/product/{id}

Update a product

DELETE/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.

Fields
FieldTypeDescription
idintegerread-only
namestringrequirede.g. "500g".
productIdintegerParent product.
clientItemIdstringkeyYour external SKU.
barcodesstring[]
statusenumENABLED or HIDDEN.
storeSpecificDataItem[]read-onlyPer-store price & stock.
GET/api/catalogue-service/variant

List variants

Parameters
ParameterTypeDescription
organizationIdrequiredinteger· query
productIdstring· queryProduct id(s), comma-separated.
clientItemIdstring· queryYour SKU.
storeIdinteger· query

Brands

Manufacturers/brands a product belongs to.

Fields
FieldTypeDescription
idintegerread-only
organizationIdstringrequired
namestringrequired
slugstring
logostringLogo URL.
statusenum
productsCountintegerread-only
GET/api/catalogue-service/brand

List brands

Parameters
ParameterTypeDescription
organizationIdrequiredstring· query
namestring· query
statusenum· query
Request
curl https://zopping.com/api/catalogue-service/brand?organizationId=<org-id> \
  -H "Authorization: Bearer $ZOPPING_TOKEN"
Response
{
  "brand": [
    {
      "id": 55,
      "name": "Tata",
      "slug": "tata",
      "status": "ENABLED",
      "productsCount": 36
    }
  ],
  "count": 1
}
POST/api/catalogue-service/brand

Create a brand

PUT/api/catalogue-service/brand/{id}

Update a brand

DELETE/api/catalogue-service/brand/{id}

Delete a brand

Categories

Hierarchical classification. Pass hierarchy=true to receive a nested tree via subCategories.

Fields
FieldTypeDescription
idintegerread-only
namestringrequired
parentCategoryIdintegerNest under a parent.
subCategoriesCategory[]read-only
statusenum
productsCountintegerread-only
GET/api/catalogue-service/category

List categories

Parameters
ParameterTypeDescription
organizationIdrequiredstring· query
hierarchyboolean· queryReturn a nested tree.
Request
curl https://zopping.com/api/catalogue-service/category?organizationId=<org-id>&hierarchy=true \
  -H "Authorization: Bearer $ZOPPING_TOKEN"
Response
{
  "data": [
    {
      "id": 1201,
      "name": "Staples",
      "parentCategoryId": null,
      "productsCount": 120
    }
  ],
  "count": 1
}
POST/api/catalogue-service/category

Create a category

PUT/api/catalogue-service/category/{id}

Update a category

DELETE/api/catalogue-service/category/{id}

Delete a category

Tags

Cross-cutting labels (e.g. "Best Seller") used for merchandising and filtering.

Fields
FieldTypeDescription
idintegerread-only
namestringrequired
typestringe.g. PUBLIC.
filterableboolean
GET/api/catalogue-service/tag

List tags

Parameters
ParameterTypeDescription
organizationIdrequiredstring· query
POST/api/catalogue-service/tag

Create a tag