Products

This page provides examples on how to use the Products module of the EShopBoxSDK to manage products, brands, and inventory.

Basic Setup

Before running any operation, initialize the SDK:

from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()

sdk = EShopBoxSDK(
    workspace=os.getenv('ESHOPBOX_WORKSPACE', ''),
    client_id=os.getenv('ESHOPBOX_CLIENT_ID', ''),
    client_secret=os.getenv('ESHOPBOX_SECRET_ID', ''),
    refresh_token=os.getenv('ESHOPBOX_REFRESH_TOKEN', '')
)

Get All Products

def get_all(sdk):
    params = {
        "fields": "12",
        "ids": "12"
    }
    response = sdk.products.get_all(params)
    print(response)

Get a Single Product

def get(sdk):
    response = sdk.products.get("kw-12")
    print(response)

Create a Product

def create(sdk):
    product_data = {
        "type": "BASE",
        "sku": "73682939-172882-32",
        "groupCode": "73682939-172882",
        "vertical": "APL",
        "brand": "Kapas Kraft",
        "description": "Rust Regular Fit Bundi",
        "specification": [
            "Fragile",
            "Dangerous",
            "Liquid"
        ],
        "additionalNames": {
            "ean": "89027189271829",
            "upc": "87162143127",
            "gtin": "8276174829301",
            "others": ["57182_Brown_32"]
        }
    }
    response = sdk.products.create(product_data)
    print(response)

Update a Product

def update(sdk):
    product_data = {
        "imageUrl": "https://cdn.filestackcontent.com/hdYluVCqSADCASjjjcuaeC.png",
        "mrp": 1499.0,
        "unitPrice": 799.0,
        "hsnCode": "6101112",
        "weight": 167.0,
        "dimensionLength": 5.0,
        "dimensionWidth": 5.0,
        "dimensionHeight": 5.0,
        "dimensionUnit": "cm"
    }
    response = sdk.products.update("73682939-172882-32", product_data)
    print(response)

Delete a Product

def delete(sdk):
    response = sdk.products.delete("73682939-172882-32")
    print(response)

Merge Products

def merge_product(sdk):
    payload = {
        "fromProductESIN": "dgdfgfd",
        "toProductESIN": "sdkdgl"
    }
    response = sdk.products.merge_product(payload)
    print(response)

Product Availability

def product_availability(sdk):
    payload = {
        "esin": "0SGAT12SG25F",
        "channelCode": "CH1234",
        "availability": False
    }
    response = sdk.products.product_availability(payload)
    print(response)

Brand Management

Get All Brands

def get_all_brands(sdk):
    response = sdk.products.get_all_brands()
    print(response)

Get a Brand

def get_brand(sdk):
    response = sdk.products.get_brand("1429")
    print(response)

Create a Brand

def create_brand(sdk):
    payload = {
        "brandName": "SAKIB",
        "verticals": [
            {
                "verticalId": "1",
                "verticalName": "apparels",
                "verticalCode": "apl",
                "mainImage": "abc.jpg",
                "hoverImage": "abc.jpg"
            },
            {
                "verticalId": "2",
                "verticalName": "footwear",
                "verticalCode": "ftq",
                "mainImage": "abc.jpg",
                "hoverImage": "abc.jpg"
            }
        ],
        "accountId": "123",
        "brandCode": "ABC123",
        "brandStatus": "1",
        "webSiteLink": "http://Kapas Kraft",
        "brandLogoImage": "Kpas Kraft logo.jpg",
        "tmRegistrationStatus": "abc",
        "tmCertificateScannedCopy": "URL",
        "tAckNo": "1",
        "tmRegistrationNo": "123",
        "tmRegistrationDate": "2019-03-20 00:00:00",
        "tmAckCert": "URL"
    }
    response = sdk.products.create_brand(payload)
    print(response)

Update a Brand

def update_brand(sdk):
    payload = {
        "brandName": "SAKIB",
        "verticals": [
            {
                "verticalId": "1",
                "verticalName": "apparels",
                "verticalCode": "apl",
                "mainImage": "abc.jpg",
                "hoverImage": "abc.jpg"
            },
            {
                "verticalId": "2",
                "verticalName": "footwear",
                "verticalCode": "ftq",
                "mainImage": "abc.jpg",
                "hoverImage": "abc.jpg"
            }
        ],
        "accountId": "XXX",
        "brandCode": "ABC123",
        "brandStatus": "1",
        "webSiteLink": "XXXXXXXXXXXX Kraft",
        "brandLogoImage": "Kpas Kraft logo.jpg",
        "tmRegistrationStatus": "abc",
        "tmCertificateScannedCopy": "URL",
        "tAckNo": "1",
        "tmRegistrationNo": "123",
        "tmRegistrationDate": "2019-03-20 00:00:00",
        "tmAckCert": "URL"
    }
    response = sdk.products.update_brand("6312", payload)
    print(response)

Inventory APIs

Inventory for Given Product (V1)

def get_inventory_for_given_product_v1(sdk):
    payload = {"skus": ["kw-100"]}
    response = sdk.products.get_inventory_for_given_product_v1(payload)
    print(response)

Inventory for Given Product (V2)

def get_inventory_for_given_product_v2(sdk):
    params = {"page": 1}
    response = sdk.products.get_inventory_for_given_product_v2(params)
    print(response)

Inventory Summary

def get_inventory_summary(sdk):
    params = {"warehouseId": 1}
    response = sdk.products.get_inventory_summary(params)
    print(response)

Running the Example

if __name__ == "__main__":
    main()