Vinculum Integration
Inventory updates:
We will listen to the inventory event from WMS, map the keys from the event according to the vinculum inventory update API and call the API.
GET Warehouse Inventory: We need to call this Get Warehouse Inventory to find out the commitedQty
for a particular SKU
on a particular location_id
POST API:
https://kalkifashion.vineretail.com/RestWS/api/eretail/v4/stock/getWhInventory
Curl Request:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v4/stock/getWhInventory' \
--header 'ApiOwner: Kalki' \
--header 'ApiKey: 131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--header 'Content-Type: application/json' \
--data-raw '{
"skuCodes": [
"GREENTSHIRT_LARGE","GREENTSHIRT_MEDIUM"
],
"buckets":["good"],
"locCode":"TSW"
}'
Response:
{
"responseCode": 0,
"responseMessage": "Success",
"hasMore": false,
"response": [
{
"skuCode": "GREENTSHIRT_LARGE",
"location": "TSW",
"qty": 145.000,
"bucket": "Good",
"committedQty": 5.000
},
{
"skuCode": "GREENTSHIRT_MEDIUM",
"location": "TSW",
"qty": 9.000,
"bucket": "Good",
"committedQty": 2.000
}
]
}
Note: Inventory updates depend upon the value mode
as specified below:
Increase
: This value will be used if we need to increase the count of inventory available on the vinculum store.Decrease
: This value will be used if we need to decrease the count of inventory available on the vinculum store.New
: This value will be used if we need to update the absolute count available on the vinculum store.
Mapping of keys from the inventory event to the update inventory API:
Eshopbox Inventory Event Keys | Vinculum Inventory Update API Keys |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Eshopbox WMS Inventory Event:
{
"account_slug": "kalkifashion",
"account_id": 6,
"externalWmsAccount": "eshopbox",
"publishedAt": "2021-10-28 18:56:20",
"externalChannelID": "CH5775",
"locationId": "TSW",
"channelSlug": "vinculum",
"connectionId": 2371,
"inventoryList": [
{
"changeInStock": 0,
"productId": "GREENTSHIRT_MEDIUM",
"locationInventory": "0",
"locationId": "TSW",
"sellerSku": "GREENTSHIRT_MEDIUM",
"variantId": "GREENTSHIRT_MEDIUM",
"sku": "443UB3GWKFT",
"inventory": "0",
"parentId": "LX-SO-LEWIS # NAVY"
},
{
"changeInStock": 0,
"productId": "GREENTSHIRT_LARGE",
"locationInventory": "10",
"locationId": "TSW",
"sellerSku": "GREENTSHIRT_LARGE",
"variantId": "GREENTSHIRT_LARGE",
"sku": "443UB3GWKFT",
"inventory": "10",
"parentId": "LX-SO-LEWIS # NAVY"
}
],
"message_id": "202110281856192963",
"externalWmsChannelName": "VINCULUM_AGGN_1243",
"externalWarehouseID": "MJPAT_109"
}
POST API:
https://kalkifashion.vineretail.com/RestWS/api/eretail/v4/stock/updateInventory
Curl Request:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v4/stock/updateInventory' \
--header 'ApiKey: 131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--header 'ApiOwner: kalki' \
--header 'Content-Type: application/json' \
--data-raw '{
"items": [
{
"skuCode": "GREENTSHIRT_MEDIUM",
"uomQty": "2",
"bin": "GOOD",
"reason": "MISC",
"mode": "NEW",
"location": "TSW"
},
{
"skuCode": "GREENTSHIRT_LARGE",
"uomQty": "15",
"bin": "GOOD",
"reason": "MISC",
"mode": "NEW",
"location": "TSW"
}
]
}'
Response:
{
"responseCode": 0,
"responseMessage": "Success",
"responseStatus": "SUCCESS",
"items": [
{
"referenceKey": "1706141",
"status": "1",
"requestData": {
"skuCode": "GREENTSHIRT_MEDIUM",
"mode": "NEW",
"uomQty": "2",
"bin": "GOOD",
"location": "TSW"
},
"eachQty": "2",
"lotCode": "TSW000000003"
},
{
"referenceKey": "1706142",
"status": "1",
"requestData": {
"skuCode": "GREENTSHIRT_LARGE",
"mode": "NEW",
"uomQty": "15",
"bin": "GOOD",
"location": "TSW"
},
"eachQty": "15",
"lotCode": "TSW000000004"
}
]
}
Pull orders:
We will call the below API to pull orders from the Vinculum filtered by date and location. We will get all the orders in the required state specified in the status
field for the particular Date(confirmed date).
Fields provided in the Request Body are described in the table provided below:
Key Name | Key Descrition | Key Values | Mandatory Fields |
---|---|---|---|
| Particular Order No |
| Optional |
| Current Order State |
| Mandatory |
| Datetime |
| Mandatory |
| Datetime |
| Mandatory |
| 1 Page 100 Orders | Default 1 | Optional |
| Location ID |
| Optional |
| Whether the order is replacement type or not |
| Optional |
| NA | NA | Optional |
| Whether the order is Prepaid or COD |
| Optional |
| This changes the meaning of | If | Optional |
| Not enough Information | Not enough Information | Conditional |
The following table of Statuses:
S.no | List of Statuses | S.no | List of Statuses |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note: Duration of order should be a maximum of 7 days and not more than that.
POST API
https://kalkifashion.vineretail.com/RestWS/api/eretail/v2/order/orderPullV2
Curl request:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v2/order/orderPullV2' \
--header 'Authorization: Basic TWF5dXI6RXNob3BrYWxraUAxMjM0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'RequestBody={
"statuses":["ALLOCATED","PART ALLOCATED"],
"fromDate":"25/03/2022 15:40:30",
"toDate":"30/03/2022 15:40:30",
"pageNumber":1,
"order_Location":"TSW",
"filterBy":1,
"fulfillmentLocation":"TSW"
}
' \
--data-urlencode 'ApiOwner=Kalki' \
--data-urlencode 'ApiKey=131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564'
Response:
{
"responseCode": 0,
"responseMessage": "Success",
"totalOrders": 1,
"totalPages": 1,
"currentPage": 1,
"orderList": [
{
"orderLocation": "TSW",
"orderId": "TSW17",
"orderNo": "TSW17",
"extenalOrderNo": "TSW17",
"paymentMethod": "Prepaid",
"status": "Allocated",
"orderDate": "30/03/2022 19:02:58",
"orderAmount": "6598.00",
"orderCurrency": "INR",
"conversionRate": "1.00",
"customerName": "Test123",
"shipAddress1": "Sector 76 Noida",
"shipAddress2": "",
"shipAddress3": "",
"landmark": "",
"latitude": "",
"longitude": "",
"shipCity": "",
"shipState": "Delhi",
"shipCountry": "India",
"shipPincode": "201307",
"shipPhone1": "9972462835",
"shipPhone2": "",
"shipEmail1": "test123@customer.com",
"shipEmail2": "",
"billName": "Test123",
"billAddress1": "Sector 76 Noida",
"billAddress2": "",
"billAddress3": "",
"billCity": "",
"billState": "Delhi",
"billCountry": "India",
"billPincode": "201307",
"billPhone1": "9972462835",
"billPhone2": "",
"billEmail1": "test123@customer.com",
"billEmail2": "",
"orderRemarks": null,
"shippingCharges": "0.00",
"handlingCharge2": "0.00",
"storeCredit": "0.00",
"isVerifiedOrder": "1",
"isOnHold": "0",
"giftvoucher": "0.00",
"otherDiscount": "0.00",
"discountCode": "0.00",
"promoCode": null,
"promoName": null,
"cancelRemark": "",
"isGiftwrap": "0",
"giftwrapMsg": "",
"deliverySlot": "",
"customDataFeld1": "",
"customDataFeld2": "",
"customDataFeld3": "",
"customDataFeld4": "",
"customDataFeld5": "",
"customDataFeld6": "",
"customDataFeld7": "",
"customDataFeld8": "",
"customDataFeld9": "",
"customDataFeld10": "",
"discountAmount": "0.000",
"taxAmount": "706.93",
"updatedDate": "30/03/2022 23:29:05",
"mode": "wms",
"IsReplacementOrder": "No",
"originalOrderno": "",
"customerCode": "1000646",
"extCustomerCode": "",
"clientId": "0",
"fulfillmentLocCode": "TSW",
"extFulFillmentLocCode": "022",
"orderSourceName": "Test warehouse",
"collectibleAmount": "0.00",
"totalOrderLine": "1",
"delFulfillmentMode": "2",
"orderSource": "ERP",
"orderType": "SO",
"shipByDate": "",
"processAfterDate": "",
"masterorderNo": "TSW17",
"priority": "Normal",
"pickupLocation": "",
"fulfillmentLocName": "Test warehouse",
"items": [
{
"lineno": "2",
"extLineno": null,
"internalLineNo": "2",
"sku": "BLUE_TSHIRT",
"primaryUPC": null,
"skuName": "BLUE_TSHIRT",
"imageUrl": null,
"uom": "Each",
"uomqty": "1.00",
"conversion": "1.00",
"orderQty": "1.00",
"commitedQty": null,
"cancelledQty": "0.00",
"shippedQty": "0.00",
"returnQty": "0.00",
"unitPrice": "3999.00",
"discountAmt": "0.00",
"promoCode": null,
"promoName": null,
"taxAmount": "428.46",
"openQty": "0.00",
"udf1": "",
"udf2": "",
"udf3": "",
"udf4": "",
"udf5": "",
"udf6": "",
"udf7": "",
"udf8": "",
"udf9": "",
"udf10": "",
"bundleSkuCode": null,
"shipByDate": "",
"fulfillmentLocCode": "TSW",
"fulfillmentLocName": "Test warehouse"
}
],
"paymentItems": [],
"customerGSTIN": "0",
"codcharge": "0.00"
}
]
}
Note: Now once we have the response from Order List API, we need to extract OrderNo and pass them in the GET Shipment Detail API:
POST API:
https://kalkifashion.vineretail.com/RestWS/api/eretail/v2/order/shipmentDetail
CURL:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v2/order/shipmentDetail' \
--header 'ApiKey: 131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--header 'ApiOwner: Kalki' \
--header 'Content-Type: application/json' \
--data-raw '{
"order_no":["TSW17"]
}'
Response:
{
"responseCode": 0,
"responseMessage": "Success",
"currentPage": 1,
"orders": [
{
"extOrderNo": "TSW17",
"orderNo": "TSW17",
"orderLocation": "TSW",
"status": "Allocated",
"remarks": "",
"grandtotal": "6598.000",
"createdDate": "30/03/2022 19:02:58",
"orderLineCount": "3",
"itemcount": "2.000",
"shippingaddress": "Sector 76 Noida",
"mobileno": "9972462835",
"is_giftwrap": "no",
"giftwrap_msg": "",
"giftwrap_charges": "0.000",
"udf1": "",
"udf2": "",
"udf3": "",
"udf4": "",
"udf5": "",
"udf6": "",
"udf7": "",
"udf8": "",
"udf9": "",
"udf10": "",
"pickupLocation": "",
"extDeliveryNo": "",
"extManifestNo": "",
"extInvNo": "",
"shipState": "Delhi",
"shipCountry": "India",
"shipCity": "",
"shipPinCode": "201307",
"shipLatitude": "",
"shipLongitude": "",
"shipdetail": [
{
"qty": "1",
"transporter": "",
"transporterstatusremark": "",
"transporterstatus": "",
"extTransCode": "",
"obExtTransporterName": "",
"shipdate": "",
"updated_date": "30/03/2022 23:29:05",
"delivereddate": "",
"deliveryNumber": "TS2000000002",
"fulfillmentLocation": "TS2",
"tracking_number": "",
"status": "Open",
"expdeldate_min": "",
"expdeldate_max": "",
"collectable_amount": "0",
"allocation_date": "30/03/2022 23:29:05",
"pick_date": "",
"pack_date": "",
"shipment_value": "2599.00",
"picklistNo": "",
"manifestNo": "",
"handoverStatus": "",
"invoiceNo": "",
"proofOfDelivery": "",
"dimensions": [
{
"length": null,
"breadth": null,
"height": null,
"weight": null
},
{
"length": null,
"breadth": null,
"height": null,
"weight": null
}
],
"item": [
{
"lineno": "1",
"extLineNo": "",
"sku": "BLACK_TROUSER",
"status": "Allocated",
"order_qty": "1",
"deliveryQty": "1",
"wipQty": "1",
"pickedQty": "0",
"shippedQty": "0",
"closedQty": "0",
"closed_date": "",
"returnedQty": "0",
"deliveredQty": "0",
"imageUrl": "",
"itemName": "BLACK_TROUSER",
"price": "2599.00000",
"binCode": "Good",
"serialNo1": [
""
],
"serialNo2": [
""
],
"serialNo3": [
""
],
"lotno": "TS2000000004",
"lottable01": "",
"lottable02": "",
"lottable03": "",
"lottable04": "",
"lottable05": "",
"lottable06": "",
"udf1": "",
"udf2": "",
"udf3": "",
"udf4": "",
"udf5": "",
"discAmount": "0.00"
}
]
},
{
"qty": "1",
"transporter": "",
"transporterstatusremark": "",
"transporterstatus": "",
"extTransCode": "",
"obExtTransporterName": "",
"shipdate": "",
"updated_date": "30/03/2022 23:20:11",
"delivereddate": "",
"deliveryNumber": "TSW000159094",
"fulfillmentLocation": "022",
"tracking_number": "",
"status": "Open",
"expdeldate_min": "",
"expdeldate_max": "",
"collectable_amount": "0",
"allocation_date": "30/03/2022 19:02:59",
"pick_date": "",
"pack_date": "",
"shipment_value": "3999.00",
"picklistNo": "",
"manifestNo": "",
"handoverStatus": "",
"invoiceNo": "",
"proofOfDelivery": "",
"dimensions": [
{
"length": null,
"breadth": null,
"height": null,
"weight": null
},
{
"length": null,
"breadth": null,
"height": null,
"weight": null
}
],
"item": [
{
"lineno": "2",
"extLineNo": "",
"sku": "BLUE_TSHIRT",
"status": "Allocated",
"order_qty": "1",
"deliveryQty": "1",
"wipQty": "1",
"pickedQty": "0",
"shippedQty": "0",
"closedQty": "0",
"closed_date": "",
"returnedQty": "0",
"deliveredQty": "0",
"imageUrl": "",
"itemName": "BLUE_TSHIRT",
"price": "3999.00000",
"binCode": "GOOD",
"serialNo1": [
""
],
"serialNo2": [
""
],
"serialNo3": [
""
],
"lotno": "TSW000000006",
"lottable01": "",
"lottable02": "",
"lottable03": "",
"lottable04": "",
"lottable05": "",
"lottable06": "",
"udf1": "",
"udf2": "",
"udf3": "",
"udf4": "",
"udf5": "",
"discAmount": "0.00"
}
]
}
]
}
]
}
Mapping for the WMS order API:
No. | Keys in create order API | Keys in the channel data map or values set |
|
---|---|---|---|
1. | externalChannelID |
|
|
2. | customerOrderNumber |
|
|
3. | vendorOrderNumber |
|
|
3. | shipMethod |
|
|
4. | orderDate |
|
|
5. | isCOD |
|
|
6. | paymentType |
|
|
7. | taxAmount |
|
|
8. | shipChargeAmount |
|
|
9. | expecedShipDate |
|
|
10 | subtotal | sum of lineItemTotal |
|
11. | orderTotal | subTotal + shipChargeAmount |
|
12. | balanceDue | if( else |
|
13. | shippingAddress |
|
|
14. | shippingAddress.customerName |
|
|
15. | shippingAddress.addressLine1 |
|
|
16. | shippingAddress.addressLine2 (optional) |
|
|
17. | shippingAddress.city |
|
|
18. | shippingAddress.state |
|
|
19. | shippingAddress.postalCode |
|
|
20. | shippingAddress.countryCode |
|
|
21. | shippingAddress.countryName |
|
|
22. | shippingAddress.contactPhone |
|
|
23. | shippingAddress.email |
|
|
24. | billingAddress |
|
|
25. | billingAddress.customerName |
|
|
26. | billingAddress.addressLine1 |
|
|
27. | billingAddress.addressLine2 (optional) |
|
|
28. | billingAddress.city |
|
|
29. | billingAddress.state |
|
|
30. | billingAddress.postalCode |
|
|
31. | billingAddress.countryCode |
|
|
32. | billingAddress.countryName |
|
|
33. | billingAddress.contactPhone |
|
|
34. | billingAddress.email |
|
|
35. | items |
|
|
36. | items.lineItemSequenceNumber |
|
|
37. | items.itemID |
|
|
38. | items.orderItemID |
|
|
39. | items.productName |
|
|
40. | items.customerPrice |
|
|
41. | items.discount |
|
|
42. | items.productImageUrl |
|
|
43. | items.productUrl |
|
|
44. | items.quantity |
|
|
45. | items.externalWarehouseID |
|
|
46. | thirdPartyShipping (optional) |
|
|
49. | orderSiteId |
|
|
Order Cancellation Flow
POST API:
https://kalkifashion.vineretail.com/RestWS/api/eretail/v2/order/orderPullV2
Curl request:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v2/order/orderPullV2' \
--header 'Authorization: Basic TWF5dXI6RXNob3BrYWxraUAxMjM0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'RequestBody={
"statuses":["CANCELLED"],
"fromDate":"25/03/2022 15:40:30",
"toDate":"30/03/2022 20:40:30",
"pageNumber":1,
"order_Location":"TSW",
"filterBy":1,
"fulfillmentLocation":"TSW"
}
' \
--data-urlencode 'ApiOwner=Kalki' \
--data-urlencode 'ApiKey=131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564'
Response:
{
"responseCode": 0,
"responseMessage": "Success",
"totalOrders": 1,
"totalPages": 1,
"currentPage": 1,
"orderList": [
{
"orderLocation": "TSW",
"orderId": "TSW14",
"orderNo": "TSW14",
"extenalOrderNo": "TSW14",
"paymentMethod": "COD",
"status": "Cancelled",
"orderDate": "30/03/2022 11:52:41",
"orderAmount": "499.00",
"orderCurrency": "INR",
"conversionRate": "1.00",
"customerName": "Muskaan",
"shipAddress1": "Gurgaon, Sec 32",
"shipAddress2": "Gurgaon, Sec 32",
"shipAddress3": "",
"landmark": "Near AIHP Centre",
"latitude": "",
"longitude": "",
"shipCity": "Gurgaon",
"shipState": "Haryana",
"shipCountry": "India",
"shipPincode": "122016",
"shipPhone1": "999999999",
"shipPhone2": "7678631843",
"shipEmail1": "prateek.kaushik@eshopbox.com",
"shipEmail2": "",
"billName": "Muskaan",
"billAddress1": "Gurgaon, Sec 32",
"billAddress2": "Gurgaon, Sec 32",
"billAddress3": "",
"billCity": "Gurgaon",
"billState": "Haryana",
"billCountry": "India",
"billPincode": "122016",
"billPhone1": "999999999",
"billPhone2": "7678631843",
"billEmail1": "prateek.kaushik@eshopbox.com",
"billEmail2": "",
"orderRemarks": null,
"shippingCharges": "0.00",
"handlingCharge2": "0.00",
"storeCredit": "0.00",
"isVerifiedOrder": "1",
"isOnHold": "0",
"giftvoucher": "0.00",
"otherDiscount": "0.00",
"discountCode": "0.00",
"promoCode": null,
"promoName": null,
"cancelRemark": "I dont like the product",
"isGiftwrap": "0",
"giftwrapMsg": "",
"deliverySlot": "",
"customDataFeld1": "",
"customDataFeld2": "",
"customDataFeld3": "",
"customDataFeld4": "",
"customDataFeld5": "",
"customDataFeld6": "",
"customDataFeld7": "",
"customDataFeld8": "",
"customDataFeld9": "",
"customDataFeld10": "",
"discountAmount": "0.000",
"taxAmount": "53.46",
"updatedDate": "30/03/2022 16:56:38",
"mode": "wms",
"IsReplacementOrder": "No",
"originalOrderno": "",
"customerCode": "1000009",
"extCustomerCode": "",
"clientId": "0",
"fulfillmentLocCode": "TSW",
"extFulFillmentLocCode": "022",
"orderSourceName": "Test warehouse",
"collectibleAmount": "499.00",
"totalOrderLine": "1",
"delFulfillmentMode": "2",
"orderSource": "ERP",
"orderType": "SO",
"shipByDate": "",
"processAfterDate": "",
"masterorderNo": "TSW14",
"priority": "Normal",
"pickupLocation": "",
"fulfillmentLocName": "Test warehouse",
"items": [
{
"lineno": "1",
"extLineno": null,
"internalLineNo": "1",
"sku": "GREENTSHIRT_MEDIUM",
"primaryUPC": null,
"skuName": "GREENTSHIRT_MEDIUM",
"imageUrl": null,
"uom": "Each",
"uomqty": "1.00",
"conversion": "1.00",
"orderQty": "1.00",
"commitedQty": null,
"cancelledQty": "0.00",
"shippedQty": "0.00",
"returnQty": "0.00",
"unitPrice": "499.00",
"discountAmt": "0.00",
"promoCode": null,
"promoName": null,
"taxAmount": "53.46",
"openQty": "1.00",
"udf1": "",
"udf2": "",
"udf3": "",
"udf4": "",
"udf5": "",
"udf6": "",
"udf7": "",
"udf8": "",
"udf9": "",
"udf10": "",
"bundleSkuCode": null,
"shipByDate": "",
"fulfillmentLocCode": "TSW",
"fulfillmentLocName": "Test warehouse"
}
],
"paymentItems": [],
"customerGSTIN": "0",
"codcharge": "0.00"
}
]
}
Mapping with the WMS cancel API:
No. | WMS Cancel Order API Key | Vinculum Order API Keys |
---|---|---|
1. |
|
|
2. |
|
|
3. |
|
|
4. |
|
|
5. |
|
|
6. |
|
|
7. |
| Explore for this key as there are various keys present such as |
8. |
|
|
Order Processing flow:
Flow #1: Update Order Status: Pick Complete
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v2/order/orderPick' \
--header 'ApiKey: 131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--header 'ApiOwner: Kalki' \
--header 'Authorization: Basic TWF5dXI6RXNob3BrYWxraUAxMjM0' \
--header 'Content-Type: application/json' \
--data-raw '{
"request": [
{
"deliveryNo": "{{customerOrderNumber}}",
"items": [
{
"lineNo": "{{lineItemSequenceNumber}}",
"sku": "{{itemID}}",
"qty": "{{quantity}}"
}
]
}
]
}'
Response:
{
"responseCode": 0,
"responseMessage": "Success",
"requestStatus": [
{
"responseCode": 0,
"responseMessage": "Success",
"referenceKey": "TSW000159089",
"response": null
}
]
}
Flow #2: Mark Order as Packed
using the following Curl Request:
Curl Request:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v1/order/orderProcess' \
--header 'ApiKey: 131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--header 'ApiOwner: Kalki' \
--header 'Authorization: Basic TWF5dXI6RXNob3BrYWxraUAxMjM0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'ApiKey=131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--data-urlencode 'ApiOwner=Kalki' \
--data-urlencode 'RequestBody={
"externalOrderno": "{{vendorOrderNumber}}",
"channelCode": "{{locationId}}",
"whCode": "{{locationId}}",
"status": "PACK",
"weight": "0.5",
"length": "10",
"breadth": "10",
"height": "10",
"noofbox": "1",
"transporterName": "", //When Eshopbox is providing Label then pass transporterName and trackingNo
"trackingno": "", //When Eshopbox is providing Label then pass transporterName and trackingNo
"items": [
{
"lineno": "{{lineItemSequenceNumber}}",
"extLineno": "",
"sku": "{{itemID}}",
"qty": "{{quantity}}"
}
]
}'
Response:
Ask response correct from Vinculum Team as of now following is returned by the API:
{
"responseCode": 9,
"responseMessage": "[Incorrect phone number(s) for order TSW12] : Picked Successfully. This Order [TSW12] with [Picked] status have error for pack ",
"requestStatus": {
"requestKey": "TSW12",
"status": "Error",
"errorDesc": "[Incorrect phone number(s) for order TSW12] : Picked Successfully. This Order [TSW12] with [Picked] status have error for pack ",
"invoiceNo": null,
"manifestId": null,
"deliveryNo": null
}
}
Flow #3: Generate Invoice in PDF Format:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v1/order/orderinvoicepdf' \
--header 'ApiOwner: Kalki' \
--header 'ApiKey: 131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--header 'Authorization: Basic TWF5dXI6RXNob3BrYWxraUAxMjM0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'ApiKey=131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--data-urlencode 'ApiOwner=Kalki' \
--data-urlencode 'RequestBody={
"WebOrderNo": [
"{{vendorOrderNumber}}"
],
"invoice_no":"",
"AWB_No":""
}'
Response:
{
"responseCode": 0,
"responseMessage": "success",
"OrderInvoiceDetails": [
{
"Mode": "wms",
"WebOrderNo": "TSW17",
"InvoiceNo": "KLKF-TSW-002",
"AWB_No": "7548746857",
"InvoiceStream": "JVBERi0xLjUKJeLjz9MKNCAwIG9iago8PC9MZW5ndGggMjU2Ni9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nK1bXXMTuRJ996/Qy61ia4nQ9wdPGxJvSC0YNnag9hZVW4M9wXOJPdnxmCX//rbGNji2NCNbLihC2dHRUUvdfbpH80/v1ajHFTJEYmPRaNLrj3p/9v7pUYPgr1QcE47gF6q897E3b74iWEtmBdr9WX3pUUTgD0WMYCaRNhZbjsaznvtUSuE+pBxr6uDuGjCY/sXvFMHUdz9Ha44pR9oybKgbvvnC/Tua9Z6Nsu/oev6tLMb5L6P/bSivoYybZRuNIa0tpsyHNCzvJ+jV4z6Kxk9AOKGYw4q0wtaH866a5BUalOjlLhTbI8Q1wVwDlsbGeJc3/Eh1JyUhFDadlC6zOo8hJWGBirWQeptVYIXnsLWMRZsLjo/wovW/13k1R8eYTQksZLrZgtTWB+tgywV5NZajB1pOEky8aBt6hxlNUufHHrg/3vzx+xlY7oyQbnIb2wXJDafFw8GGC3JD0dbiCisvxPvscZbPa/S2nERx2tiLa6y8eFX+kBWTaGKMY2/cGT0+5Ki8Q8Plw8P94yHMmMDUe26vynKyQNl8ghZ59Q2OyCKaJbFYezHf32fjI3lSSAteE17m99PijHR76pqdssr9CEa4i2VV5fPxIeSU1Zh7z8v14KYbxWUUpbD0Lg+8vbzvxhBsFTRCMHEspA64TsPiOYokoyDo8xa0ODJCY+HNRLPl7HNWODbTrMoW07rK0BkShBBpn0MinxRZ9wxUWmeq8CxxJMGxrfcwTYp5vpj+9jW7/1rcAcminONxOYsgRiVWsgU5jhgzWHjFzkU5r7NxjV4iyzVjklNjI1gR7uJEGDaOFTUBOXA1HF0P0Eumz8/7F0MC8/Tpf99E8GK6BTWOFIQrLrzh6nzwJApEK1WlDbZso1QZiCDQn6BUmf2pVGPAKHyGlCFYbIEJBwaHV+yoXo9xOHWBWBnqTpRnga+K+/ti/gWdTyZVvlgcuFQX9czJ1mqty7m7i+VuiqjFCgL1AG9ZrBMTD/7Vhg+HgohqtDfl5ouaMh6hSyg2LThxNGQowwzzcV1WEPlBwRWTiMAH9qGyBTCOD4RN7Q2bz1GTkCMylmxOTxAojgeHD70Jr0kDZ4xQvi8N9qEgjzujBNHiyEBw1F55Vq/Oym/j5aIuZ3kVmQkgMLkTHYSNY0VtQOFtZQILOhDm4TI6E4Rh41jB2vxuus4EsX4VxImkARvvzWcQ+19cjyLLIhe8wLtPECw4g/Ukhos1mdOFDA5aibQFoXhS6XGDuxpIpgWONZkTBQ8ujBO6SdFjzejEEYQb7Y53UgRZMztxFOGQhqDmT4oia2bpkaRxujakA8gcFk+2tZTe7XC6f8+oFZgodN9oKPRv8wVBN1e94VOAHx1SKX+OX/dISeRwJ+WkOH64pa7uix/ur9NZ06aVIASl17+HeFB2t5agetItINd1PkMX5cTT8N1BokJhwVugXg8H3SAG6qY2Pn/W3U1j5lQ1awG5nRc1el9529i7WLA3tm1Vl8ViXC7ndTeSbYKLNCJQRY2y79nn+zym+8YbJC3XJcAu0ofsftm9NO7SFG0hdAGBofsAEb0yUAhlCCgvbqOgAIO1Weg6BkUKhmXb7o/KOttrzkDwd663bR5IU0qAlVmgv3yT1fl/InCgEIXiO4xzPvMcnl0UQZjr6yWzEVw11klko07ExmUDexgbtu9YTk5IRQLPmmgnApRYLggGEV69ue3/PRq+vr4ZncH/O/EoBCDbghdLCJS73ywbNp1AhrnKKAwUywR8yt+pvn339qzvkcY7MBCqqGiBieXBRUA2jKfdu8JXxghuC6GEWsJINxIkcBcaEo4cowrTtjMH0RkCmOgGcqZtXRUm3SvipKmj0ulwqZxebaHTDWH4CVYkQGvJNCJCnISIVpi3RQO69wBwD8M9spNtB064frPqxoEVtW+zhYgcsah1zGXgB94c272ktUMHES7eXaKLaVZ92RMyQccOYu1Jqv31gJgWbRBRW73xxTQUDrUeN8koa0cMo0Q7YhqRjSMmENk4YiIRk0xEQuVrkrdGwtakb/DaBV3v09sA8zTR/C4YRPjxIOBAPwwCxvthEOIgP0xD2fhhIsraD8Mo0X6YRmTjhwlENn6YSMQkE9n4YRqRjR8mHjZl3AYL29zRia03QwosDBOtwFanJQwUt0niFChr3RJGOUy3tBjHr1v2byVCzIMPhOaB1snVcISGy9ksq7r7TIJprMFGrsAPbjw6n7n20Kdnv376JaJ3sVpnCDFwBvZxOCYW1mrdHqa0mqTBzmbETyeuz0SZdL3rMJuoPhMj3PWZwijxfSbnakK3QPn7TLvNC0qka4IIoV3WCzRBImCgOJesBSaqI0PtScgwcQoyzJyEDOfUdQ0OIrPfeWiugQgu/Ld1o8IYda122wKy1+rah1An4MFoMg/Xz07mwUkyDy6aGytpPFRzkVU4zejtKsWmzM3+BoEO2OAwxiE7nMJks8WJTFaPK8IolEXsMpeYiBaQvfz/Y3rWXHsRINFWI93HzYM+rt1V0s4nbe7GKYxXEOPVk/GrS9Rd4ylPm391a+fo6TlNm56atOXbtOHuIoTix48H68HXAuK//TmaU45jHrJa0tht1SdeDWVAJOoBrYBZQc9rsz1t3MCGsRCYs8Mpu2mh2hTR04YEqW0EKcRF7n/DpVGkoP5i5ahp3DeI55fvQV7CBh5DDOuyytFFlU+KGn16dhbDDRzc6hbMbnG7oQUuJb364uoDaiRuLKVVPRnG8wXeICsIgN5LMleVe9cg8BAzUE+EsILtXkqeam9XsAtCA6+fILRtbIINtQq+/fmTadijrUusUA5w0IjqxyUISpsrvJD9oCzbug7bjeSsJXfRGNmFCiRto9zlKG6aMtGrMF3xhoo5+lhWkwV6eeBCmfDQ40zH0WPuuZ1poTd6fdPvo9Hrd7fD88ElGlwP+uj17eDypn+JNh+M/lp9fnP7vt8fIvRu8Oavzg3Xbqe5prCi4xp5TtdpyAMCa29rpXmhB/zd8xKgp6+osTUtYB/yqrgr4sAYNe1g58t6WlbFAuCGxZd5Vi+r7tbnarlMydCdg2k2/4oeyyW6Kyu0mJarxuq/RT1FywWOwYeKlYE7K68juzcziwWalzV6yB6b2n45d2/pVPm3vFrkaNy0cNHnbFEsPHILjAKRa/026pN8rV3o6JQb2jSNQSucONke7+7zmO78x5t23tHD2aqRZyCIPBkO5LtHO5GqEshLmD1l8RCEG/bHjmfEpFlPJs4Pmi5l/czSpPk5yBNz9O5TnsZemJSzJ7VKc7zVWLmldaU0bki36KTN70nXZHkyXMdJ5dVwl9mYPHq4sHzd0T1quIQfyh4/nKh15/+44cruXAM9zHRWu9u0R89uj5+auYdS5ojhLlbCL7rTvl3nuAsxkdMjBg6nVPR5/T+w3UBiCmVuZHN0cmVhbQplbmRvYmoKMjMgMCBvYmoKPDwvTmFtZXMgMjIgMCBSL1R5cGUvQ2F0YWxvZy9PdXRsaW5lcyAxNyAwIFIvUGFnZU1vZGUvVXNlT3V0bGluZXMvUGFnZXMgNSAwIFI+PgplbmRvYmoKMjQgMCBvYmoKPDwvQ3JlYXRvcihCSVJUIFJlcG9ydCBFbmdpbmUgL3VzcjAxL2FwcC9wcm9kdWN0L2JpcnQvMS4wLjAvZGVwbG95L2JpcnQud2FyL1dFQi1JTkYvbGliL29yZy5lY2xpcHNlLmJpcnQucnVudGltZV8zLjcuMS52MjAxMTA5MTMtMTczNC5qYXIvIHVzaW5nIGlUZXh0IC91c3IwMS9hcHAvcHJvZHVjdC9iaXJ0LzEuMC4wL2RlcGxveS9iaXJ0Lndhci9XRUItSU5GL2xpYi9vcmcuZWNsaXBzZS5iaXJ0LnJ1bnRpbWVfMy43LjEudjIwMTEwOTEzLTE3MzQuamFyLy4pL1Byb2R1Y2VyKGlUZXh0IDIuMS43IGJ5IDFUM1hUKS9Nb2REYXRlKEQ6MjAyMjAzMzEyMjM3MTIrMDUnMzAnKS9DcmVhdGlvbkRhdGUoRDoyMDIyMDMzMTIyMzcxMiswNSczMCcpPj4KZW5kb2JqCjYgMCBvYmoKPDwvVHlwZS9PYmpTdG0vTiAyMC9MZW5ndGggNTg3L0ZpcnN0IDEzMi9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nJ1UbWvbMBD+K/ex/jDr1ZYEJdAkSxe2taE2tFsIwXVEMXWsYDul/fc9OV6TZQlsMwbpnrt7zvfiY0BBARcSNPCYggGuY2AUBGOArxAKGAcRC2AChDbAJEgWAb5SokkMMkYTA9II4BQiRYFpiCWCCpREEJSJQIBWAiIwMgbOwBgJnCM1FXB5Sa5rt93gmb5t7E4go4SM7UuR27vrIUlIWmdVs8lqW+VvgwGZ+VuLfBTuyMhVLUoNyE7sSGbZkyV3tnHbOrcNUs9qlye2hTmZjSdAUvvaApmu0WzYn6P+nC6QsXR1sslyi56HX4KhJxgN0QnDzHy4CZbHXwb4kO92VWRD9zqnCEUmCrkGLVmozWIwgDnrPB5+/IRqW5agaYQaoIs/NEqbEAt6QiOlDNUpxXkyTUUYy9NhVBjrk2FiE2JzT2iExnRO+pzX8EiG2HXUYOVufOk57Sz6PuLEdJ0r2tJepMk9pZRFhhoZkCv0GF8sl+ntaEmXLMBZuHap89X2ZP9KIPcEOBL2xY9u17xDMvV3ZAdUI7dFR06+Zc1HbpOiRuGQv5vM221bFpVteh+x8+kT6H303meYNdaPHPliyxfbFnn2aejK1Y6rU3yucrcqqidyX1RXVVN8yMn2sfVW3pSdY/tPomn6kF7wkIUq2P9wv3Ji5GuxanZDsNjZ32Rr28w/KgddiQ/aCvo3QAZgeuDRued1Vj97I0aPQR74NXUEisAvrSMQKZk4BqPAL7QjMA78ejsCVeCX3T6hsW1w43DWd+odxQ12cQplbmRzdHJlYW0KZW5kb2JqCjI1IDAgb2JqCjw8L1R5cGUvWFJlZi9XWzEgMiAyXS9Sb290IDIzIDAgUi9JbmRleFswIDI2XS9JRCBbPDVjYTc3NDY4Y2U0NGRlOWFjNWRjNWQ1MzA2Y2Q4ZTU1PjxkNDcxMjVjMGYzNzQ2MDhjZDAwNWY5OTFjMTllM2MyYz5dL0xlbmd0aCA3MS9JbmZvIDI0IDAgUi9TaXplIDI2L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCnicJcdREkAwEATR2SBYIcFhnMVRnW5VV+bj1bSkiKQsQYVmqj1PK09/BgkGGGGCDDMssILDATtsUOCC2/yVzD+xiB+A4gbXCmVuZHN0cmVhbQplbmRvYmoKc3RhcnR4cmVmCjM4MDgKJSVFT0YK"
}
]
}
Flow #4: Generate Ship Label in PDF Format:
curl --location --request POST 'https://kalkifashion.vineretail.com/RestWS/api/eretail/v1/order/getShippingLabelPdf' \
--header 'Authorization: Basic TWF5dXI6RXNob3BrYWxraUAxMjM0' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'ApiKey=131524d28b8d4f3fb6746d5f531dfac1c0edfbffe99d4954bd2f564' \
--data-urlencode 'ApiOwner=Kalki' \
--data-urlencode 'RequestBody={
"WebOrderNo": [
"{{vendorOrderNumber}}"
]
}'
Response:
{
"responseCode": 0,
"responseMessage": "success",
"OrderLabelDetails": [
{
"Mode": "wms",
"WebOrderNo": "TSW17",
"AWBNo": "7548746857",
"TransporterName": "By Hand Delivery",
"TransporterCode": "999994",
"labelStream": "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"
}
]
}