Python SDK for EShopBox Shipping APIs
Project description
EShopBox Python SDK
A comprehensive Python SDK for integrating with EShopBox Shipping APIs.
Installation
pip install eshopbox-sdk
Quick Start
from eshopbox import EShopBoxSDK
sdk = EShopBoxSDK(
workspace="your-workspace",
client_id="your-client-id",
client_secret="your-client-secret",
refresh_token="your-refresh-token"
)
# Create an order
order = sdk.orders.create({...})
Documentation
create an Order
"""
Example: Setup order using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def get_all_orders(sdk):
params = {
'filters': 'account=kashwork-ecommerce'
}
response = sdk.orders.get_all(page=1, **params)
print("Response: ", response)
def get_order(sdk):
response = sdk.orders.get('OD119208447831346001')
print("Response: ", response)
def create_order(sdk):
order = {
"externalChannelID": os.getenv('ESHOPBOX_EXTERNAL_CHANNEL_ID'),
"customerOrderNumber": "OD119208447831346002",
"orderDate": "2020-02-29 15:39:11",
"isCOD": "0",
"paymentType": "DebitCard",
"shipChargeAmount": 0,
"subtotal": 4049.09,
"orderTotal": 4049.09,
"balanceDue": 0,
"thirdPartyShipping": False,
"shippingAddress": {
"customerName": "Sakib Malik",
"addressLine1": "D151",
"addressLine2": "industrail Area",
"city": "mohali",
"state": "Punjab",
"postalCode": "160071",
"gstin": "27ABCGN5397X1XX",
"countryCode": "IN",
"countryName": "India",
"contactPhone": "xxxxxxxxxx",
"email": "xxxxxxxxxxxxxxx@gmail.com"
},
"billingAddress": {
"customerName": "Sakib Malik",
"addressLine1": "D151",
"addressLine2": "industrail Area",
"city": "mohali",
"state": "Punjab",
"postalCode": "160071",
"countryCode": "IN",
"countryName": "India",
"contactPhone": "xxxxxxxxxx",
"email": "xxxxxxxxxxxxxxx@gmail.com"
},
"items": [
{
"lineItemSequenceNumber": 100,
"itemID": "KW-100",
"sellerSkuOnChannel": "KW-123",
"productName": "Keyboard",
"quantity": 1,
"customerPrice": 4499,
"discount": 449.89,
"lineItemTotal": 4049.09,
"mrp": 6000,
"productAdditionalInfo": {
"size": "",
"color": "",
"weight": 20.99,
"height": 12.13,
"length": 11.13,
"width": 8.13,
"taxPercentage": 12.00,
"hsnCode": "HSN1324"
},
"productUrl": "https://kashwork.com/d/jewellery/imitation_jewellery/women_imitation_jewellery_/women_necklace_sets/dabka_jewellery_set/161291130/598744146",
"productImageUrl": "https://kw-live.s3.amazonaws.com/media/post_images/upload/product_pic_d4bda7fb-e2f1-4061-b2ef-e4a5bd7618b8.webp"
}
]
}
response = sdk.orders.create(order)
print("Response: ", response)
def update_order(sdk):
pass
def cancel_order(sdk):
cancel_data = {
"externalChannelID": os.getenv('ESHOPBOX_EXTERNAL_CHANNEL_ID'),
"customerOrderNumber": "OD119208447831346002",
"actor": "xxxxxxxxxxxxxxx@gmail.com",
"reason": "Cancelled By Customer",
"cancellationTime": "2018-07-08 22:00:05",
"items": [
{
"lineItemSequenceNumber": 100,
"itemID": "KW-100",
"quantity": 1,
"productName": "Keyboard",
"remark": "cancelled by customer"
}
]
}
response = sdk.orders.cancel(cancel_data)
print("Response: ", response)
def get_invoice(sdk):
response = sdk.orders.get_invoice('OD119208447831346002')
print("Response: ", response)
def main():
# Initialize SDK
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_orders(sdk)
# get_order(sdk)
# create_order(sdk)
# cancel_order(sdk)
get_invoice(sdk)
if __name__ == "__main__":
main()
inventory
"""
Example: Manage Inventory using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def main():
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', '')
)
sku = "SKU1234"
print(f"Fetching inventory for {sku}...")
inventory = sdk.inventory.get_stock(sku)
print("Current stock:", inventory)
print(f"Updating inventory for {sku}...")
update_payload = {
"sku": sku,
"quantity": 25
}
updated = sdk.inventory.update_stock(update_payload)
print("Updated stock:", updated)
if __name__ == "__main__":
main()
Order Status Update
"""
Example: Track shipment using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def create_label_and_awb(sdk):
payload = {
"boxHeight": 2,
"boxLength": 2,
"boxWidth": 2,
"weight": 2,
"orderItems": [
{
"orderItemId": "49252941",
"invoiceNumber": "string",
"invoiceDate": "2017-01-02T08:12:53",
"taxRate": 0,
"centralGstPercentage": 0,
"compensationCessPercentage": 0,
"integratedGstPercentage": 0,
"stateGstPercentage": 0,
"unionTerritoryGstPercentage": 0
}
]
}
order_status_update = sdk.order_status_update.create_label_and_awb(payload)
print(order_status_update)
def get_awb_and_courier_name(sdk):
params = {
"orderItemIds": "49252941,49252802"
}
order_status_update = sdk.order_status_update.get_awb_and_courier_name(params)
print(order_status_update)
def dispatch_shipment(sdk):
payload = {
"orderItems": [
{
"orderItemId": "49252941",
"quantity": 1,
"centralGstPercentage": 0,
"compensationCessPercentage": 0,
"integratedGstPercentage": 0,
"stateGstPercentage": 0,
"taxRate": 0,
"unionTerritoryGstPercentage": 0
}
],
"selfShipping": {
"deliveryPartner": "ecomExpress",
"dispatchDate": "2017-01-02T08:12:53",
"invoiceDate": "2017-01-02T08:12:53",
"invoiceNumber": "string",
"tentativeDeliveryDate": "2017-01-02T08:12:53",
"trackingId": "123455"
}
}
order_status_update = sdk.order_status_update.dispatch_shipment(payload)
print(order_status_update)
def courier_details_for_return(sdk):
order_status_update = sdk.order_status_update.courier_details_for_return("R2113455")
print(order_status_update)
def update(sdk):
payload = {
"status_description": "Delivered",
"waybill": "1704610028453",
"cp_name": "Delhivery",
"status": "Delivered",
"status_code": 8,
"location": "GGN_DPC (Haryana)",
"additional": {
"latest_status": {
"status_description": "Delivered",
"remark": "Added to IST",
"status": "In Transit",
"status_code": 8,
"location": "GGN_DPC (Haryana)",
"timestamp": "2018-07-12T12:58:40.910000Z"
}
},
"timestamp": "2018-07-12T11:53:39.902000Z",
"remark": "Bagged at destination city PC"
}
order_status_update = sdk.order_status_update.update(payload)
print(order_status_update)
def main():
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', '')
)
# create_label_and_awb(sdk)
# get_awb_and_courier_name(sdk)
# dispatch_shipment(sdk)
# courier_details_for_return(sdk)
update(sdk)
if __name__ == "__main__":
main()
Payment
"""
Example: Setup Wrapper using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def get_payouts(sdk):
response = sdk.payments.get_payouts()
print(response)
def get_payout(sdk):
params = {
"neftId": "neftId"
}
response = sdk.payments.get_payout(params)
print(response)
def create_payout(sdk):
payload = {
"fundTransferDate": "2018-09-25 05:30:00",
"fundTransferAmount": 819901.7199999853,
"transactionId": "lime3",
"comments": "Limeroad Testing",
"ledgerGroupId": "limeroad",
"portalAccountId": 122,
"reportUrl": "https://cdn.filestackcontent.com/ckdksjkasl676678687as"
}
response = sdk.payments.create_payout(payload)
print(response)
def update_fee(sdk):
payload = {
"portalId": 3,
"feeId": "40",
"feeName": None,
"isInclusiveTax": "0",
"inclusiveTaxPercentage": "63",
"chargedFee": "cancelled",
"chargedFeeCases": "",
"courierReturnedFee": "",
"courierReturnedPercent": "",
"customerReturnedFee": "",
"customerReturnedPercent": "",
"validityPeriod": "definite",
"validFrom": "2019-09-09",
"validTo": "2019-09-11",
"fee": [
{
"eventType": "shipped",
"eventSubType": "",
"partialPercentageValue": "",
"feeCharged": "CHARGED_FEE"
},
{
"eventType": "returned",
"eventSubType": "courier",
"partialPercentageValue": "",
"feeCharged": "REVERSED_FEE"
},
{
"eventType": "returned",
"eventSubType": "customer",
"partialPercentageValue": "",
"feeCharged": "REVERSED_FEE"
}
],
"feeRules": [
{
"details": {
"shippingZone": "regional"
},
"feeValues": [
{
"type": "fixed",
"value": 2,
"applicableOn": "Per Order",
"id": 1
}
]
}
],
"id": 603,
"ruleId": "5d7a4867ad0cf20001e527df",
"forRevision": True
}
response = sdk.payments.update_fee(payload)
print(response)
def create_fee(sdk):
payload = {
"portalId": 2,
"feeId": "1",
"feeName": "",
"isInclusiveTax": "0",
"inclusiveTaxPercentage": "11",
"chargedFee": "cancelled",
"chargedFeeCases": "",
"courierReturnedFee": "",
"courierReturnedPercent": "",
"customerReturnedFee": "",
"customerReturnedPercent": "",
"fee": [
{
"eventType": "cancelled",
"eventSubType": "",
"feeCharged": "CHARGED_FEE"
}
],
"feeRules": [
{
"details": {},
"feeRanges": [
{
"rangeType": "product selling price",
"rangeTypeUnit": "INR",
"minRange": 0,
"maxRange": 100
}
],
"feeValues": [
{
"type": "fixed",
"partitionRangeType": None,
"value": 12,
"applicableOn": "Per Order",
"partitionRange": None
}
]
}
],
"validFrom": "2019-09-01T00:00:00.000Z",
"feePortalId": "145",
"validityPeriod": "definite",
"ruleId": "5d7f2b78ad0cf200017cebbb"
}
response = sdk.payments.create_fee(payload)
print(response)
def get_all_fee(sdk):
response = sdk.payments.get_all_fee()
print(response)
def get_fee(sdk):
params = {
"feeName": "amazon",
}
response = sdk.payments.get_fee(params)
print(response)
def get_all_transaction_rules(sdk):
response = sdk.payments.get_all_transaction_rules()
print(response)
def get_transaction_rule(sdk):
params = {
"channelId": 12,
}
response = sdk.payments.get_transaction_rule(params)
print(response)
def create_transaction_rule(sdk):
payload = {
"ruleName": "TR2",
"channelId": "12",
"feeId": [
"1",
"3",
"5"
],
"dueDays": "7",
"settlementType": "weekly",
"settlementDates": "",
"settlementWeekdays": "Thursday",
"transactionRuleId": "",
"status": "",
"portalId": 2,
"transactionId": 3
}
response = sdk.payments.create_transaction_rule(payload)
print(response)
def update_transaction_rule(sdk):
payload = {
"channelId": "262",
"feeId": [
"33"
],
"dueDays": "4",
"settlementType": "weekly",
"settlementDates": "2",
"settlementWeekdays": "Monday,Tuesday",
"transactionRuleId": "47",
"status": True,
"ruleName": "abcd",
"transactionId": 3
}
response = sdk.payments.update_transaction_rule(payload)
print(response)
def main():
# Initialize SDK
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_payouts(sdk)
# get_payout(sdk)
# create_payout(sdk)
# update_fee(sdk)
# create_fee(sdk)
# get_all_fee(sdk)
# get_fee(sdk)
# get_all_transaction_rules(sdk)
get_transaction_rule(sdk)
# create_transaction_rule(sdk)
# update_transaction_rule(sdk)
if __name__ == "__main__":
main()
Products
"""
Example: Setup Wrapper using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def get_all(sdk):
params = {
"fields": "12",
"ids": "12"
}
response = sdk.products.get_all(params)
print(response)
def get(sdk):
response = sdk.products.get("kw-12")
print(response)
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)
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)
def delete(sdk):
response = sdk.products.delete("73682939-172882-32")
print(response)
def merge_product(sdk):
payload = {
"fromProductESIN": "dgdfgfd",
"toProductESIN": "sdkdgl"
}
response = sdk.products.merge_product(payload)
print(response)
def product_availability(sdk):
payload = {
"esin": "0SGAT12SG25F",
"channelCode": "CH1234",
"availability": False
}
response = sdk.products.product_availability(payload)
print(response)
def get_all_brands(sdk):
response = sdk.products.get_all_brands()
print(response)
def get_brand(sdk):
response = sdk.products.get_brand("1429")
print(response)
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)
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)
def get_inventory_for_given_product_v1(sdk):
payload = {
"skus": [
"kw-100"
]
}
response = sdk.products.get_inventory_for_given_product_v1(payload)
print(response)
def get_inventory_for_given_product_v2(sdk):
params = {
"page": 1
}
response = sdk.products.get_inventory_for_given_product_v2(params)
print(response)
def get_inventory_summary(sdk):
params = {
"warehouseId": 1
}
response = sdk.products.get_inventory_summary(params)
print(response)
def main():
# Initialize SDK
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(sdk)
# get(sdk)
# create(sdk)
# update(sdk)
# delete(sdk)
# merge_product(sdk)
# product_availability(sdk)
# get_all_brands(sdk)
# get_brand(sdk)
# create_brand(sdk)
# update_brand(sdk)
# get_inventory_for_given_product_v1(sdk)
# get_inventory_for_given_product_v2(sdk)
get_inventory_summary(sdk)
if __name__ == "__main__":
main()
Rate Calculator
"""
Example: Setup Rate Calculator using EShopBox SDK
"""
import os
from eshopbox.client import EShopBoxSDK
from dotenv import load_dotenv
load_dotenv()
def rate_calculator(sdk):
payload = {
"journeyType": "forward",
"pickupPincode": "160071",
"dropPincode": "247342",
"orderWeight": "500",
"length": "12",
"width": "12",
"height": "33",
"paymentMethod": "Prepaid",
"doorstepQc": False
}
response = sdk.rate_calculator.calculate(payload)
print("Response: ", response)
def main():
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', '')
)
rate_calculator(sdk)
if __name__ == "__main__":
main()
Serviceability
"""
Example: Setup Serviceability using EShopBox SDK
"""
import os
from eshopbox.client import EShopBoxSDK
from dotenv import load_dotenv
load_dotenv()
def get_serviceability_pin_code_based(sdk):
payload = {
"dropPincode": "160071",
"pickupPincode": "247342",
"deadWeight": 500,
"length": 12,
"height": 10,
"width": 8,
"isCod": False
}
response = sdk.serviceability.pincodeserviceability(payload)
print("Response: ", response)
def get_productserviceability(sdk):
payload = {
"dropPincode": "160071",
"productId": "sakib"
}
response = sdk.serviceability.productserviceability(payload)
print("Response: ", response)
def get_checkpincodeserviceability(sdk):
payload = {
"deliveryPincode": "160071",
"pickupPincode": "247342"
}
response = sdk.serviceability.checkpincodeserviceability(payload)
print("Response: ", response)
def get_get_bulk_pin_code_serviceability(sdk):
params = {
"shippingMode": "standard"
}
response = sdk.serviceability.bulkPincodeServiceability(params)
print("Response: ", response)
def main():
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_serviceability_pin_code_based(sdk)
# get_productserviceability(sdk)
# get_checkpincodeserviceability(sdk)
get_get_bulk_pin_code_serviceability(sdk)
if __name__ == "__main__":
main()
Shipment
"""
Example: Track shipment using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def get_all_shipments(sdk):
shipments = sdk.shipments.get_all()
print(shipments)
def get_shipment(sdk):
shipment = sdk.shipments.get("OD119208447831346000-4380-3659")
print(shipment)
def create_shipment(sdk):
payload = {
"customerOrderNumber": "OD119208447831346000",
"vendorOrderNumber": "OD119208447831346000",
"externalShipmentID": "300884672-5-87",
"externalWarehouseID": "W4585",
"externalChannelID": "{{externalChannelID}}",
"defaultWarehouseCode": "2022",
"orderDate": "2020-03-18 15:52:38",
"portal_id": 12,
"paymentType": "COD",
"expectedShipDate": None,
"externalManifestNumber": None,
"channelManifestNumber": None,
"order_id": 1576882,
"channel_id": 271,
"warehouse_id": 21,
"channel_account_id": None,
"account_id": 6,
"region": "Local",
"picklistCode": None,
"invoiceNumber": "SESI1687",
"boxType": "UNKNOWN",
"isPriorityShipment": "0",
"isGift": "0",
"invoice_url": "",
"invoiceDate": "2020-03-19 00:00:00",
"label_url": "https://pyck-res-bucket.s3.amazonaws.com:443/DELHIVERY/2020-03-18/2098310486496.pdf",
"labels": "",
"shippingInfo": [],
"boxAdditionalRecommendation": [],
"dimension_length": "10",
"dimension_width": "20",
"dimension_height": "12",
"weight": "1231",
"trackingID": "2098310486496",
"packageID": "",
"barcode": "",
"courierName": "Delhivery",
"created_at": "2020-03-18 21:22:57",
"updated_at": "2020-03-19 01:54:20",
"status": "intransit",
"remarks": "shipment picked up from client location",
"customerName": "Sakib Malik",
"customerContactNumber": "xxxxxxxxxx",
"email": "xxxxxxxxxxxxxxx@gmail.com",
"channelSlug": "blackberrys",
"status_updated_at": "2020-03-19 14:50:29",
"status_log": {
"intransit": "2020-03-19 14:50:29",
"dispatched": "2020-03-19 06:30:34",
"packed": "2020-03-19 01:54:23",
"created": "2020-03-18 21:22:57"
},
"orderExternalCreatedAt": "2020-03-18 21:22:52",
"shippingAddress": {
"customerName": "Sakib Malik",
"addressLine1": "D151",
"addressLine2": "industrail Area",
"city": "Mohali",
"state": "Punjab",
"postalCode": "160071",
"countryCode": "IN",
"countryName": "India",
"contactPhone": "xxxxxxxxxx",
"email": "xxxxxxxxxxxxxxx@gmail.com"
},
"id": 1583574,
"isCOD": "1",
"track_payload": {
"clickPostTrackData": {
"status": "In Transit",
"clickpost_status_description": "InTransit",
"waybill": "2098310486496",
"account_code": "Delhivery Surface",
"location": "Gurgaon_Bilaspur_P (Haryana)",
"clickpost_status_code": 5,
"remark": "Shipment Picked Up from Client Location",
"cp_id": 4,
"timestamp": "2020-03-19T13:48:28Z",
"additional": {
"latest_status": {
"clickpost_status_bucket_description": "In transit",
"clickpost_status_description": "InTransit",
"reference_number": "BLCK103443-271-49",
"clickpost_status_bucket": 3,
"status": "In Transit",
"location": "Gurgaon_Bilaspur_P (Haryana)",
"clickpost_status_code": 5,
"remark": "Shipment Picked Up from Client Location",
"timestamp": "2020-03-19T13:48:28Z"
},
"destination_hub_inscan_ts": None,
"courier_partner_edd": None,
"is_rvp": None
}
}
},
"packed_date": "2020-03-19 01:54:23",
"items": [
{
"id": 49252802,
"lineItemSequenceNumber": 112988,
"orderItemID": "OD119208447831346000-49252802",
"itemID": "DB9U03FMGWZ",
"sku": "2316W3I7KID",
"productName": "Pace Barnes",
"quantity": 1,
"customerPrice": 4499,
"discount": 449.89,
"lineItemTotal": 4049.09,
"taxRate": 12,
"taxAmount": 0,
"giftMessage": "",
"giftLabelContent": "",
"cancellationReason": "",
"cancellationTime": "0000-00-00 00:00:00",
"original_order_item_id": None,
"isVirtualKit": "0",
"productAdditionalInfo": {
"size": None,
"color": None,
"weight": 20.99,
"height": 12.13,
"length": 11.13,
"width": 8.13,
"taxPercentage": 12,
"hsnCode": "HSN1324",
"productDetails": {
"hsnCode": "HSN1324",
"dimensionHeight": 12.13,
"dimensionLength": 11.13,
"description": "Pace Barnes",
"weight": 20.99,
"mrp": 6000,
"dimensionWidth": 8.13,
"type": "BASE",
"taxCode": "ESBGST9",
"imageUrl": "https://s3-eu-west-1.amazonaws.com/imagebucketeshopbox/Uzip/219045371-1-40/1.JPG",
"accountSlug": "kashwork-ecommerce",
"sku": "ABD-123",
"esin": "2316W3I7KID",
"status": "DRAFT",
"weightUnit": "g"
}
},
"productImageUrl": "https://s3-eu-west-1.amazonaws.com/imagebucketeshopbox/Uzip/219045371-1-40/1.JPG",
"productUrl": "https://montecarlo.auperator.co/product/edit-product/BBAPLMC144105_44",
"invoiceTotal": 4049.09,
"shippingCharges": 0,
"giftWrapCharges": 0,
"cashOnDeliveryCharges": 0
}
],
}
shipment = sdk.shipments.create(payload)
print(shipment)
def update(sdk):
shipment = sdk.shipments.update("OD119208447831346000-4380-3659", "dispatched")
print(shipment)
def main():
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_shipments(sdk)
# get_shipment(sdk)
# create_shipment(sdk)
update(sdk)
if __name__ == "__main__":
main()
Webhook
"""
Example: Setup webhook using EShopBox SDK
"""
import os
from eshopbox.client import EShopBoxSDK
from dotenv import load_dotenv
load_dotenv()
def get_all_webhooks(sdk):
print("Getting all webhooks...")
response = sdk.webhooks.list()
print("Webhooks retrieved successfully!")
print(response)
def get_webhooks(sdk, id):
print("Getting specific webhooks...")
response = sdk.webhooks.get(id)
print("Webhooks retrieved successfully!")
print(response)
def create_webhooks(sdk):
print("Creating webhook...")
webhook_data = {
"resource": "user_invitation",
"eventType": "POST",
"eventSubType": "created",
"version": "v1",
"externalChannelID": os.getenv('ESHOPBOX_EXTERNAL_CHANNEL_ID', ''),
"webhookUrl": "https://api-dev.kashwork.com/api/shipping/eshopbox/webhook",
"webhookMethod": "POST",
"accountSlug": os.getenv('ESHOPBOX_WORKSPACE', '')
}
response = sdk.webhooks.create(webhook_data)
print("Webhook created successfully!")
print(response)
def update_webhooks(sdk, id):
print("Updating webhook...")
webhook_data = {
"id": id,
"resource": "channel_inventory",
"eventType": "POST",
"eventSubType": "created",
"version": "v1",
"externalChannelID": os.getenv('ESHOPBOX_EXTERNAL_CHANNEL_ID', ''),
"webhookUrl": "https://api-dev.kashwork.com/api/shipping/eshopbox/webhook",
"webhookMethod": "POST",
"accountSlug": os.getenv('ESHOPBOX_WORKSPACE', '')
}
response = sdk.webhooks.update(webhook_data)
print("Webhook updated successfully!")
print(response)
def main():
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_webhooks(sdk)
# get_webhooks(sdk, '105322')
# create_webhooks(sdk)
update_webhooks(sdk, '105322')
if __name__ == "__main__":
main()
Wrapper
"""
Example: Setup Wrapper using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def order(sdk):
payload = {
"channelId": os.getenv('ESHOPBOX_EXTERNAL_CHANNEL_ID'),
"customerOrderId": "OD119208447831346001",
"shipmentId": "OD119208447831346001-4380-3659",
"orderDate": "2024-01-01 09:00:00",
"isCOD": True,
"invoiceTotal": 4049.09,
"shippingMode": "Eshopbox Standard",
"invoice": {
"number": "C00011323A000002",
"date": "2024-01-04 09:00:00"
},
"ewaybillNumber": "123422267332",
"balanceDue": 0,
"shippingAddress": {
"customerName": "Sakib Malik",
"addressLine1": "D151",
"addressLine2": "industrail Area",
"city": "Mohali",
"state": "Punjab",
"postalCode": "160071",
"countryCode": "IN",
"country": "India",
"contactPhone": "xxxxxxxxxx",
"email": "xxxxxxxxxxxxxxx@gmail.com",
"gstin": "344633257673"
},
"billingIsShipping": True,
"billingAddress": {
"customerName": "Sakib Malik",
"addressLine1": "D151",
"addressLine2": "industrail Area",
"city": "Mohali",
"state": "Punjab",
"postalCode": "160071",
"countryCode": "IN",
"countryName": "India",
"contactPhone": "xxxxxxxxxx",
"email": "xxxxxxxxxxxxxxx@gmail.com"
},
"items": [
{
"id": 49252941,
"lineItemSequenceNumber": 100,
"orderItemID": "OD119208447831346001-49252941",
"itemID": "KW-100",
"sku": "23YCU3I7KIF",
"productName": "Keyboard",
"quantity": 1,
"customerPrice": 4499,
"discount": 449.89,
"lineItemTotal": 4049.09,
"taxRate": 12,
"taxAmount": 0,
"giftMessage": "",
"giftLabelContent": "",
"cancellationReason": "",
"cancellationTime": "0000-00-00 00:00:00",
"original_order_item_id": None,
"isVirtualKit": "0",
"productAdditionalInfo": {
"size": None,
"color": None,
"weight": 20.99,
"height": 12.13,
"length": 11.13,
"width": 8.13,
"taxPercentage": 12,
"hsnCode": "HSN1324",
"productDetails": {
"hsnCode": "HSN1324",
"dimensionHeight": 12.13,
"dimensionLength": 11.13,
"description": "Keyboard",
"weight": 20.99,
"mrp": 6000,
"dimensionWidth": 8.13,
"type": "BASE",
"taxCode": "ESBGST9",
"imageUrl": "https://kw-live.s3.amazonaws.com/media/post_images/upload/product_pic_d4bda7fb-e2f1-4061-b2ef-e4a5bd7618b8.webp",
"accountSlug": "kashwork-ecommerce",
"sku": "KW-123",
"esin": "23YCU3I7KIF",
"status": "DRAFT",
"weightUnit": "g"
}
},
"productImageUrl": "https://kw-live.s3.amazonaws.com/media/post_images/upload/product_pic_d4bda7fb-e2f1-4061-b2ef-e4a5bd7618b8.webp",
"productUrl": "https://kashwork.com/d/jewellery/imitation_jewellery/women_imitation_jewellery_/women_necklace_sets/dabka_jewellery_set/161291130/598744146",
"invoiceTotal": 4049.09,
"shippingCharges": 0,
"giftWrapCharges": 0,
"cashOnDeliveryCharges": 0
}
],
"shipmentDimension": {
"length": 13.12,
"breadth": 15.32,
"height": 56.39,
"weight": 201.23
},
"pickupLocation": {
"locationCode": "MCFL00395",
"locationName": "TEST Warehouse",
"companyName": "TEST",
"contactPerson": "SAM",
"contactNumber": "898898989",
"addressLine1": "Khasra no 5/16/2,17, Near Subash Chowk, Sohana Road Village Behrampur",
"addressLine2": "Khasra no 5/16/2,17, Near Subash Chowk",
"city": "Gurgaon",
"state": "HARYANA",
"country": "India",
"pincode": "121005",
"gstin": "06AAFCM7888Q1ZE"
},
"package": {
"type": "box",
"code": "PC20240613141533",
"description": "Test1",
"length": 45.00,
"breadth": 54.13,
"height": 45.22,
"weight": 45.80
}
}
response = sdk.wrapper.order(payload)
print("Response: ", response)
def shipping_return(sdk):
payload = {
"channelId": "KAPAS KRAFT",
"customerOrderId": "OD119208447831346000",
"shipmentId": "2313ewqwre",
"orderDate": "2020-02-29 15:39:11",
"isCOD": True,
"invoiceTotal": 4049.09,
"shippingMode": "Standard",
"invoice": {
"number": "C00011323A000002",
"date": "2023-06-02 15:39:11"
},
"ewaybillNumber": "",
"shippingAddress": {
"locationCode": "MCFL00395",
"locationName": "TEST Warehouse",
"companyName": "TEST",
"contactPerson": "SAM",
"contactNumber": "898898989",
"addressLine1": "Khasra no 5/16/2,17, Near Subash Chowk, Sohana Road Village Behrampur",
"addressLine2": "Khasra no 5/16/2,17, Near Subash Chowk",
"city": "Gurgaon",
"pincode": "121005",
"state": "HARYANA",
"country": "India",
"gstin": "06AAFCM7888Q1ZE"
},
"items": [
{
"itemID": "DB9U03FMGWZ",
"productTitle": "Pace Barnes",
"quantity": 1,
"itemTotal": 4049.09,
"hsn": "122132",
"mrp": 2345.98,
"discount": 123,
"taxPercentage": 12.00,
"returnReason": "TEST",
"ean": "2342534",
"length": 12,
"breadth": 18,
"height": 23,
"weight": 100,
"qcDetails": {
"qc_color": "red",
"qc_brand": "duke",
"qc_serial_no": "212324235",
"qc_ean_barcode": "sdsrewrt",
"qc_size": "22",
"qc_product_name": "TEST",
"qc_product_image": "IMG.png",
"qcParamsToCheck": [
"check_price_tag",
"check_packaging_box",
"check_damaged",
"check_used"
]
}
}
],
"returnDimension": {
"length": 13.12,
"breadth": 15.32,
"height": 56.39,
"weight": 201.23
},
"pickupLocation": {
"customerName": "John Doe",
"addressLine1": "Kapas Kraft Apparels Limited",
"addressLine2": "Banglore",
"city": "bengluru",
"state": "Karnataka",
"pincode": "560005",
"country": "India",
"contactPhone": "9998889998",
"email": "johndoe@gmail.com"
}
}
response = sdk.wrapper.shipping_return(payload)
print("Response: ", response)
def cancel_tracking(sdk):
payload = {
"trackingId": "1231244"
}
response = sdk.wrapper.cancel_tracking(payload)
print("Response: ", response)
def tracking_details(sdk):
params = {
"trackingIds": "OD119208447831346000-4380-3659",
}
response = sdk.wrapper.tracking_details(params)
print("Response: ", response)
def main():
# Initialize SDK
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', '')
)
# order(sdk)
# shipping_return(sdk)
# cancel_tracking(sdk)
tracking_details(sdk)
if __name__ == "__main__":
main()
Settings
"""
Example: Setup Wrapper using EShopBox SDK
"""
from eshopbox import EShopBoxSDK
import os
from dotenv import load_dotenv
load_dotenv()
def get_portals(sdk):
response = sdk.settings.get_portals()
print(response)
def create_workspace(sdk):
data = {
"data": {
"accountSlug": "eshop",
"accountName": "Eshopbox"
}
}
response = sdk.settings.create_workspace(data)
print(response)
def get_all_workspace(sdk):
params = {
"page": 1,
"limit": 10
}
response = sdk.settings.get_all_workspace(params)
print(response)
def get_workspace(sdk):
response = sdk.settings.get_workspace()
print(response)
def update_workspace(sdk):
data = {
"data": {
"accountSlug": "eshop",
"accountName": "XXXXXXXX"
}
}
response = sdk.settings.update_workspace(data)
print(response)
def create_sales_channel(sdk):
data = {
"data": {
"portalId": 1,
"integrationModelId": 1,
"channelAccountId": 1,
"fulfillmentChannels": [
{
"warehouseId": 1
},
{
"warehouseId": 2
}
]
}
}
response = sdk.settings.create_sales_channel(data)
print(response)
def update_sales_channel(sdk):
data = {
"data": {
"portalId": 1,
"integrationModelId": 1,
"channelAccountId": 1,
"fulfillmentChannels": [
{
"warehouseId": 1
},
{
"warehouseId": 2
}
]
}
}
response = sdk.settings.update_sales_channel(1, data)
print(response)
def get_all_sales_channel(sdk):
response = sdk.settings.get_all_sales_channel()
print(response)
def get_sales_channel(sdk):
response = sdk.settings.get_sales_channel(4801)
print(response)
def create_fc_submission(sdk):
data = {
"data": {
"warehouseId": "1",
"warehouseName": "TCNS Banglore",
"externalWmsAccountId": "1",
"facility": "BDBLR108",
"operatingModel": "consignment",
"requestDocuments": {
"gstCertificateUrl": "http://abc.com/1.jpg",
"signatureUrl": "http://abc.com/2.jpg",
"companyLogoUrl": "http://abc.com/3.jpg"
}
}
}
response = sdk.settings.create_fc_submission(data)
print(response)
def get_all_fc_submission(sdk):
response = sdk.settings.get_all_fc_submission()
print(response)
def get_fc_submission(sdk):
response = sdk.settings.get_fc_submission(1)
print(response)
def create_contact(sdk):
data = {
"data": {
"contactCode": "1234",
"contactName": "ABC",
"contactEmail": "XXXXXXXXXXXXX",
"contactPhone": "1234567890",
"contactType": "seller",
"contactAddress": "ABC"
}
}
response = sdk.settings.create_contact(data)
print(response)
def update_fc_submission(sdk):
data = {
"data": {
"warehouseId": "1",
"warehouseName": "TCNS Banglore",
"externalWmsAccountId": "1",
"facility": "BDBLR108",
"operatingModel": "consignment",
"requestDocuments": {
"gstCertificateUrl": "XXXXXXXXXXXXXXXXXXXX",
"signatureUrl": "XXXXXXXXXXXXXXXXXXXX",
"companyLogoUrl": "XXXXXXXXXXXXXXXXXXXX"
}
}
}
response = sdk.settings.update_fc_submission(1, data)
print(response)
def get_all_contact(sdk):
response = sdk.settings.get_all_contact()
print(response)
def get_contact(sdk):
params = {
"contactCode": "1234"
}
response = sdk.settings.get_contact(params)
print(response)
def update_contact(sdk):
data = {
"data": {
"contactCode": "1234",
"contactName": "ABC",
"contactEmail": "XXXXXXXXXXXXX",
"contactPhone": "1234567890",
"contactType": "seller",
"contactAddress": "ABC"
}
}
response = sdk.settings.update_contact("1234", data)
print(response)
def create_team_member(sdk):
data = {
"data": {
"userId": 1,
"portalId": 1,
"integrationModelId": 1,
"channelAccountId": 1,
"warehouseId": 1
}
}
response = sdk.settings.create_team_member(data)
print(response)
def update_team_member(sdk):
data = {
"data": {
"userId": 1,
"portalId": 1,
"integrationModelId": 1,
"channelAccountId": 1,
"warehouseId": 1
}
}
response = sdk.settings.update_team_member(1, data)
print(response)
def get_team_member(sdk):
response = sdk.settings.get_team_member(1)
print(response)
def get_all_team_member(sdk):
response = sdk.settings.get_all_team_member()
print(response)
def main():
# Initialize SDK
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_portals(sdk)
# create_workspace(sdk)
# get_all_workspace(sdk)
# get_workspace(sdk)
# update_workspace(sdk)
# create_sales_channel(sdk)
# update_sales_channel(sdk)
# get_all_sales_channel(sdk)
# get_sales_channel(sdk)
# create_fc_submission(sdk)
# get_all_fc_submission(sdk)
# get_fc_submission(sdk)
# update_fc_submission(sdk)
# create_contact(sdk)
# get_all_contact(sdk)
# get_contact(sdk)
# update_contact(sdk)
# create_team_member(sdk)
# update_team_member(sdk)
# get_team_member(sdk)
get_all_team_member(sdk)
if __name__ == "__main__":
main()
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
eshopbox_sdk-1.1.3.tar.gz
(50.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eshopbox_sdk-1.1.3.tar.gz.
File metadata
- Download URL: eshopbox_sdk-1.1.3.tar.gz
- Upload date:
- Size: 50.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78685bb6b0d9de077d44a2d79455ddc0865d89e602585d1f42e84f0543e66aa1
|
|
| MD5 |
854f5f7a16534c5aadee882443b0eb01
|
|
| BLAKE2b-256 |
fe12f2367110fdb590d569e57587fe18be3f2c499c3f5fbf5335395f5727de58
|
File details
Details for the file eshopbox_sdk-1.1.3-py3-none-any.whl.
File metadata
- Download URL: eshopbox_sdk-1.1.3-py3-none-any.whl
- Upload date:
- Size: 42.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e78ffd869ee1e36543d8c9ac7ce11558e7d3053fc3e7877496272028a7d94728
|
|
| MD5 |
af26a332aedc244d9bb66a702464b40d
|
|
| BLAKE2b-256 |
8e065ae4b033074ddef77e5cd6e1208fe16be179c9d835df51f07c8305c7b917
|