Introduction
Welcome To SIRCLO MP Adapter Documentation
Version: 1.0
You can used this API to connect to SIRCLO Platform.
Environment | Host URL |
---|---|
Production | https://api.connexi.id |
Staging | https://api2.connexi.id.dmmy.me |
Marketplace Adapter (MP Adapter) Capabilities can be seen here
How To Connect MP Adapter
Client who need connect to MP Adapter must register using API to generated
Client Key, in that case 1 Client Key Multi Brand ID, and Brand ID only have 1 Client Key
- Client Key value to use is given by Squad Zeus.
Given Client Key:
client_key |
---|
08d06aa2-a6a2-4578-9f37-d0a3e3390960 |
For every request sent, client must include Authorization in the HTTP request headers and Publish Message.
- Authorization value to send is Client Key.
Using JsonRPC
HTTP Request
GET /v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Client Key value (given from Squad Zeus) used for Client identification |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
jsonrpc | Yes | String | Version jsonrpc |
id | Yes | String | Activity ID of the action by client |
method | Yes | string | Method feature of MP Adapter |
params | Yes | Object | Object request method |
Response Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
jsonrpc | Yes | String | Version jsonrpc |
id | Yes | String | Activity ID of the action by client |
result | Yes | Object | Object result method |
Request body example:
{
"id": "12345",
"jsonrpc": "2.0",
"method": "ClientCredentialsService.AddFeatures",
"params": {
"feature_names": ["product-fetched"]
}
}
Response body success example:
{
"id": "12345",
"jsonrpc": "2.0",
"result": {
"subscription_error": {},
"subscription_list": {
"product-fetched": "CNX_PRODUCT_FETCHED_1"
}
}
}
Response body error example:
{
"id": "12345",
"jsonrpc": "2.0",
"error": {
"code": 400,
"message": "pg: no rows in result set"
}
}
Using Pubsub
Consumer MP Adapter
MP Adapter will consume message from pubsub to process request from client
Example :
TOPIC CNX_BULK_UPSERT_PRODUCT
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client Key value (given from Squad Zeus) used for Client identification |
brand_id | Yes | String | Brand ID value client brand id used for Brand Client identification |
id | Yes | String | Activity ID of the action by client |
product | Yes | Object | Object request |
Publisher MP Adapter
MP Adapter will produce message into pubsub for consumer client Subscriptions Pubsub will generated from MP Adapter using API AddFeature Every Client will have subcriptions
Example :
SUBSCRIPTIONS : CNX_PRODUCT_FETCHED_1
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID value client brand id used for Brand Client identification |
id | Yes | String | Activity ID of the action by MP Adapter |
product | Yes | Object | Object body |
Register Brand To Client
METHOD
AuthService.AddBrandIDToClient
HTTP Request
GET /v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Client Key value (given from Squad Zeus) used for Client identification |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brands | Yes | Aray Object | Array object client brands |
brands - brand | Yes | string | Name brand from client |
brands - brand_id | Yes | string | ID brand from client |
Response Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_ids | Yes | Array String | List Brand ID of client |
Request body example:
{
"jsonrpc": "2.0",
"id": "123",
"method": "AuthService.AddBrandIDToClient",
"params": {
"brands": [
{
"brand": "test brand 1",
"brand_id": "test-brand_1"
},
{
"brand": "test brand 1",
"brand_id": "test-brand_1"
}
]
}
}
Response body success example:
{
"id": "123",
"jsonrpc": "2.0",
"result": {
"brand_ids": [
"test-brand_1",
"test-brand_1"
]
}
}
Response body error example:
{
"id": "12345",
"jsonrpc": "2.0",
"error": {
"code": 400,
"message": "pg: no rows in result set"
}
}
Add Feature To Client
METHOD
ClientCredentialsService.AddFeatures
FEATURE LIST
Name | Description |
---|---|
order-fetched |
This feature is Import Order from marketplace, and MP Adapter will publish order to client |
product-fetched |
This feature is Import Product from marketplace, and MP Adapter will publish product to client |
category-fetched |
This feature is Import Category from marketplace, and MP Adapter will publish category to client |
category-fetched-v2 |
This feature is Import Category V2 from marketplace, and MP Adapter will publish category v2 to client |
chat-fetched |
This feature is Import Chat from marketplace, and MP Adapter will publish chat to client |
chat-fetched-group |
This feature is Import Chat from marketplace, and MP Adapter will publish chat to client group |
feedback-pack-orders |
This feature is to return Pack Order feedback to client |
feedback-accept-orders |
This feature is to return Accept Order feedback to client |
feedback-cancel-orders |
This feature is to return Cancel Order feedback to client |
feedback-complete-orders |
This feature is to return Complete Order feedback to client |
feedback-product-fetched-manual |
This feature is Import Product Manual from marketplace, and MP Adapter will publish product to client |
feedback-bulk-upsert-products |
This feature is to return Bulk Upsert Product feedback to client |
feedback-bulk-delete-products |
This feature is to return Bulk Delete Product feedback to client |
feedback-bulk-update-price |
This feature is to return Bulk Update Price feedback to client |
feedback-update-inventory |
This feature is to return Update Inventory feedback to client |
feedback-connect-channel |
This feature is to return Connect Channel feedback to client |
feedback-disconnect-channel |
This feature is to return Disconnect Channel feedback to client |
feedback-create-discount |
This feature is to return Create Discount feedback to client |
feedback-bulk-update-inventory-v4 |
This feature is to return New Bulk Update Inventory V4 feedback to client |
HTTP Request
GET /v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Client Key value (given from Squad Zeus) used for Client identification |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
feature_names | Yes | Aray String | List Feature to add into client |
Response Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_ids | Yes | Array String | List Brand ID of client |
Request body example:
{
"id": "string",
"jsonrpc": "2.0",
"method": "ClientCredentialsService.AddFeatures",
"params": {
"feature_names": ["product-fetched"]
}
}
Response body success example:
{
"id": "string",
"jsonrpc": "2.0",
"result": {
"subscription_error": {},
"subscription_list": {
"product-fetched": "CNX_PRODUCT_FETCHED_1"
}
}
}
Response body error example:
{
"id": "string",
"jsonrpc": "2.0",
"result": {
"subscription_error": {
"product": "Feature 'product' doesn't exist"
},
"subscription_list": {}
}
}
Another Response body error example:
{
"id": "12345",
"jsonrpc": "2.0",
"error": {
"code": 400,
"message": "pg: no rows in result set"
}
}
Channel
Channel Code
List of marketplaces code supported by MP Adapter
Channel Code | Description |
---|---|
bklp | Bukalapak |
blib | Bli-Bli |
lzda | Lazada ID |
lzda-sg | Lazada SG |
shpe | Shopee ID |
shpe-sg | Shopee SG |
tkpd | Tokopedia |
tktk | Tiktok |
zlra | Zalora |
Get Credentials Channel
This request using HTTP Json RPC
METHOD : CredentialsService.GetCredentials
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | brand id client |
brand | No | String | brand name client |
callback_success | Yes | String | url oauth2 callback success |
callback_failure | Yes | String | url oauth2 callback failure |
channel_codes | No | Array String | for get all credentials set [] |
Note: You must input a valid brand_id which has connected with client_key (Authorization key)
Open API Channel
Channel Name | Type |
---|---|
aklk | oauth2 |
orami | secret_key |
mncm | secret_key |
ntnid | secret_key |
sehatq | secret_key |
tktklv | secret_key |
ascs | secret_key |
mope | secret_key |
skfm | secret_key |
mawp | secret_key |
lcpd | secret_key |
amore | secret_key |
ahpi | secret_key |
Request body example:
{
"jsonrpc":"2.0",
"id":"1",
"method":"CredentialsService.GetCredentials",
"params":{
"brand_id":"test-pi",
"brand": "khusus-pi",
"callback_success": "htpps://khusus-pi.mysirclo.id.dmmy.me/sales-channel",
"callback_failure": "htpps://khusus-pi.mysirclo.id.dmmy.me/sales-channel/fallback",
"channel_codes":[]
}
}
The above request returns JSON structured like this:
{
"id": "1",
"jsonrpc": "2.0",
"result": [
{
"channel_code": "tkpd",
"channel_name": "Tokopedia",
"fields": [
{
"description": "FS ID",
"name": "fs_id",
"type": "integer"
},
{
"description": "Client Id",
"name": "client_id",
"type": "string"
},
{
"description": "Client Secret",
"name": "client_secret",
"type": "string"
},
{
"description": "Shop Id",
"name": "shop_id",
"type": "integer"
}
],
"type": "secret_key"
},
{
"channel_code": "bklp",
"channel_name": "Bukalapak",
"fields": null,
"type": "oauth2",
"url": "https://accounts.bukalapak.com/oauth/authorize?client_id=ac6c833cbd04aa14bfbfed44&redirect_uri=https:%2F%2Fchannel.sirclo-integrations.com.dmmy.me%2Fbklp%3Fsecret=eyJicmFuZF9pZCI6NSwiY2FsbGJhY2tfc3VjY2VzcyI6Imh0cHBzOi8vdGVzdC1yaXlhbi5teXNpcmNsby5pZC5kbW15Lm1lL3NhbGVzLWNoYW5uZWwiLCJjYWxsYmFja19mYWlsdXJlIjoiaHRwcHM6Ly90ZXN0LXJpeWFuLm15c2lyY2xvLmlkLmRtbXkubWUvc2FsZXMtY2hhbm5lbC9mYWxsYmFjayIsImRhdGUiOiIyMDIxLTA0LTAxVDAzOjE3OjU1LjE0MDgxODU4NFoifQ&scope=public%20user%20store&response_type=code"
},
{
"channel_code": "lzda",
"channel_name": "Lazada",
"fields": null,
"type": "oauth2",
"url": "https://auth.lazada.com/oauth/authorize?client_id=107829&redirect_uri=https:%2F%2Fchannel.sirclo-integrations.com.dmmy.me%2Flzda%3Fsecret=eyJicmFuZF9pZCI6NSwiY2FsbGJhY2tfc3VjY2VzcyI6Imh0cHBzOi8vdGVzdC1yaXlhbi5teXNpcmNsby5pZC5kbW15Lm1lL3NhbGVzLWNoYW5uZWwiLCJjYWxsYmFja19mYWlsdXJlIjoiaHRwcHM6Ly90ZXN0LXJpeWFuLm15c2lyY2xvLmlkLmRtbXkubWUvc2FsZXMtY2hhbm5lbC9mYWxsYmFjayIsImRhdGUiOiIyMDIxLTA0LTAxVDAzOjE3OjU1LjE0MDgxODU4NFoifQ&response_type=code"
},
{
"channel_code": "shpe",
"channel_name": "Shopee",
"fields": [
{
"description": "Shop Id",
"name": "shop_id",
"type": "integer"
}
],
"type": "oauth2",
"url": "https://partner.uat.shopeemobile.com/api/v1/shop/auth_partner?token=81129b458371be86cf792d1e6c2d20e6eb3da7370e100978e3431fc4aab6f510&id=100024&redirect=https://channel.sirclo-integrations.com.dmmy.me/shpe?secret=eyJicmFuZF9pZCI6NSwiY2FsbGJhY2tfc3VjY2VzcyI6Imh0cHBzOi8vdGVzdC1yaXlhbi5teXNpcmNsby5pZC5kbW15Lm1lL3NhbGVzLWNoYW5uZWwiLCJjYWxsYmFja19mYWlsdXJlIjoiaHRwcHM6Ly90ZXN0LXJpeWFuLm15c2lyY2xvLmlkLmRtbXkubWUvc2FsZXMtY2hhbm5lbC9mYWxsYmFjayIsImRhdGUiOiIyMDIxLTA0LTAxVDAzOjE3OjU1LjE0MDgxODU4NFoifQ"
},
{
"channel_code": "zlra",
"channel_name": "Zalora",
"fields": [
{
"description": "Application ID",
"name": "app_id",
"type": "string"
},
{
"description": "Application Secret",
"name": "app_secret",
"type": "string"
}
],
"type": "secret_key",
"url_callback": "https://channel.sirclo-integrations.com.dmmy.me/zlra?secret="
},
{
"channel_code": "blib",
"channel_name": "Bli-Bli",
"fields": [
{
"description": "Merchant Code",
"name": "merchant_code",
"type": "string"
},
{
"description": "Signature key",
"name": "signature_key",
"type": "string"
},
{
"description": "Api Seller key",
"name": "api_seller_key",
"type": "string"
}
],
"type": "secret_key"
},
{
"channel_code": "OPEN_API_OAUTH2",
"channel_name": "OPEN_API_OAUTH2",
"fields": [
{
"description": "Shop ID",
"name": "shop_id",
"type": "string"
},
{
"description": "Shop Secret",
"name": "shop_secret",
"type": "string"
}
],
"type": "oauth2",
"url_info": {
"url_channel": "https://dummy-url.com/",
"url_help_page": "https://dummy-url.com/help/page",
"url_logo_channel": "https://dummy-image-url/logo.png",
"url_oauth2": "https://auth.dummy-url.com/oauth/authorize?app_key=5l9ch0&state=eyJicmFuZF9pZCI6MiwiY",
"url_square_logo_channel": "https://dummy-image-url/logo-channel.png"
}
},
{
"channel_code": "OPEN_API_SECRET_KEY",
"channel_name": "OPEN_API_SECRET_KEY",
"fields": [
{
"description": "Shop ID",
"name": "shop_id",
"type": "string"
},
{
"description": "Shop Secret",
"name": "shop_secret",
"type": "string"
}
],
"type": "secret_key",
"url_info": {
"url_channel": "https://dummy-url.com/",
"url_help_page": "https://dummy-url.com/help/page",
"url_logo_channel": "https://dummy-image-url/logo.png",
"url_oauth2": "",
"url_square_logo_channel": "https://dummy-image-url/logo-channel.png"
}
}
]
}
Get Connected Channel
This request using HTTP Json RPC
METHOD : CredentialsService.GetConnectedSalesChannels
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | No | String | brand id client |
brand_ids | No | Array String | brand id list client |
channel_codes | Yes | Array String | for get all credentials set [] |
Note: You can fill in the brand ids to get connected channel for multi brand
Request body example:
{
"jsonrpc":"2.0",
"id":"1",
"method":"CredentialsService.GetConnectedSalesChannels",
"params":{
"brand_id":"khusus-pi",
"brand_ids": [],
"channel_codes":[]
}
}
The above request returns JSON structured like this:
{
"id": "1",
"jsonrpc": "2.0",
"result": [
{
"client_id": "2",
"brand_id": "khusus-pi",
"channel_code": "tkpd",
"channel_name": "Tokopedia",
"shop_name": "toko-khusus-pi",
"token_expired_at": "2023-12-11T04:50:06.085661Z",
"credentials": {
"client_id": {
"description": "Client ID",
"value": "****************************fe43"
},
"client_secret": {
"description": "Client Secret",
"value": "****************************77fa"
},
"fs_id": {
"description": "FS ID",
"value": 13397
},
"shop_id": {
"description": "Shop ID",
"value": 8212722
}
}
},
{
"client_id": "2",
"brand_id": "khusus-pi",
"channel_code": "shpe",
"channel_name": "Shopee",
"shop_name": "toko-khusus-pi",
"token_expired_at": "2023-12-11T04:50:06.085661Z",
"credentials": {
"api_key": {
"description": "Api Key",
"value": "************************************************************79d6"
},
"partner_id": {
"description": "Partner ID",
"value": 100024
},
"shop_id": {
"description": "Shop ID",
"value": 205727
}
}
},
{
"client_id": "2",
"brand_id": "khusus-pi",
"channel_code": "blib",
"channel_name": "Blibli",
"shop_name": "toko-khusus-pi",
"token_expired_at": "0001-01-01T00:00:00Z",
"credentials": {
"api_seller_key": {
"description": "Api Seller Key",
"value": "************************************************************67FD"
},
"merchant_code": {
"description": "Merchant Code",
"value": "DES-60002"
},
"signature_key": {
"description": "Signature Key",
"value": "sirclo19c"
}
}
}
]
}
Connect
This request using HTTP Json RPC
METHOD : ChannelService.Connect
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | brand id client |
channel_code | Yes | String | Channel Code |
credentials | Yes | object | this value from object get credentials |
Request body example:
{
"jsonrpc": "2.0",
"id": "1",
"method": "ChannelService.Connect",
"params": {
"channel_code": "shpe",
"brand_id": "test-zeus",
"credentials": {
"shop_id": "1234567",
"callback_success": "https://connexi-test.mysirclo.id.dmmy.me/sales-channel",
"callback_failure": "https://connexi-test.mysirclo.id.dmmy.me/sales-channel"
}
}
}
The above request returns JSON structured like this:
{
"id": "1",
"jsonrpc": "2.0",
"result": null
}
The Above request JSON Error:
{
"error": {
"code": 400,
"message": "Error"
},
"id": "1",
"jsonrpc": "2.0"
}
Disconnect
This request using HTTP Json RPC
METHOD : ChannelService.Disconnect
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | brand id client |
channel_code | Yes | String | Channel Code |
Request body example:
{
"id": "string",
"jsonrpc": "2.0",
"method": "ChannelService.Disconnect",
"params": {
"brand_id": "test-zeus",
"channel_code": "shpe"
}
}
The above request returns JSON structured like this:
{
"id": "1",
"jsonrpc": "2.0",
"result": null
}
The Above request JSON Error
{
"error": {
"code": 400,
"message": "Error"
},
"id": "1",
"jsonrpc": "2.0"
}
Reconnect
This request using HTTP Json RPC
METHOD : ChannelService.Reconnect
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | brand id client |
channel_code | Yes | String | Channel Code |
Request body example:
{
"id": "123456",
"jsonrpc": "2.0",
"method": "ChannelService.Reconnect",
"params": {
"brand_id": "test-zeus",
"channel_code": "shpe"
}
}
The above request returns JSON structured like this:
{
"id": "1",
"jsonrpc": "2.0",
"result": null
}
The Above request JSON Error
{
"error": {
"code": 400,
"message": "Error"
},
"id": "1",
"jsonrpc": "2.0"
}
Orders
Order Fetched
Header Parameters
Method Name | Subscription |
---|---|
PUBSUB | CNX_ORDER_FETCHED_CLIENT-ID |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
brand_id | Yes | String | Brand ID client |
shop_name | Yes | String | Shop name client |
order | Yes | Object | Order object |
order - mp_adapter_order_id | Yes | Integer | MP Adapter order ID |
order - order_date | Yes | Timestamp | Order created date |
order - required_date | No | Timestamp | Order shipping deadline date |
order - remote_order_id | Yes | String | Remote order ID |
order - remote_booking_id | Yes | String | Remote booking ID |
order - advance_fulfillment | Yes | Boolean | Advance fulfillment order identifier (Available on Shopee) |
order - currency_code | Yes | String | Currency code |
order - customer_reference | Yes | String | Invoice number |
order - payment_method | Yes | String | Order payment method |
order - delivery_name | Yes | String | Order recipient name |
order - delivery_address_1 | Yes | String | Order recipient address |
order - delivery_address_2 | No | String | Extension of order recipient address |
order - delivery_suburb | Yes | String | Order recipient suburb (Kecamatan) |
order - delivery_city | Yes | String | Order recipient city (Kota) |
order - delivery_region | Yes | String | Order recipient region (Provinsi) |
order - delivery_country | Yes | String | Order recipient country (Negara) |
order - delivery_post_code | Yes | String | Order recipient postal code (Kode Pos) |
order - delivery_method | Yes | String | Order delivery method |
order - delivery_latitude | Yes | String | Order delivery latitude |
order - delivery_longitude | Yes | String | Order delivery longitude |
order - provider | Yes | String | Order delivery courier provider |
order - service | Yes | String | Order delivery courier service |
order - delivery_mobile | No | String | Order recipient phone number |
order - delivery_email | No | String | Order recipient email address |
order - order_status | Yes | String | Order status (unpaid,pending,accepted,packed,pack_failed,shipped,completed,cancelled,request_cancel) |
order - status | No | String | Order publish status |
order - paid_at | Yes | Timestamp | Order payment date |
order - remarks | No | String | Order notes |
order - channel_code | Yes | String | Channel Code |
order - listing_platform | No | String | Product Platform (only for tktk channel with value “TOKOPEDIA” or “TIKTOK_SHOP”) other than tktk channel will return empty string |
order - fulfilled_by_marketplace | No | Boolean | Flag that indicates whether an order is fulfilled by the marketplace (list support channels: lzda, lzda-sg, shpe, shpe-sg, tktk, tkpd, blib) |
order - is_pre_order | No | Boolean | Flag that indicates whether an order is preorder type |
order - channel_response | Yes | JSON String | JSON Response from MP |
order - phone_number | Yes | String | Order maker phone number |
order - awb_retrieved_at | Yes | Timestamp | Airway Bill retrieved date |
order - airwaybill_number | Yes | String | Airway BIll number |
order - pickup_code | Yes | String | Pickup Code (Shopee ID only with instant / sameday courier) |
order - shipment_reference | No | String | Shipment Reference for showing package ID or shipment document type |
order - shipment_extras | No | JSON String | Shipment Extras for showing shipment extra information |
order - dropshipper_name | No | String | Dropshipper name |
order - dropshipper_phone_number | No | String | Dropshipper phone number |
order - driver_name | No | String | Driver name |
order - driver_phone_number | No | String | Driver phone number |
order - cancel_reason | No | String | Order cancellation reason |
order - request_cancel_deadline | No | Timestamp | Deadline for acknowledge request cancel order |
order - cancelled_at | No | Timestamp | Cancelled order time |
order - port | No | String | Port code |
order - sort_code | No | String | Sort code |
order - service_type | No | String | Order service type (for Shopee Express) |
order - barcode | No | String | Barcode image base64 value |
order - total_voucher | No | Float | Amount of discount from voucher |
order - total_voucher_seller | No | Float | Amount of discount from voucher on seller point of view |
order - total_promo | No | Float | Amount of discount from promo |
order - discount_total | Yes | Float | Total amount of discount |
order - discount_total_seller | Yes | Float | Total amount of discount on seller point of view |
order - discount_from_mp | Yes | Float | amount of discount from marketplace |
order - subtotal | Yes | Float | Total amount of product price |
order - subtotal_seller | Yes | Float | Total amount of product price that seller will recieve |
order - shipping_total | Yes | Float | Shipping cost |
order - total | Yes | Float | Total that include shipping cost and discount |
order - tax_total | Yes | Float | Tax total |
order - awb_source | No | Object | Object of awb source |
order - awb_source - channel | No | Boolean | AWB Source provided by marketplace when true. and AWB Source provided by client when false |
order - remote_warehouse_id | No | String | Warehouse code from MP |
order - transaction_date | Yes | String | Order update date |
order - shipping_label_url | No | String | Downloaded shipping label document URL |
order - order_deadline | No | Object | Deadline of order |
order - order_deadline - accepted_deadline | No | Timestamp | Deadline for accepted order |
order - order_deadline - shipped_deadline | No | Timestamp | Deadline for shipped order |
order - order_deadline - packed_deadline | No | Timestamp | Deadline for packed order |
order - courier_detail | No | Object | Object of courier types. There are 3 types of courier, pickup, delivery, and drop-off |
order - courier_detail - pickup | No | Object | Object of pickup courier |
order - courier_detail - delivery | No | Object | Object of delivery courier |
order - courier_detail - drop-off | No | Object | Object of drop-off courier |
order - courier_detail - courier type - name | No | String | Courier detail name |
order - courier_detail - courier type - provider | No | String | Courier detail provider |
order - courier_detail - courier type - service | No | String | Courier detail service |
line_items | Yes | Array | Array object line items |
line_items - line_number | Yes | Integer | Order number of item on the line item |
line_items - remote_order_item_id | Yes | String | Remote order item id |
line_items - product_code | Yes | String | Product code |
line_items - product_description | Yes | String | Product description |
line_items - quantity | Yes | Integer | Item quantity |
line_items - shipping_amount | No | Float | Shipping cost |
line_items - raw_price | Yes | Float | Price of single item from marketplace |
line_items - voucher | No | Float | Amount of discount from voucher |
line_items - promo | No | Float | Amount of discount from promo |
line_items - discount_amount | No | Float | Total amount of discount |
line_items - tax | Yes | Float | Tax product |
line_items - unit_price | Yes | Float | Price of Single Item including tax and discount |
line_items - line_total | Yes | Float | Total price of line items (raw price * quantity) |
line_items - line_comments | Yes | String | Line item notes / comments |
line_items - reference_id | No | String | Identifier of an item (product ID / variant ID) |
seller_order_fees | No | Array | Array object of seller order fees |
seller_order_fees - fee_type | Yes | String | Seller order fee type |
seller_order_fees - amount | Yes | Float | Seller order fee amount |
seller_order_fees - product_code | Yes | String | Seller order fee product code |
seller_order_fees - remote_order_item_id | Yes | String | Seller order fee remote order item ID |
seller_order_fees - product_name | Yes | String | Seller order fee product name |
Request example ``
This Sample Message Payload:
{
"id": "123124243",
"brand_id": "123asd",
"shop_name": "tokoku",
"order": {
"mp_adapter_order_id": 1234567,
"order_date": "2020/12/12 12:12:12+007",
"required_date": "2020/12/12 12:12:12+007",
"remote_order_id": "string",
"remote_booking_id": "string",
"advance_fulfillment": false,
"currency_code": "IDR",
"customer_reference": "invoice number",
"payment_method": "Bank Transfer",
"delivery_name": "Klistyan grei wuii",
"delivery_address_1": "Green Park Office 1,",
"delivery_address_2": "Nomor 7-8",
"delivery_suburb": "Curug",
"delivery_city": "Tangerang",
"delivery_region": "Banten",
"delivery_country": "Indonesia",
"delivery_post_code": "18520",
"delivery_method": "Gosend - Sameday",
"provider": "Gosend",
"service": "Sameday",
"delivery_mobile": "0845231224",
"delivery_email": "christian@sirclo.com",
"order_status": "unpaid",
"status": "new",
"paid_at": "2020/12/12 12:12:12+007",
"remarks": "notes",
"channel_code": "bklp,blib,jdid,lzda,shpe,tkpd,zlgo,zlra,icbe,levs...",
"listing_platform": "TOKOPEDIA",
"fulfilled_by_marketplace": true,
"is_pre_order": true,
"channel_response": "{json response from mp}",
"phone_number": "085210921123",
"awb_retrieved_at": "2020/12/12 12:12:12+007",
"airwaybill_number": "12345abc",
"pickup_code": "74AB",
"shipment_reference": "123sajfdklasf",
"shipment_extras": "{json alternate code}",
"dropshipper_name": "bryan",
"dropshipper_phone_number": "12345",
"driver_name": "bryan",
"driver_phone_number": "12345",
"cancel_reason": "gak jadi beli",
"request_cancel_deadline": "2020/12/12 12:12:12+007",
"cancelled_at": "2020/12/12 12:12:12+007",
"port": "Port Code: H-TBU-E1",
"sort_code": "",
"service_type": "",
"barcode": "image base64",
"total_voucher": 10000.00,
"total_voucher_seller": 0.00,
"total_promo": 10000.00,
"discount_total": 20000.00,
"discount_total_seller": 10000.00,
"discount_from_mp": 100.00,
"subtotal": 100000.00,
"subtotal_seller": 80000.00,
"shipping_total": 10000.00,
"total": 90000.00,
"tax_total": 9000.00,
"awb_source": {
"channel": true
},
"remote_warehouse_id": "wh code from mp ware12312asdas",
"transaction_date": "",
"shipping_label_url": "",
"order_deadline":{
"accepted_deadline": "2020/12/12 12:12:12+007",
"shipped_deadline": "2020/12/12 12:12:12+007",
"packed_deadline": "2020/12/12 12:12:12+007"
},
"line_items": [
{
"line_number": "1",
"remote_order_item_id": "12312asdv",
"product_code": "SKU1234",
"product_description": "Barang tidak dijual sembarangan",
"quantity": 10,
"shipping_amount": 1000.00,
"raw_price": 10000.00,
"voucher": 1000.00,
"promo": 1000.00,
"discount_amount": 2000.00,
"tax": 800.00,
"unit_price": 7200.00,
"line_total": 100000.00,
"reference_id": "9887113546"
}
],
"seller_order_fees": null,
"courier_detail": {
"pickup": {
"name": "ANTERAJA - Reguler",
"provider": "ANTERAJA",
"service": "Reguler"
},
"delivery": {},
"drop-off": {}
}
}
}
Manual Fetch Orders
This request using HTTP Json RPC
METHOD : OrderService.FetchOrders
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
start_date | Yes | String | Start Date |
end_date | Yes | String | End Date |
Request body example:
{
"jsonrpc": "2.0",
"id": "123145",
"method": "OrderService.FetchOrders",
"params": {
"brand_id": "string_brand_id_1",
"start_date": "2021-01-02T15:04:05Z",
"end_date": "2021-01-04T15:04:05Z"
}
}
The above request returns JSON structured like this:
{
"id": "123145",
"jsonrpc": "2.0",
"result": null
}
Single Accept Order
This request using HTTP Json RPC
METHOD : OrderService.AcceptOrder
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplace |
remote_order_id | Yes | String | Remote Order ID |
Request body example:
{
"jsonrpc": "2.0",
"id": "123145",
"method": "OrderService.AcceptOrder",
"params": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1"
}
}
The above request returns JSON structured like this:
{
"id": "123145",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"message": "string_message_1",
"success": true
}
}
Single Pack Order
This request using HTTP Json RPC
METHOD : OrderService.PackOrder
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplace |
remote_order_id | Yes | String | Remote Order ID |
delivery_method | Yes | String | Delivery Method |
airwaybill_number | No | String | Airway Bill Number |
package_id | No | String | Package ID Order |
is_retry | No | Boolean | Flag for order status is pack_failed (only for Shopee) |
remote_warehouse_id | No | String | Remote Warehouse ID |
remote_order_items_ids | Yes | Array String | Array object item id |
Request body example:
{
"jsonrpc": "2.0",
"id": "126457",
"method": "OrderService.PackOrder",
"params": {
"brand_id": "string_brand_id",
"channel": "string_channel",
"remote_order_id": "string_remote_order_id",
"delivery_method": "",
"airwaybill_number": "string_awb",
"package_id": "ABC123",
"is_retry": false,
"remote_warehouse_id": "",
"remote_order_item_ids": [
"string_item_id_1",
"string_item_id_2"
]
}
}
The above request returns JSON structured like this:
{
"id": "126457",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"message": "string_message_1",
"airwaybill_number": "string_airwaybill_number_1",
"pickup_code": "string_pickup_code_1",
"shipment_extras": "string_shipment_extras_1",
"success": true
}
}
Single Ship Order
This request using HTTP Json RPC
METHOD : OrderService.ShipOrder
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplace |
remote_order_id | Yes | String | Remote Order ID |
customer_reference | Yes | String | Invoice Number |
Request body example:
{
"jsonrpc": "2.0",
"id": "126457",
"method": "OrderService.ShipOrder",
"params": {
"brand_id": "string_brand_id",
"channel": "string_channel",
"remote_order_id": "string_remote_order_id",
"customer_reference": "customer_reference"
}
}
The above request returns JSON structured like this:
{
"id": "126457",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"message": "string_message_1",
"airwaybill_number": "string_airwaybill_number_1",
"shipment_extras": "string_shipment_extras_1",
"success": true
}
}
Single Complete Order
This request using HTTP Json RPC
METHOD : OrderService.CompleteOrder
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplacce |
remote_order_id | Yes | String | Remote Order ID |
received_by | No | String | Recipient Name |
package_id | No | String | Package ID (Blib's cnc order only) |
Request body example:
{
"jsonrpc":"2.0",
"Id":"123541",
"method":"OrderService.CompleteOrder",
"params": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"received_by": "string_received_by_1",
"package_id": "string_package_id_1"
}
}
The above request returns JSON structured like this:
{
"id": "123541",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"message": "string_message_1",
"airwaybill_number": "string_airwaybill_number_1",
"shipment_extras": "string_shipment_extras_1",
"success": true
}
}
Single Cancel Order
This request using HTTP Json RPC
METHOD : OrderService.CancelOrder
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplace |
remote_order_id | Yes | String | Remote Order ID |
cancel_reason | Yes | String | Reason of Cancellation (Free Text or Code) |
remote_order_item_ids | Yes | Array String | Remote Order item IDs |
Request body example:
{
"jsonrpc":"2.0",
"Id":"123557",
"method":"OrderService.CancelOrder",
"params": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"cancel_reason": "string_cancel_reason",
"remote_order_item_ids": [
"string_remote_order_item_id_1",
"string_remote_order_item_id_2"
]
}
}
The above request returns JSON structured like this:
{
"id": "123557",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"message": "string_message_1",
"success": true
}
}
List Cancel Reason
This request using HTTP Json RPC
METHOD : OrderService.ListCancelReason
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
channels | Yes | Array String | List of marketplace to get all reason list |
brand_id | Yes | String | Brand ID client |
Request body example:
{
"jsonrpc": "2.0",
"id": "12312321",
"method": "OrderService.ListCancelReason",
"params": {
"brand_id": "test-brand",
"channels": ["blib","tkpd"]
}
}
The above request returns JSON structured like this:
{
"id": "12312321",
"jsonrpc": "2.0",
"result": {
"cancel_reasons": [
{
"channel": "blib",
"input_type": "string"
},
{
"channel": "tkpd",
"input_type": "OPTIONS",
"options": [
{
"reason_name": "Stock Habis",
"remote_code": "30"
}
]
}
]
}
}
List Reject Cancel Reason
This request using HTTP JSONRPC, this endpoint for retrieve a list data of cancel reason (for now only for MP Tiktok)
METHOD : OrderService.ListRejectCancelReason
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
remote_order_id | Yes | string | Remote Order ID |
brand_id | Yes | string | Brand ID client |
channel | Yes | string | Channel or marketplace code |
Request body example:
{
"jsonrpc": "2.0",
"id": "12312321",
"method": "OrderService.ListRejectCancelReason",
"params": {
"remote_order_id": "123456789",
"brand_id": "test-brand",
"channel": "tktk"
}
}
The above request returns JSON structured like this:
{
"id": "12312321",
"jsonrpc": "2.0",
"result": {
"reject_reasons": {
"channel": "tktk",
"input_type": "OPTIONS",
"options": [
{
"reason_name": "You have reached an agreement with the buyer",
"remote_code": "reverse_reject_request_reason_5"
},
{
"reason_name": "Product is shipped and parcel cannot be recalled back from logistics.",
"remote_code": "seller_reject_apply_package_has_not_exceeded_estimated_delivery_time"
}
]
}
}
}
NOTES:
- For now this method only support for Tiktok
- MP who support this feature will get an order status of "request_cancel" and this order status is eligible for this method
Reject Request Order Cancellation
This request using HTTP JSON RPC Expectation of this request to NACK cancel request of order
METHOD : OrderService.RejectCancelOrderRequest
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplace |
remote_order_id | Yes | String | Remote Order ID |
reject_reason | Yes | String | Reason order reject by seller (required for Tiktok) |
Request body example:
{
"jsonrpc":"2.0",
"Id":"123557",
"method":"OrderService.RejectCancelOrderRequest",
"params": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"reject_reason": "string_message_reason"
}
}
The above request returns JSON structured like this:
{
"id": "123557",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"message": "string_message_1",
"success": true
}
}
NOTES:
- For now this method only support for Shopee, Tiktok, and Tokopedia
- MP who support this feature will get an order status of
request_cancel
and this order status is eligible for this method - You can get value for "reject_reason" field in
METHOD : OrderService.ListRejectCancelReason
and usereason_name
from that API response
Bulk Accept Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Accept Orders | CNX_BULK_ACCEPT_ORDERS |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client key |
id | Yes | String | Activity ID of the action by MP Adapter |
orders | Yes | Array | Array object order |
orders - brand_id | Yes | String | Brand ID client |
orders - channel | Yes | String | Marketplace |
orders - remote_order_id | Yes | String | Remote Order ID |
This Message Payload Example:
{
"client_key":"client_key",
"id": "123312",
"orders":[
{
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1"
}
]
}
Bulk Pack Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Pack Orders | CNX_BULK_PACK_ORDERS |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client key |
id | Yes | String | Activity ID of the action by MP Adapter |
orders | Yes | Array | Array object order |
orders - brand_id | Yes | String | Brand ID client |
orders - channel | Yes | String | Marketplace |
orders - delivery_method | Yes | String | Delivery Method |
orders - airwaybill_number | No | String | Airway Bill Number |
orders - remote_warehouse_id | No | String | Remote warehouse ID |
orders - package_id | No | String | Package ID Order |
orders - is_retry | No | Boolean | Flag for order status is pack_failed (only for Shopee) |
orders - remote_order_id | Yes | String | Remote Order ID |
orders - remote_order_item_ids | Yes | Array String | Array object item id |
This Message Payload Example:
{
"client_key": "client_key",
"id": "123312",
"orders": [
{
"brand_id": "string_brand_id",
"channel": "string_channel",
"delivery_method": "",
"airwaybill_number": "string_awb",
"remote_warehouse_id": "",
"package_id": "ABC123",
"is_retry": false,
"remote_order_id": "string_remote_order_id",
"remote_order_item_ids": [
"string_item_id_1",
"string_item_id_2"
]
}
]
}
Bulk Ship Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Ship Orders | CNX_BULK_SHIP_ORDERS |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client key |
id | Yes | String | Activity ID of the action by MP Adapter |
orders | Yes | Array | Array object order |
orders - brand_id | Yes | String | Brand ID client |
orders - channel | Yes | String | Marketplace |
orders - remote_order_id | Yes | String | Remote Order ID |
orders - customer_reference | Yes | String | Invoice number |
This Message Payload Example:
{
"client_key":"client_key",
"id": "123312",
"orders":[
{
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"customer_reference": ""
}
]
}
Bulk Complete Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Complete Orders | CNX_BULK_COMPLETE_ORDERS |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client Key |
id | Yes | String | Activity ID of the action by MP Adapter |
orders | Yes | Array | Array object order |
orders - brand_id | Yes | String | Brand ID Client |
orders - channel | Yes | String | Marketplace |
orders - remote_order_id | Yes | String | Remote order ID |
orders - received_by | Yes | String | Recipient Name |
This Message Payload Example:
{
"client_key": "client_key",
"id": "123312",
"orders": [
{
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"received_by": "string_received_by_1"
}
]
}
Bulk Cancel Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Cancel Orders | CNX_BULK_CANCEL_ORDERS |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client key |
id | Yes | String | Activity ID of the action by MP Adapter |
orders | Yes | Array | Array object order |
orders - brand_id | Yes | String | Brand ID client |
orders - channel | Yes | String | Marketplace |
orders - remote_order_id | Yes | String | Remote Order ID |
orders - cancel_reason | Yes | String | Reason of Cancellation (Free Text or Code) |
orders - remote_order_item_ids | Yes | Array String | Remote order item ID |
This Message Payload Example:
{
"client_key": "client_key",
"id": "123312",
"orders": [
{
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"cancel_reason": "string_cancel_reason",
"remote_order_item_ids": ["string_remote_order_item_id_1"]
}
]
}
Single Get Shipping Label URL
This request using HTTP Json RPC
METHOD : OrderService.ShippingLabelURL
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplace |
remote_order_id | Yes | String | Remote Order ID |
airwaybill_number | Yes | String | Airwaybill Nummber |
document_type | No | String | Document Type |
generate_from_mp | No | Boolean | Is generate / redownload from marketplace? |
Request body example:
{
"id": "12312321",
"jsonrpc": "2.0",
"method": "OrderService.ShippingLabelURL",
"params": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"document_type": "THERMAL_AIR_WAYBILL",
"airwaybill_number":"string_airwaybill_number_1",
"generate_from_mp": false
}
}
The above request returns JSON structured like this:
{
"id": "12312321",
"method": "OrderService.ShippingLabelURL",
"result": {
"brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"message": "string_message_1",
"remote_order_id": "string_remote_order_id_1",
"shipping_label_url":"www.shipping_label_url.com",
"success": true
}
}
NOTES:
- Exclusively for Shopee, if the document_type is not filled then it will get the default type("THERMAL_AIR_WAYBILL")
- For Tokopedia, Blibli and Lazada, You don't need to filled airwaybill_number and document_type as a body parameter
Bulk Shipping Label (response in zip)
This request using HTTP Json RPC
METHOD : OrderService.BulkShippingLabelURL
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
Array Object | Yes | Array | Array object for bulking request |
client_brand_id | Yes | String | Brand ID client |
channel | Yes | String | Marketplace |
remote_order_id | Yes | String | Remote Order ID |
airwaybill_number | Yes | String | Airwaybill Nummber |
Request body example:
{
"id": "string_activity",
"jsonrpc": "2.0",
"method": "OrderService.BulkShippingLabelURL",
"params": [
{
"client_brand_id": "string_brand_id_1",
"channel": "string_marketplace_1",
"remote_order_id": "string_remote_order_id_1",
"airwaybill_number":"string_airwaybill_number_1"
},
{
"client_brand_id": "string_brand_id_2",
"channel": "string_marketplace_2",
"remote_order_id": "string_remote_order_id_2",
"airwaybill_number":"string_airwaybill_number_2"
}
]
}
The above request returns response with Content-Type: application/zip
NOTES:
- only for channel Shopee, the field airwaybill_number is required.
Order Requirements
CnC Blibli Process Flow
- Make sure your store has support CnC at seller center. Don't forget to inform Zeus Squad at slack channel #ask-squad-zeus to activate your store to get CnC orders.
- Create new pickup point for CnC, or update your existing pickup point to support CnC too
- You can create new CnC product on your store
- If the buyer has bought your CnC product, you must accept the order in less than 1 hour or it will be automatically accepted by the system. But you can request to extend the accepted order deadline too.
- After you accept the order, the buyer will get a settlement code that can be used on your offline store. You can use this to complete your order.
CnC Blibli Payload Requirement
- For Complete order case, you must fill the field received_by with a settlement code that gets from the buyer.
- If user want to fetch order for CnC type, MP adapter will publish order message which include flagging for CnC order (instant_pickup) and the deadline (instant_pickup_deadline) at field shipment_extras
Name | Type | Description |
---|---|---|
shipment_extras | JSON String | Shipment Extras for showing shipment extra information |
shipment_extras - instant_pickup | Boolean | Flagging for CnC orders |
shipment_extras - instant_pickup_deadline | Timestamp | Instant pickup deadline date |
Fetch Order Message Payload Example :
{
"id": "string20",
"brand_id": "test-aja",
"shop_name": "",
"order": {
"mp_adapter_order_id": 3779148,
"order_date": "2023-04-13T07:31:44Z",
"required_date": "0001-01-01T00:00:00Z",
"remote_order_id": "33001738731-3145252968",
"currency_code": "IDR",
"customer_reference": "33001738731-3145252968",
"payment_method": "",
"delivery_name": "christian.sidhik@gdn-commerce.com .",
"delivery_address_1": "Sinar Mas Land Plaza Jl. Grand Boulevard BSD City, Sampora, Kec. Cisauk, Kabupaten Tangerang, Banten 15345, Indonesia",
"delivery_address_2": "",
"delivery_suburb": "Cisauk",
"delivery_city": "Kab. Tangerang",
"delivery_region": "Banten",
"delivery_country": "Indonesia",
"delivery_post_code": "15345",
"delivery_mobile": "",
"delivery_email": "",
"delivery_method": "BOPIS",
"delivery_latitude": "-6.3007333",
"delivery_longitude": "106.652044",
"provider": "BOPIS",
"service": "BOPIS",
"order_status": "pending",
"status": "new",
"paid_at": "2023-04-13T07:31:43Z",
"remarks": "",
"channel_code": "blib",
"listing_platform": "",
"channel_response": "[{\"orderNo\":\"33001738731\",\"orderItemNo\":\"33002071516\",\"qty\":1,\"orderDate\":1681371104641,\"orderStatus\":\"FP\",\"orderStatusString\":\"Pesanan sedang diproses\",\"currentlogisticService\":\"BOPIS\",\"logisticProviderCode\":\"\",\"autoCancelDate\":0,\"merchantDeliveryType\":\"DROPSHIP\",\"logisticOptionName\":\"\",\"logisticProductName\":\"\",\"merchantSku\":\"BP23\",\"pickupPoint\":\"PP-3391056\",\"itemSku\":\"\",\"awbNumber\":\"\",\"paid\":false,\"cashlessHandover\":false,\"cashlessStatusUpdateSla\":0,\"instantPickup\":true,\"instantPickupDeadline\":1682009999088,\"orderHistory\":[{\"orderStatus\":\"FP\",\"orderStatusDesc\":\"Pesanan sedang diproses\",\"createdTimestamp\":1681371104641},{\"orderStatus\":\"C\",\"orderStatusDesc\":\"Pembayaran Diterima\",\"createdTimestamp\":1681371103750}],\"productName\":\"Tiket Bornpink Jakarta\",\"productItemName\":\"Tiket Bornpink Jakarta\",\"productPrice\":190000,\"total\":190000,\"finalPrice\":190000,\"finalPriceTotal\":190000,\"shippingRecipientName\":\"christian.sidhik@gdn-commerce.com .\",\"shippingMobile\":\"085758930\",\"shippingStreetAddress\":\"Sinar Mas Land Plaza Jl. Grand Boulevard BSD City, Sampora, Kec. Cisauk, Kabupaten Tangerang, Banten 15345, Indonesia\",\"shippingDistrict\":\"Cisauk\",\"shippingCity\":\"Kab. Tangerang\",\"shippingProvince\":\"Banten\",\"shippingZipCode\":\"15345\",\"shippingCost\":0,\"custNote\":\"-\",\"packageId\":3145252968,\"financeSettlementInfo\":{\"commission\":0,\"merchantPromo\":0,\"totalPayment\":0},\"combo\":{\"comboList\":null},\"destinationLatitude\":-6.3007333,\"destinationLongitude\":106.652044,\"virtualPhoneNumber\":{\"pin\":\"\",\"value\":\"\"}}]",
"phone_number": "085758930",
"awb_retrieved_at": "0001-01-01T00:00:00Z",
"airwaybill_number": "",
"shipment_reference": "",
"shipment_extras": "{\"alternate_code\":\"\",\"instant_pickup\":true,\"instant_pickup_deadline\":\"2023-04-20T16:59:59Z\"}",
"dropshipper_name": "",
"dropshipper_phone_number": "",
"driver_name": "",
"driver_phone_number": "",
"cancel_reason": "",
"port": "",
"sort_code": "",
"service_type": "",
"barcode": "",
"total_voucher": 0,
"total_promo": 0,
"discount_total": 0,
"subtotal": 190000,
"shipping_total": 0,
"total": 190000,
"tax_total": 18828.83,
"remote_warehouse_id": "PP-3391056",
"cancelled_at": "0001-01-01T00:00:00Z",
"awb_source": {
"channel": true
},
"line_items": [
{
"line_number": 1,
"remote_order_item_id": "33002071516",
"product_code": "BP23",
"product_description": "Tiket Bornpink Jakarta",
"quantity": 1,
"shipping_amount": 0,
"raw_price": 190000,
"voucher": 0,
"promo": 0,
"discount_amount": 0,
"tax": 18828.83,
"unit_price": 171171.17,
"line_total": 190000,
"line_comments": "-",
"reference_id": "9887113546"
}
],
"seller_order_fees": null,
"transaction_date": "",
"shipping_label_url": ""
}
}
Accept Order Message Payload Example (PubSub):
{
"id": "ordercnc_123",
"client_key": "client_key",
"orders": [
{
"brand_id": "test-zeus",
"channel": "blib",
"customer_reference": "33001738731-3145252968",
"remote_order_id": "33001738731-3145252968"
},
],
}
Complete Order Message Payload Example (JsonRPC):
{
"id": "complete-cnc",
"jsonrpc": "2.0",
"method": "OrderService.CompleteOrder",
"params": {
"brand_id": "test-zeus",
"channel": "blib",
"received_by": "1PFL-9M6C-8WHK-QA7H",
"remote_order_id": "33001738731-3145252968"
}
}
Complete Order Message Payload Example (PubSub):
{
"id": "ordercnc_123",
"client_key": "client_key",
"orders": [
{
"brand_id": "test-zeus",
"channel": "blib",
"received_by": "1PFL-9M6C-8WHK-QA7H",
"remote_order_id": "33001738731-3145252968"
},
],
}
Products
Product Fetch From Channel
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | ProductFetched | CNX_PRODUCT_FETCHED_CLIENT-ID |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
action | Yes | String | Action by MP Adapter |
brand_id | Yes | String | Brand ID Client |
product | Yes | Object | Object of product |
channel | Yes | String | Marketplace |
listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
name | Yes | String | Product Name |
merek | No | String | Product Brand |
sku | No | String | Product SKU |
description | Yes | String | Product Description |
slug | Yes | String | Product SLUG |
condition | No | String | Product Condition |
img_urls | No | String Array | Array of Product image URL |
variant | Yes | Array | Array object variant |
variant - variant_sku | Yes | String | Variant SKU |
variant - variant_name | Yes | String | Variant Name |
variant - status | Yes | String | Variant Status (active/inactive) |
variant - currency_code | Yes | String | Currency Code |
variant - price | Yes | Float | Variant Price |
variant - variant_raw | Yes | JSON | Raw response from MP |
variant - url | Yes | String | Variant URL from MP |
variant - img_urls | No | String Array | Array of Variant image URL |
variant - volume | No | Object | Object of volume |
variant - volume - height | No | Float | Height of Variant |
variant - volume - length | No | Float | Length of Variant |
variant - volume - unit | No | String | Measurement Unit of Volume (e.g. "CM") |
variant - volume - width | No | Float | Width of Variant |
variant - weight | No | Object | Object of weight |
variant - weight - unit | No | String | Measurement Unit of Volume (e.g. "G") |
variant - weight - value | No | Float | Weight of Variant |
variant - attributes | No | Array | Array object attributes |
variant - attributes - name | No | String | Attributes Name |
variant - attributes - value | No | String | Attributes Value |
variant - attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
variant - options | No | Array | Array object options |
variant - options - name | No | String | Options Name |
variant - options - value | No | String | Options Value |
variant - options - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
variant - remote_variant | Yes | Object | Object remote variant (Remote Variant will different for every channel . Bukalapak example given ) |
variant - remote_variant - bklp_product_id | Yes | String | Bukalapak Product ID |
variant - remote_variant - remote_variant_id | Yes | Integer | Remote Variant ID |
variant - stock | No | Integer | Stock of the variant product |
variant - advance_stock | No | Object | Advance Stock of the variant product |
variant - advance_stock - total | No | Integer | Total Advance Stock of the variant product |
variant - advance_stock - sellable | No | Integer | Sellable Advance Stock of the variant product |
variant - advance_stock - in_transit | No | Integer | In Transit Advance Stock of the variant product |
attributes | No | Array | Array object attributes product |
attributes - name | No | String | Attributes name |
attributes - value | No | String | Attributes value |
attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
remote_category | No | Object | Object remote category |
remote_category - remote_category_id | No | String | Remote Category ID |
remote_category - remote_category_name | No | String | Remote Category Name |
preorder | No | Object | Object Pre-Order |
preorder - value | No | Integer | Pre-Order Duration |
preorder - type | No | String | Pre-Order type (days / weeks / date) |
This Message Payload Example:
{
"id": "12312321",
"brand_id": "test-zeus",
"action":"jsonrpc_product_fetched_manual/import_variant_consumer_cron",
"product": {
"channel": "bklp",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"name": "Baju Baru Alhamdulillah",
"merek": "Alisan",
"sku": "1234",
"description": "Baju Baru Buat Hari Raya",
"slug": "baju-baru-alhamdulillah",
"condition": "New",
"img_urls": [""],
"attributes": [
{
"name": "Brand",
"value": "NoBrand",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"variants": [
{
"variant_sku": "1234-XL",
"variant_name": "Baju Baru Size XL",
"status": "active/inactive",
"currency_code": "IDR",
"price": 10000,
"variant_raw": "raw response(from mp)",
"url": "bukalapak.com/baju-baru-alhamdulillah",
"img_urls": [""],
"volume": {
"height": 0,
"length": 0,
"unit": "CM",
"width": 0
},
"weight": {
"unit": "G",
"value": 0
},
"attributes": [
{
"name": "color",
"value": "red",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"options": [
{
"name": "size",
"value": "XL",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"remote_variant": {
"bklp_product_id": "1002prt",
"remote_variant_id": 2182177299
},
"stock": 10,
"advance_stock": {
"total": 10,
"sellable": 5,
"in_transit": 5
}
}
],
"remote_category": {
"remote_category_id": "123",
"remote_category_name": "Fashion"
},
"preorder": {
"value": 5,
"type": "days"
}
}
}
The value of remove_variant for each channel will be different
This is an example of a remote variant on Bukalapak :
"remote_variant": {
"bklp_product_id": "1002prt",
"remote_variant_id": 2182177299
}
This is an example of a remote variant on Blibli :
"remote_variant": {
"gdn_sku": "SAI-60061-00230-00001",
"upload_id": "",
"product_code": ""
}
This is an example of a remote variant on Lazada:
"remote_variant": {
"sku_id": 8921410258,
"item_id": 4836938997,
"shop_sku": "4836938997_ID-8921410258",
"seller_sku": "SV2719-MERAH"
}
This is an example of a remote variant on Shopee:
"remote_variant": {
"item_id": 2919884752,
"variation_id": 73763609762
}
This is an example of a remote variant on Tokopedia:
"remote_variant": {
"sku": "TS-500327",
"upload_id": 0,
"product_id": 1623383854
}
This is an example of a remote variant on Zalora V1:
"remote_variant": {
"shop_sku": "",
"seller_sku": "9123020009"
}
This is an example of a remote variant on Zalora V2:
"remote_variant": {
"product_set_id": 187239,
"product_id": 1287364
}
Product Fetch From Channel V2
If you want to enable this feature, please contact MP Adapter Team
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | ProductFetched | CNX_PRODUCT_FETCHED_CLIENT-ID |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
action | Yes | String | Action by MP Adapter |
brand_id | Yes | String | Brand ID Client |
product | Yes | Object | Object of product |
channel | Yes | String | Marketplace |
listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
name | Yes | String | Product Name |
merek | No | String | Product Brand |
sku | No | String | Product SKU |
description | Yes | String | Product Description |
slug | Yes | String | Product SLUG |
condition | No | String | Product Condition |
img_urls | No | String Array | Array of Product image URL |
variant | Yes | Array | Array object variant |
variant - variant_sku | Yes | String | Variant SKU |
variant - variant_name | Yes | String | Variant Name |
variant - status | Yes | String | Variant Status, available value: active/inactive. (will be deprecated soon) |
variant - currency_code | Yes | String | Currency Code |
variant - price | Yes | Float | Variant Price (will be deprecated soon) |
variant - variant_raw | Yes | JSON | Raw response from MP |
variant - url | Yes | String | Variant URL from MP |
variant - img_urls | No | String Array | Array of Variant image URL |
variant - volume | No | Object | Object of volume |
variant - volume - height | No | Float | Height of Variant |
variant - volume - length | No | Float | Length of Variant |
variant - volume - unit | No | String | Measurement Unit of Volume (e.g. "CM") |
variant - volume - width | No | Float | Width of Variant |
variant - weight | No | Object | Object of weight |
variant - weight - unit | No | String | Measurement Unit of Volume (e.g. "G") |
variant - weight - value | No | Float | Weight of Variant |
variant - attributes | No | Array | Array object attributes |
variant - attributes - name | No | String | Attributes Name |
variant - attributes - value | No | String | Attributes Value |
variant - attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
variant - options | No | Array | Array object options |
variant - options - name | No | String | Options Name |
variant - options - value | No | String | Options Value |
variant - options - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
variant - remote_variant | Yes | Object | Object remote variant (Remote Variant will different for every channel . Bukalapak example given ) |
variant - remote_variant - bklp_product_id | Yes | String | Bukalapak Product ID |
variant - remote_variant - remote_variant_id | Yes | Integer | Remote Variant ID |
variant - stock | No | Integer | Stock of the variant product (will be deprecated soon) |
variant - advance_stock | No | Object | Advance Stock of the variant product |
variant - advance_stock - total | No | Integer | Total Advance Stock of the variant product |
variant - advance_stock - sellable | No | Integer | Sellable Advance Stock of the variant product |
variant - advance_stock - in_transit | No | Integer | In Transit Advance Stock of the variant product |
variant_infos | No | Array | Array object variant infos |
variant_infos - remote_warehouse_id | No | *String | Remote warehouse ID, the value will be null if marketplace has not support multi warehouses |
variant_infos - stock | No | Integer | Stock variant for each warehouse |
variant_infos - price | No | Float | Price variant for each warehouse |
variant_infos - currency_code | No | String | Currency code variant for each warehouse |
variant_infos - status | No | String | Status variant for each warehouse |
variant_infos - pickup_in_store | No | Boolean | Indicates whether the product can be picked up at an offline store or not |
attributes | No | Array | Array object attributes product |
attributes - name | No | String | Attributes name |
attributes - value | No | String | Attributes value |
attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
remote_category | No | Object | Object remote category |
remote_category - remote_category_id | No | String | Remote Category ID |
remote_category - remote_category_name | No | String | Remote Category Name |
preorder | No | Object | Object Pre-Order |
preorder - value | No | Integer | Pre-Order Duration |
preorder - type | No | String | Pre-Order type (days / weeks / date) |
This Message Payload Example:
{
"id": "12312321",
"brand_id": "test-zeus",
"action":"jsonrpc_product_fetched_manual/import_variant_consumer_cron",
"product": {
"channel": "bklp",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"name": "Baju Baru Alhamdulillah",
"merek": "Alisan",
"sku": "1234",
"description": "Baju Baru Buat Hari Raya",
"slug": "baju-baru-alhamdulillah",
"condition": "New",
"img_urls": [""],
"attributes": [
{
"name": "Brand",
"value": "NoBrand",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"variants": [
{
"variant_sku": "1234-XL",
"variant_name": "Baju Baru Size XL",
"status": "active/inactive", // will be deprecated soon
"currency_code": "IDR",
"price": 10000, // will be deprecated soon
"variant_raw": "raw response(from mp)",
"url": "bukalapak.com/baju-baru-alhamdulillah",
"img_urls": [""],
"volume": {
"height": 0,
"length": 0,
"unit": "CM",
"width": 0
},
"weight": {
"unit": "G",
"value": 0
},
"attributes": [
{
"name": "color",
"value": "red",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"options": [
{
"name": "size",
"value": "XL",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"remote_variant": {
"bklp_product_id": "1002prt",
"remote_variant_id": 2182177299
},
"stock": 10, // will be deprecated soon
"advance_stock": {
"total": 10,
"sellable": 5,
"in_transit": 5
},
"variant_infos": [
{
"remote_warehouse_id": "PP-3000391", // support multi wh
"stock": 10,
"price": 10000,
"currency_code": "IDR",
"status": "active/inactive",
"pickup_in_store": false
},
{
"remote_warehouse_id": null, // doesn’t support multi wh
"stock": 20,
"price": 25000,
"currency_code": "IDR",
"status": "active/inactive",
"pickup_in_store": false
}
]
}
],
"remote_category": {
"remote_category_id": "123",
"remote_category_name": "Fashion"
},
"preorder": {
"value": 5,
"type": "days"
}
}
}
The value of remove_variant for each channel will be different
This is an example of a remote variant on Bukalapak :
"remote_variant": {
"bklp_product_id": "1002prt",
"remote_variant_id": 2182177299
}
This is an example of a remote variant on Blibli :
"remote_variant": {
"gdn_sku": "SAI-60061-00230-00001",
"upload_id": "",
"product_code": ""
}
This is an example of a remote variant on Lazada:
"remote_variant": {
"sku_id": 8921410258,
"item_id": 4836938997,
"shop_sku": "4836938997_ID-8921410258",
"seller_sku": "SV2719-MERAH"
}
This is an example of a remote variant on Shopee:
"remote_variant": {
"item_id": 2919884752,
"variation_id": 73763609762
}
This is an example of a remote variant on Tokopedia:
"remote_variant": {
"sku": "TS-500327",
"upload_id": 0,
"product_id": 1623383854,
"variant_id": 1234567890,
"product_sku": "",
"err_message": ""
}
This is an example of a remote variant on Tiktok:
"remote_variant": {
"product_id": "1234567890",
"variant_id": "9123020009"
}
This is an example of a remote variant on Zalora:
"remote_variant": {
"product_set_id": 187239,
"product_id": 1287364
}
Product Fetch Manual From Channel
This request using HTTP Json RPC
METHOD : ProductService.ProductFetchedManual
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 2333333 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
brand_id | Yes | String | Brand ID Client |
channels | Yes | String Array | List of Marketplace |
Note: You can fill in the channels to fetch products with specific marketplaces. If this field is empty, then fetch products will be carried out for all marketplaces that connect to the store
Request body example:
{
"jsonrpc":"2.0",
"Id":"12312312dsadas",
"method":"ProductService.ProductFetchedManual",
"params":{
"brand_id": "test-zeus",
"channels": ["lzda", "bklp"]
}
}
The above request returns JSON structured like this:
{
"id": "12312312dsadas", //activity id
"jsonrpc": "2.0",
"result": {
"message": "OK",
"success": true,
}
}
Product Fetch Single Variant From Channel
This request using HTTP Json RPC
This request using HTTP JSONRPC and the product message will be sent through PubSub (CNX_PRODUCT_FETCHED), the definition of a successful response is a successful publish to PubSub.**
METHOD : ProductService.FetchVariantsBySku
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 2333333 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
brand_id | Yes | String | Brand ID Client |
channel | Yes | String | Marketplace name |
skus | Yes | String Array | List of SKU name (max:10 skus) |
Note: If the number of requests on the SKU is more than 10, then we only pull the first 10 SKU data.
List of available channel in this endpoint:
Channel Code | Description |
---|---|
lzda | Lazada |
tkpd | Tokopedia |
tktk | Tiktok |
shpe | Shopee |
Request body example:
{
"jsonrpc":"2.0",
"id":"test1",
"method":"ProductService.FetchVariantsBySku",
"params":{
"brand_id": 5558 ,
"channel" : "tkpd" ,
"skus" :[
"baju-black"
]
}
}
The above request returns JSON structured like this:
{
"id": "test1",
"jsonrpc": "2.0",
"result": [
{
"message": "Success Get Current Sku's Variant",
"sku": "baju-black",
"success": true
}
]
}
Category and Attributes Fetch From Channel V1
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Category Fetched | CNX_CATEGORY_FETCHED_CLIENT-ID |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
brand_id | Yes | String | Brand ID Client |
category | Yes | Object | Object of category |
category - channel | Yes | String | Marketplace |
category - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
category - category_name | Yes | String | Category Name |
category - slug | Yes | String | Category SLUG |
category - remote_category_id | Yes | String | Remote Category ID |
category - remote_parent_id | Yes | String | Remote Parent ID |
category - is_leaf | Yes | Boolean | Last Category when true |
attributes | Yes | Array | Array object attributes |
attributes - field_name | Yes | String | Attributes field name |
attributes - input_type | Yes | String | Attributes input type (e.g. OPTIONS / STRING) |
attributes - option | Yes | Array | Array of available option attributes |
attributes - is_mandatory | Yes | Boolean | Must be filled when true |
attributes - is_variant_attribute | Yes | Boolean | Attributes on variant level when true and attributes on product level on false. |
attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
This Message Payload Example:
{
"id": "12312321",
"brand_id": "test-zeus",
"category": {
"channel": "bklp",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"category_name": "Komputer & Laptop > Kabel & Adaptor > Kabel HDMI",
"slug": "komputer-&-laptop->-kabel-&-adaptor->-kabel-hdmi",
"remote_category_id": "1234",
"remote_parent_id": "12",
"is_leaf": true,
"attributes": [
{
"field_name": "Warna",
"input_type": "OPTIONS",
"options": [
"Putih",
"Hitam",
"Biru",
"Merah",
"Merah Muda",
"Kuning",
"Ungu",
"Biru Muda",
"Orange",
"Cokelat",
"Hijau",
"Abu-abu"
],
"is_mandatory": false,
"is_variant_attribute": true,
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
},
{
"field_name": "Minimum Order",
"input_type": "STRING",
"options": null,
"is_mandatory": true,
"is_variant_attribute": false,
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
]
}
}
Category and Attributes Fetch From Channel V2
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Category Fetched | CNX_CATEGORY_FETCHED_V2_CLIENT-ID |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
action | Yes | String | Action by MP Adapter |
brand_id | Yes | String | Brand ID Client |
category | Yes | Object | Object of category |
category - id | Yes | Number | Category ID |
category - channel | Yes | String | Marketplace |
category - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
category - category_name | Yes | String | Category Name |
category - slug | Yes | String | Category SLUG |
category - remote_category_id | Yes | String | Remote Category ID |
category - remote_parent_id | Yes | String | Remote Parent ID |
category - is_leaf | Yes | Boolean | Last Category when true |
category - status | Yes | String | Category status |
attributes | Yes | Array | Array object attributes |
attributes - id | Yes | Number | Attributes ID |
attributes - field_name | Yes | String | Attributes field name |
attributes - input_type | Yes | String | Attributes input type (e.g. OPTIONS / STRING) |
attributes - status | Yes | String | Attributes status |
attributes - is_mandatory | Yes | Boolean | Must be filled when true |
attributes - is_variant_attribute | Yes | Boolean | Attributes on variant level when true and attributes on product level on false. |
attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
options | Yes | Array | Array of available option attributes |
options - option_name | Yes | String | Name of the option |
options - status | Yes | String | Status of the option |
This Message Payload Example:
{
"id": "12312321",
"action": "refresh_collection_consumer_cron",
"brand_id": "test-zeus",
"category": {
"id": 15082,
"channel": "bklp",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"category_name": "Sepeda",
"slug": "sepeda",
"remote_category_id": "64",
"remote_parent_id": "128",
"is_leaf": false,
"status": "idle",
"attributes": [
{
"id": 11231,
"field_name": "Condition",
"input_type": "OPTIONS",
"status": "updated",
"is_mandatory": false,
"is_variant_attribute": false,
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"options": [
{
"option_name": "Baru",
"status": "new"
}
]
},
{
"id": 1447272,
"field_name": "Brand-0",
"input_type": "OPTIONS",
"status": "deleted",
"is_mandatory": true,
"is_variant_attribute": false,
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"options": [
{
"option_name": "Indo Collection",
"status": "deleted"
},
{
"option_name": "My Collection",
"status": "deleted"
}
]
}
]
}
}
Category and Attributes Fetch Manual From Channel V2
This request using HTTP Json RPC
METHOD : CategoryService.GetCategory
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 1332334 |
Request Body Parameters
Name | Required | Type | Description |
---|---|---|---|
channels | No | Array | Channel List |
Response Body Parameters
Response body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action by MP Adapter |
action | Yes | String | Action by MP Adapter |
category | Yes | Object | Object of category |
category - id | Yes | Number | Category ID |
category - channel | Yes | String | Marketplace |
category - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
category - category_name | Yes | String | Category Name |
category - slug | Yes | String | Category SLUG |
category - remote_category_id | Yes | String | Remote Category ID |
category - remote_parent_id | Yes | String | Remote Parent ID |
category - is_leaf | Yes | Boolean | Last Category when true |
category - status | Yes | String | Category status |
attributes | Yes | Array | Array object attributes |
attributes - id | Yes | Number | Attributes ID |
attributes - field_name | Yes | String | Attributes field name |
attributes - input_type | Yes | String | Attributes input type (e.g. OPTIONS / STRING) |
attributes - status | Yes | String | Attributes status |
attributes - is_mandatory | Yes | Boolean | Must be filled when true |
attributes - is_variant_attribute | Yes | Boolean | Attributes on variant level when true and attributes on product level on false. |
attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
options | Yes | Array | Array of available option attributes |
options - option_name | Yes | String | Name of the option |
options - status | Yes | String | Status of the option |
This Message Payload Example:
{
"id": "12312321",
"action": "jsonrpc_get_category",
"category": {
"id": 15082,
"channel": "bklp",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"category_name": "Sepeda",
"slug": "sepeda",
"remote_category_id": "64",
"remote_parent_id": "128",
"is_leaf": false,
"status": "idle",
"attributes": [
{
"id": 11231,
"field_name": "Condition",
"input_type": "OPTIONS",
"status": "updated",
"is_mandatory": false,
"is_variant_attribute": false,
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"options": [
{
"option_name": "Baru",
"status": "new"
}
]
},
{
"id": 1447272,
"field_name": "Brand-0",
"input_type": "OPTIONS",
"status": "deleted",
"is_mandatory": true,
"is_variant_attribute": false,
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"options": [
{
"option_name": "Indo Collection",
"status": "deleted"
},
{
"option_name": "My Collection",
"status": "deleted"
}
]
}
]
}
}
Bulk Create and Update Product
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | BulkUpsertProducts | CNX_BULK_UPSERT_PRODUCT |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client Key |
id | Yes | String | Activity ID of the action by MP Adapter |
products | Yes | array | Array object products |
product - brand_id | Yes | String | Product Brand ID client |
product - name | Yes | String | Product Name |
product - parent_sku | Yes | Array | Product Parent SKU |
product - description | Yes | String | Product Description |
product - image_urls | Yes | Array | Array of image URL |
product - dimension_unit | Yes | String | Measurement Unit of Dimension (e.g. "CM") |
product - width | Yes | Float | Width of Product |
product - height | Yes | Float | Height of Product |
product - length | Yes | Float | Length of Product |
product - weight_unit | Yes | String | Measurement Unit of Weight (e.g. "GR") |
product - weight | Yes | Float | Weight of Product |
product - has_variant | Yes | Boolean | Has Variant ? |
product - channel_products | Yes | Array | Array object channel products |
channel | Yes | String | Marketplace |
listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) |
channel_category_id | Yes | String | Marketplace category id |
channel_product_status | Yes | String | Product Status (active / inactive) |
preorder | No | Object | Object Pre-Order |
preorder - is_active | No | Boolean | Is Pre-Order |
preorder - value | No | Integer | Pre-Order value |
preorder - type | No | String | Pre-Order type (days / weeks / date) |
attributes | Yes | Array | Array object attributes |
attributes - name | Yes | String | Attributes Name |
attributes - value | Yes | String | Attributes Value |
attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) other than tktk channel will return empty array |
channel_variants | Yes | Array | Array object channel variant |
remote_variant | Yes | Object | Object remote variant (Create Product when empty and Update Product when filled. Remote Variant will different for every channel. Bukalapak example given ) |
bklp_product_id | Yes | String | Bukalapak Product ID |
remote_variant_id | Yes | String | Remote Variant ID |
sku | Yes | String | SKU of Channel Variant |
image_urls | Yes | Array | Array of image URL |
action | No | String | Action for Variant (ADD / UPDATE / DELETE) |
stock | No | Integer | Stock of Channel Variant (cek notes rule) |
variant_remote_warehouse | No | Array | Array of Variant Remote Warehouse code |
currency_code | No | String | Currency code of Channel Variant (Only Available for Open-API) |
price | Yes | Float | Price of Channel Variant |
variant_name | Yes | String | Variant Name |
active | Yes | Boolean | Product Status Active when true and Inactive when false |
attributes | Yes | Array | Array object attributes |
name | Yes | String | Attributes Name |
value | Yes | String | Attributes Value |
listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) |
is_customized | No | Boolean | Insert this field for Lazada only, if create custom variant attribute |
This Message Payload Example:
{
"id": "12312321",
"client_key": "12312321",
"products": [
{
"brand_id": "dummyBrandID",
"name": "Kacamata",
"parent_sku": "kcmt-keren",
"description": "Kacamata keren",
"image_urls": [
"https://storage.googleapis.com/connexi-development/Logo%20-%202021-01-27T08:39:32Z%20-%20306335646369.png"
],
"dimension_unit": "CM",
"width": 10,
"height": 10,
"length": 10,
"weight_unit": "GR",
"weight": 250,
"has_variant": true,
"channel_products": [
{
"channel": "lzda",
"channel_category_id": "10100064",
"channel_product_status": "active",
"preorder": {
"is_active": true,
"value": 4,
"type": "days"
},
"attributes": [
{
"name": "short_description",
"value": "Hello"
},
{
"name": "video",
"value": ""
},
{
"name": "Delivery_Option_Instant",
"value": "Yes"
},
{
"name": "warranty_type",
"value": "International Seller Warranty"
},
{
"name": "warranty",
"value": "1 Month"
},
{
"name": "product_warranty",
"value": ""
},
{
"name": "delivery_option_economy",
"value": "No"
},
{
"name": "name_en",
"value": "glasses"
},
{
"name": "delivery_option_express",
"value": "No"
},
{
"name": "Hazmat",
"value": "None"
},
{
"name": "description_en",
"value": "a"
},
{
"name": "short_description_en",
"value": "a"
},
{
"name": "brand",
"value": "wow"
},
{
"name": "name",
"value": "wow"
},
{
"name": "description",
"value": "wow"
}
],
"channel_variants": [
{
"remote_variant": {
"bklp_product_id": "1002prt",
"remote_variant_id": 2182177299
}, // jika kosong akan create, jika ada isinya akan melakukan update
"sku": "Keren-001",
"image_urls": [
"https://storage.googleapis.com/connexi-development/Logo%20-%202021-01-27T08:39:32Z%20-%20306335646369.png"
],
"variant_remote_warehouse": [
"73347589009810"
],
"action": "UPDATE",
"stock": 20,
"price": 200000,
"currency_code": "IDR",
"variant_name": "Hitam",
"active": true,
"attributes": [
{
"name": "special_price",
"value": "200",
"is_customized": true // Insert this field for Lazada only, if create custom variant attribute
},
{
"name": "special_from_date",
"value": "200"
},
{
"name": "special_to_date",
"value": "200"
},
{
"name": "package_content",
"value": "20"
},
{
"name": "tax_class",
"value": "DTP"
},
{
"name": "package_contents_en",
"value": "2"
},
{
"name": "SellerSku",
"value": "2"
},
{
"name": "quantity",
"value": "2"
},
{
"name": "price",
"value": "200000"
},
{
"name": "package_weight",
"value": "1"
},
{
"name": "package_length",
"value": "1"
},
{
"name": "package_width",
"value": "1"
},
{
"name": "package_height",
"value": "1"
}
]
}
]
},
{
"channel": "tkpd",
"channel_category_id": "2336",
"attributes": [
{
"name": "Minimum Order",
"value": "1"
},
{
"name": "Size Chart",
"value": "https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
}
],
"channel_variants": [
{
"remote_variant": {},
"sku": "SKUL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "L",
"action": "ADD",
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "L"
}
]
},
{
"remote_variant": {},
"sku": "SKUXL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "XL",
"action": "ADD",
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "XL"
}
]
}
]
},
{
"channel": "tkpd",
"channel_category_id": "2336",
"attributes": [
{
"name": "Minimum Order",
"value": "1"
}
],
"channel_variants": [
{
"remote_variant": {},
"sku": "SKUBIRU",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "L",
"action": "ADD",
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "L"
}
]
},
{
"remote_variant": {},
"sku": "SKUXL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "XL",
"action": "ADD",
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "XL"
}
]
}
]
},
{
"channel": "tktk",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"channel_category_id": "2336",
"attributes": [
{
"name": "Minimum Order",
"value": "1",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"channel_variants": [
{
"remote_variant": {},
"sku": "SKUBIRU",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "L",
"action": "ADD",
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "L",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
]
},
{
"remote_variant": {},
"sku": "SKUXL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "XL",
"action": "ADD",
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "XL",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
]
}
]
}
]
}
]
}
Bulk Create and Update Product V2
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | BulkUpsertProducts | CNX_BULK_UPSERT_PRODUCT |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client Key |
id | Yes | String | Activity ID of the action by MP Adapter |
products | Yes | array | Array object products |
product - brand_id | Yes | String | Product Brand ID client |
product - name | Yes | String | Product Name |
product - parent_sku | Yes | Array | Product Parent SKU |
product - description | Yes | String | Product Description |
product - image_urls | Yes | Array | Array of image URL |
product - dimension_unit | Yes | String | Measurement Unit of Dimension (e.g. "CM") |
product - width | Yes | Float | Width of Product |
product - height | Yes | Float | Height of Product |
product - length | Yes | Float | Length of Product |
product - weight_unit | Yes | String | Measurement Unit of Weight (e.g. "GR") |
product - weight | Yes | Float | Weight of Product |
product - has_variant | Yes | Boolean | Has Variant ? |
product - channel_products | Yes | Array | Array object channel products |
channel | Yes | String | Marketplace |
listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) |
channel_category_id | Yes | String | Marketplace category id |
channel_product_status | Yes | String | Product Status (active / inactive) |
preorder | No | Object | Object Pre-Order |
preorder - is_active | No | Boolean | Is Pre-Order |
preorder - value | No | Integer | Pre-Order value |
preorder - type | No | String | Pre-Order type (days / weeks / date) |
attributes | Yes | Array | Array object attributes |
attributes - name | Yes | String | Attributes Name |
attributes - value | Yes | String | Attributes Value |
channel_variants | Yes | Array | Array object channel variant |
channel_variants - remote_variant | Yes | Object | Object remote variant (Create Product when empty and Update Product when filled. Remote Variant will different for every channel. Bukalapak example given ) |
channel_variants - remote_variant - bklp_product_id | Yes | String | Bukalapak Product ID |
channel_variants - remote_variant - remote_variant_id | Yes | String | Remote Variant ID |
channel_variants - sku | Yes | String | SKU of Channel Variant |
channel_variants - image_urls | Yes | Array | Array of image URL |
channel_variants - action | No | String | Action for Variant (ADD / UPDATE / DELETE) |
channel_variants - variant_name | Yes | String | Variant Name |
channel_variants - attributes | Yes | Array | Array object attributes |
channel_variants - attributes - name | Yes | String | Attributes Name |
channel_variants - attributes - value | Yes | String | Attributes Value |
channel_variants - attributes - is_customized | No | Boolean | Insert this field for Lazada only, if create custom variant attribute |
channel_variants - attributes - listing_platforms | No | String Array | Product Platform (only for tktk channel with value “TOKOPEDIA”, “TIKTOK_SHOP”, or both) |
channel_variants - variant_infos | Yes | Array | Array object variant infos |
channel_variants - variant_infos - remote_warehouse_id | Yes | String | Variant remote warehouse id |
channel_variants - variant_infos - stock | No | *Integer | Variant stock for each warehouse |
channel_variants - variant_infos - price | Yes | Float | Variant price for each warehouse |
channel_variants - variant_infos - currency_code | No | String | Variant currency code (only available for OPEN-API) |
channel_variants - variant_infos - active | Yes | Boolean | Variant status for each warehouse (value true means product status active, if false then product should be inactive) |
channel_variants - variant_infos - pickup_in_store | No | Boolean | Indicates whether the product can be picked up at an offline store or not |
This Message Payload Example:
{
"id": "12312321",
"client_key": "12312321",
"products": [
{
"brand_id": "dummyBrandID",
"name": "Kacamata",
"parent_sku": "kcmt-keren",
"description": "Kacamata keren",
"image_urls": [
"https://storage.googleapis.com/connexi-development/Logo%20-%202021-01-27T08:39:32Z%20-%20306335646369.png"
],
"dimension_unit": "CM",
"width": 10,
"height": 10,
"length": 10,
"weight_unit": "GR",
"weight": 250,
"has_variant": true,
"channel_products": [
{
"channel": "lzda",
"channel_category_id": "10100064",
"channel_product_status": "active",
"preorder": {
"is_active": true,
"value": 4,
"type": "days"
},
"attributes": [
{
"name": "short_description",
"value": "Hello"
},
{
"name": "video",
"value": ""
},
{
"name": "Delivery_Option_Instant",
"value": "Yes"
},
{
"name": "warranty_type",
"value": "International Seller Warranty"
},
{
"name": "warranty",
"value": "1 Month"
},
{
"name": "product_warranty",
"value": ""
},
{
"name": "delivery_option_economy",
"value": "No"
},
{
"name": "name_en",
"value": "glasses"
},
{
"name": "delivery_option_express",
"value": "No"
},
{
"name": "Hazmat",
"value": "None"
},
{
"name": "description_en",
"value": "a"
},
{
"name": "short_description_en",
"value": "a"
},
{
"name": "brand",
"value": "wow"
},
{
"name": "name",
"value": "wow"
},
{
"name": "description",
"value": "wow"
}
],
"channel_variants": [
{
"remote_variant": {
"bklp_product_id": "1002prt",
"remote_variant_id": 2182177299
}, // jika kosong akan create, jika ada isinya akan melakukan update
"sku": "Keren-001",
"image_urls": [
"https://storage.googleapis.com/connexi-development/Logo%20-%202021-01-27T08:39:32Z%20-%20306335646369.png"
],
"action": "UPDATE",
"variant_name": "Hitam",
"variant_infos": [
{
"remote_warehouse_id": "dropshipping",
"stock": 20,
"price": 20000,
"currency_code": "IDR",
"active": true,
"pickup_in_store": false
}
],
"attributes": [
{
"name": "special_price",
"value": "200",
"is_customized": true // Insert this field for Lazada only, if create custom variant attribute
},
{
"name": "special_from_date",
"value": "200"
},
{
"name": "special_to_date",
"value": "200"
},
{
"name": "package_content",
"value": "20"
},
{
"name": "tax_class",
"value": "DTP"
},
{
"name": "package_contents_en",
"value": "2"
},
{
"name": "SellerSku",
"value": "2"
},
{
"name": "quantity",
"value": "2"
},
{
"name": "price",
"value": "200000"
},
{
"name": "package_weight",
"value": "1"
},
{
"name": "package_length",
"value": "1"
},
{
"name": "package_width",
"value": "1"
},
{
"name": "package_height",
"value": "1"
}
]
}
]
},
{
"channel": "tkpd",
"channel_category_id": "2336",
"attributes": [
{
"name": "Minimum Order",
"value": "1"
},
{
"name": "Size Chart",
"value": "https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
}
],
"channel_variants": [
{
"remote_variant": {},
"sku": "SKUL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"variant_name": "L",
"action": "ADD",
"variant_infos": [
{
"remote_warehouse_id": "12345",
"stock": 20,
"price": 20000,
"currency_code": "IDR",
"active": true,
"pickup_in_store": false
}
],
"attributes": [
{
"name": "Ukuran",
"value": "L"
}
]
},
{
"remote_variant": {},
"sku": "SKUXL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"variant_name": "XL",
"action": "ADD",
"variant_infos": [
{
"remote_warehouse_id": "12345",
"stock": 20,
"price": 20000,
"currency_code": "IDR",
"active": true,
"pickup_in_store": false
}
],
"attributes": [
{
"name": "Ukuran",
"value": "XL"
}
]
}
]
},
{
"channel": "tkpd",
"channel_category_id": "2336",
"attributes": [
{
"name": "Minimum Order",
"value": "1"
}
],
"channel_variants": [
{
"remote_variant": {},
"sku": "SKUBIRU",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"variant_name": "L",
"action": "ADD",
"variant_infos": [
{
"remote_warehouse_id": "12345",
"stock": 20,
"price": 20000,
"currency_code": "IDR",
"active": true,
"pickup_in_store": false
}
],
"attributes": [
{
"name": "Ukuran",
"value": "L"
}
]
},
{
"remote_variant": {},
"sku": "SKUXL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"variant_name": "XL",
"action": "ADD",
"variant_infos": [
{
"remote_warehouse_id": "12345",
"stock": 20,
"price": 20000,
"currency_code": "IDR",
"active": true,
"pickup_in_store": false
}
],
"attributes": [
{
"name": "Ukuran",
"value": "XL"
}
]
}
]
},
{
"channel": "tktk",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"],
"channel_category_id": "2336",
"attributes": [
{
"name": "Minimum Order",
"value": "1",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
],
"channel_variants": [
{
"remote_variant": {},
"sku": "SKUBIRU",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "L",
"action": "ADD",
"variant_infos": [
{
"remote_warehouse_id": "12345",
"stock": 20,
"price": 20000,
"currency_code": "IDR",
"active": true,
"pickup_in_store": false
}
],
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "L",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
]
},
{
"remote_variant": {},
"sku": "SKUXL",
"image_urls": [
"https://storage.googleapis.com/sirclo-1152-storefront/products/1659434408157938699_31ce0de7110a010826f7bc73ef283154.jpg"
],
"price": 14000,
"currency_code": "IDR",
"stock": 20,
"variant_name": "XL",
"action": "ADD",
"variant_infos": [
{
"remote_warehouse_id": "12345",
"stock": 20,
"price": 20000,
"currency_code": "IDR",
"active": true,
"pickup_in_store": false
}
],
"active": true,
"attributes": [
{
"name": "Ukuran",
"value": "XL",
"listing_platforms": ["TOKOPEDIA", "TIKTOK_SHOP"]
}
]
}
]
}
]
}
]
}
Single Update Price
This request using HTTP Json RPC
METHOD : ProductService.UpdatePrice
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | client_key = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
sku | Yes | String | Product SKU |
prices | Yes | Array | Array object client brand |
prices - channel | Yes | String | MP code |
prices - remote_variant | Yes | Object | Interface remote variant (depends on MP) |
prices - remote_warehouse_code | No | String | Remote warehouse code |
prices - sale_price | Yes | Integer | Original price |
Request body example:
{
"jsonrpc": "2.0",
"id": "activity 1234",
"method": "ProductService.UpdatePrice",
"params": {
"brand_id": "string_brand_id_1",
"sku": "string_sku_1",
"prices": [
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_marketplace_1",
"sale_price": 10
},
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_marketplace_1",
"sale_price": 10000
}
]
}
}
The above request returns JSON structured like this:
{
"id": "123145",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"sku": "string_sku",
"prices": [
{
"channel": "bklp",
"message": "successfuly updated/error response",
"status": "Finished/Failed",
"success": false,
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_warehouse_code"
}
]
}
}
Bulk Update Price
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | BulkUpdatePrice | CNX_BULK_UPDATE_PRICE |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client key |
id | Yes | String | Activity ID |
variants | Yes | Array | Line items |
variants - brand_id | Yes | String | Brand ID variant |
variants - sku | Yes | String | Variant SKU |
variants - prices | Yes | Array | Array object client brand |
prices - channel | Yes | String | MP code |
prices - remote_variant | Yes | Object | Object remote variant (depends on MP) |
prices - remote_warehouse_code | No | String | Remote warehouse code |
prices - sale_price | Yes | Float | Original price |
This Message Payload Example:
{
"client_key": "client_key",
"id": "123455",
"variants": [
{
"brand_id": "string_brand_id_1",
"sku": "seller_sku",
"prices": [
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "warehouse_code_from_channel",
"sale_price": 100000
}
]
}
]
}
Product Requirement
Create Product
Single create product requirement for each marketplace
Tiktok
- Channel_variants is mandatory (minimum 1)
- Variant.Attributes maximum 3 each variant, not all combination required(ex: using colour & size attribute, variant1: Red & XL, variant2: Blue & L. no need to input another variant with Blue & XL attributes or Red & L attributes)
- Image maximum 9 image
- SuportHTML Yes!
- Stock is mandatory (cannot be empty) and accept zero value (stock = 0)
- Weight support float number, rounding 3 digits
- NOTES: Create or Update TikTok Products always makes the product status "active" in Marketplace
Tokopedia
- Attribute channel is mandatory (minimum 1)
- Size chart attribute is mandatory for product with variant
- SuportHTML Yes, but avoid ( non-ASCII or special character)
- Stock is mandatory (cannot be empty) and should be greater than zero (stock > 0)
- Weight doesn't support float number
- When create and update product preorder's, type field only support value days and it should not exceed 91 days
Blibli
- Price is mandatory (cannot be empty)
- Brand name should be use brand name from the marketplace. (Brand name list will not be shown when creating a single product. But, if brand name does not exist in marketplace, there will be an error message and brand name suggestion.)
- SuportHTML Yes but avoid ( non-ASCII or special character)
- Stock is not mandatory (can be empty) and accept zero value (stock = 0)
- Weight doesn't support float number
- Product Archive: If all variants have an inactive status, the product will be archived in the Seller Center.
- NOTES: Blibli uses queue to create and update product
- When create and update product preorder's, type field with value days should not exceed 90. If the value weeks it should not exceed 13, and if the value is date it must be greater that tomorrow date, and max value is 90 days from tomorrow
- If a product has several variants, each variant must have the same warehouse. For example, variant A exist in two warehouses, variants B and C must be in the same warehouses as variant A.
Shopee
- Price is mandatory (cannot be empty)
- Weight should be greater than zero (weight > 0), support float number
- Description length should be greater than two characters (len(description) > 2)
- Package volume (length * width * height) should be between 0.0 and 80.0 inclusive
- Brand is mandatory (cannot be empty)
- SuportHTML No!
- Stock is not mandatory (can be empty) and accept zero value (stock = 0)
- When create and update product preorder's, type field only support value days and it should follow the product category's availability
Lazada
- Variant value in attribute channel is unique
- Brand name should be use brand name from the marketplace. (Brand name list will not be shown when creating a single product. But, if brand name does not exist in marketplace, there will be an error message and brand name suggestion.)
- SuportHTML Yes!
- Stock is not mandatory (can be empty) and accept zero value (stock = 0)
- Weight support float number
- Product Attributes utilize the size_chart attribute is mandatory for Women's Clothing categories, excluding Lingerie, Sleep & Lounge, and Socks & Tights.
- When create and update product preorder's, type field only support value days and it should have range between 7-30 days
Bukalapak
- Description length should be greater than 30 characters (len(description) > 30)
- Weight should be lower than 1 ton, doesn't support float number
- Price is mandatory (cannot be empty) and should be numeric
- Product name cannot use the one already in the seller center
- Stuff name length should be between 6 and 150 characters inclusive
- SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
- Stock is mandatory (cannot be empty) and should be greater than zero (stock > 0)
- When create and update product preorder's, type field only support value days and it should have range between 2-60 days
Update Product
Update product capabilites for each marketplace
Tiktok
- Variant_remote_warehouse is mandatory
- SuportHTML Yes!
- Stock is mandatory (cannot be empty) and accept zero value (stock = 0)
- If you want to add variations to an existing product without variants, then when updating the product you need to fill in the remote variants with the existing remote variants of the product along with the action field with ADD (specifically for the first data in channel_variants field).
Tokopedia
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | No |
Description | Yes | Yes |
Price | Yes | Yes |
- Description length should be less than 2000 characters
(len(description) < 2000) - SuportHTML Yes, but avoid ( non-ASCII or special character)
- Stock is not mandatory (can be empty) and should be greater than zero (stock > 0)
NOTES: Product on Tokopedia cannot be updated if the product already has a transaction
Shopee
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | Yes |
Description | Yes | Yes |
Price | Yes | Yes |
- SuportHTML No!
- Stock doesn't support update stock on UpdateProduct, whether the field is filled or not has no effect
Lazada
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | Yes |
Description | Yes | Yes |
Price | Yes | Yes |
- Description length should be between 6 and 25000 characters (len(description) > 6 && len(description) < 25000)
- SuportHTML Yes!
- Stock is not mandatory (can be empty) and and accept zero value (stock = 0)
- Not allowed to add / remove attribute variants
Bukalapak
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | Yes |
Description | Yes | Yes |
Price | Yes | Yes |
- Description length should be less than 65530 characters
(len(description) < 65530) - SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
- Stock is mandatory (cannot be empty) and accept zero value (stock = 0)
Blibli
- Description length should be less than 5000 characters
(len(description) < 5000) - SuportHTML Yes but avoid ( non-ASCII or special character)
- Stock doesn't support update stock on UpdateProduct, whether the field is filled or not has no effect
- If a product has several variants, each variant must have the same warehouse. For example, variant A exist in two warehouses, variants B and C must be in the same warehouses as variant A.
Update Price
Update price capabilites for each marketplace
Tokopedia
Limitation requests for Tokopedia (8 Request/s. 1 request up to 100 skus).
Lazada
Requests to Lazada above 13 items will risk the success rate for items above 13.
Blibli
Limitation requests for Blibli (5 Request/hour per parent sku).
Product V2 Requirement
Create Product
Single or bulk create product requirement for each marketplace
Tiktok
- Channel_variants is mandatory (minimum 1)
- Variant.Attributes maximum 3 each variant, not all combination required(ex: using colour & size attribute, variant1: Red & XL, variant2: Blue & L. no need to input another variant with Blue & XL attributes or Red & L attributes)
- Image maximum 9 image
- SuportHTML Yes!
- Stock is mandatory (cannot be empty) and accept zero value (stock = 0). MP Adapter will assign the stock to each warehouse based on your requests
- Weight support float number, rounding 3 digits
- Price is mandatory. If variant has implemented multi warehouses, the price must same for each warehouse
- MP Adapter only can set the product status to active because there is restriction from tiktok. So it's expected when you get error while set active field to false
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
Tokopedia
- Attribute channel is mandatory (minimum 1)
- Size chart attribute is mandatory for product with variant
- SuportHTML Yes, but avoid ( non-ASCII or special character)
- Stock is mandatory (cannot be empty) and should be greater than zero (stock > 0). MP Adapter will assign the stock to each warehouse based on your requests
- Weight doesn't support float number
- Product name length should be greater than 25 characters
- When create and update product preorder's, type field only support value days and it should not exceed 91 days
- Prices can be different in some warehouses
- The status between some warehouses cannot be different, but between some variants can be different
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
Blibli
- Price is mandatory (cannot be empty)
- Brand name should be use brand name from the marketplace. (Brand name list will not be shown when creating a single product. But, if brand name does not exist in marketplace, there will be an error message and brand name suggestion.)
- SuportHTML Yes but avoid ( non-ASCII or special character)
- Stock is not mandatory (can be empty) and accept zero value (stock = 0). MP Adapter will assign the stock to each warehouse based on your requests
- Weight doesn't support float number
- Blibli uses asynchronous process while create and update product
- When create and update product preorder's, type field with value days should not exceed 90. If the value weeks it should not exceed 13, and if the value is date it must be greater that tomorrow date, and max value is 90 days from tomorrow
- Prices and Status can be different in some warehouses
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
Shopee
- Price is mandatory (cannot be empty)
- Weight should be greater than zero (weight > 0), support float number
- Description length should be greater than two characters (len(description) > 2)
- Package volume (length * width * height) should be between 0.0 and 80.0 inclusive
- Brand is mandatory (cannot be empty)
- SuportHTML No!
- Stock is not mandatory (can be empty) and accept zero value (stock = 0). MP Adapter will assign the stock to each warehouse based on your requests
- When create and update product preorder's, type field only support value days and it should follow the product category's availability
- Price between some warehouses cannot be different, but between some variants can be different
- Status for each variants must be same
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
Lazada
- Variant value in attribute channel is unique
- Brand name should be use brand name from the marketplace. (Brand name list will not be shown when creating a single product. But, if brand name does not exist in marketplace, there will be an error message and brand name suggestion.)
- SuportHTML Yes!
- Stock is not mandatory (can be empty) and accept zero value (stock = 0)
- Weight support float number
- When create and update product preorder's, type field only support value days and it should have range between 7-30 days
- Price and Status between some warehouses cannot be different, but between some variants can be different
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
Bukalapak
- Description length should be greater than 30 characters (len(description) > 30)
- Weight should be lower than 1 ton, doesn't support float number
- Price is mandatory (cannot be empty) and should be numeric
- Product name cannot use the one already in the seller center
- Stuff name length should be between 6 and 150 characters inclusive
- SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
- Stock is mandatory (cannot be empty) and should be greater than zero (stock > 0)
- When create and update product preorder's, type field only support value days and it should have range between 2-60 days
- Bukalapak doesn't support multi warehouse
Update Product
Update product capabilites for each marketplace
Tiktok
- Variant_remote_warehouse is mandatory
- SuportHTML Yes!
- Stock is mandatory (cannot be empty) and accept zero value (stock = 0)
- If you want to add variations to an existing product without variants, then when updating the product you need to fill in the remote variants with the existing remote variants of the product along with the action field with ADD (specifically for the first data in channel_variants field).
- Doesn't support adding/removing warehouses in existing products
- Price is mandatory. If variant has implemented multi warehouses, the price must same for each warehouse
- MP Adapter only can set the product status to active because there is restriction from tiktok. So it's expected when you get error while set active field to false
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
- Support update attribute combination, need to use action delete and add to change attribute's tiering
Tokopedia
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | No |
Description | Yes | Yes |
Price | Yes | Yes |
- Description length should be less than 2000 characters
(len(description) < 2000) - SuportHTML Yes, but avoid ( non-ASCII or special character)
- Stock is not mandatory (can be empty) and if you filled, it should be greater than zero (stock > 0)
- Doesn't support adding/removing warehouses in existing products
- Product name on Tokopedia cannot be updated if the product already has a transaction
- Existing product updates will not update the stock (stock will be ignored by MP Adapter), except the action field is "ADD"
- Prices can be different in some warehouses
- The status between some warehouses cannot be different, but between some variants can be different
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
- Support update attribute combination, need to use action delete and add to change attribute's tiering
Shopee
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | Yes |
Description | Yes | Yes |
Price | Yes | Yes |
- SuportHTML No!
- When create and update product preorder's, type field only support value days and it should follow the product category's availability
- Existing product updates will not update the stock (stock will be ignored by MP Adapter), except the action field is "ADD"
- Price between some warehouses cannot be different, but between some variants can be different
- Status for each variants must be same
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
- Support update attribute combination, need to use action delete and add to change attribute's tiering
- Doesn't support adding/removing warehouses in existing products
Lazada
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | Yes |
Description | Yes | Yes |
Price | Yes | Yes |
- Description length should be between 6 and 25000 characters (len(description) > 6 && len(description) < 25000)
- SuportHTML Yes!
- Stock is not mandatory (can be empty) and and accept zero value (stock = 0)
- Not allowed to add / remove attribute variants
- When create and update product preorder's, type field only support value days and it should have range between 7-30 days
- Existing product updates will not update the stock (stock will be ignored by MP Adapter)
- Price and Status between some warehouses cannot be different, but between some variants can be different
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
- Doesn't support update attribute combination
- Doesn't support adding/removing warehouses in existing products
Bukalapak
Attribute | Without Variant | With Variant |
---|---|---|
Name | Yes | Yes |
Description | Yes | Yes |
Price | Yes | Yes |
- Description length should be less than 65530 characters
(len(description) < 65530) - SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
- Bukalapak doesn't support multi warehouse
- Stock is not mandatory (can be empty)
- Existing product updates will not update the stock (stock will be ignored by MP Adapter)
- When create and update product preorder's, type field only support value days and it should have range between 2-60 days
- Doesn't support update attribute combination
Blibli
- Description length should be less than 5000 characters
(len(description) < 5000) - Blibli uses asynchronous process while create product
- SuportHTML Yes but avoid ( non-ASCII or special character)
- Stock is not mandatory (can be empty)
- Existing product updates will not update the stock (stock will be ignored by MP Adapter), except the action field is "ADD"
- Prices and Status can be different in some warehouses
- The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
- Support update attribute combination, need to use action delete and add to change attribute's tiering
- Doesn't support removing warehouses in existing products
Variant Actions
To Create new variant to existing product, fill action with parameter ADD
.
To Update existing variant, fill action with parameter UPDATE
. This action is also used for variants that's not getting added or deleted from product's variants.
To Delete existing variant,fill action with parameter DELETE
.
For now cannot set parameter action as DELETE
in all variation in a single product channel for all Marketplace
When adding or updating variant, requirement from Product Requirement still apply.
NOTES: Bukalapak does not support creation and deletion of variants through API but will still require action to be filled
Inventory
Single Update Stock (V3)
This request using HTTP Json RPC
METHOD : InventoryService.UpdateStock
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | client_key = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
sku | Yes | String | Inventory SKU |
stocks | Yes | Array | Array object client brand |
stocks - channel | Yes | String | MP code |
stocks - remote_variant | Yes | Interface | Remote variant (depends on MP) |
stocks - remote_warehouse_code | Yes | String | Remote warehouse code |
stocks - qty | Yes | Integer | Stock quantity |
Request body example:
{
"jsonrpc": "2.0",
"id": "1",
"method": "InventoryService.UpdateStock",
"params": {
"brand_id": "string_brand_id_1",
"sku": "string_sku_1",
"stocks": [
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_marketplace_1",
"qty": 10
},
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_marketplace_1",
"qty": 10
}
]
}
}
The above request returns JSON structured like this:
{
"id": "123145",
"jsonrpc": "2.0",
"result": {
"brand_id": "string_brand_id_1",
"sku": "string_sku",
"stocks": [
{
"channel": "bklp",
"message": "successfully updated/awating queue/error response",
"status": "Finished/Queued/Failed",
"success": false,
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_warehouse_code"
}
]
}
}
Bulk Update Stocks (V3)
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Update Inventory | CNX_BULK_UPDATE_INVENTORY_V3 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | Timestamp | Client key |
id | Yes | Timestamp | Client ID |
variants | Yes | Array | Array object of variant |
variants - brand_id | Yes | String | Brand ID variant |
variants - sku | Yes | String | Variant SKU |
stocks - channel | Yes | String | MP code |
stocks - remote_variant | Yes | Interface | Stock remote variant (depends on MP) |
stocks - remote_warehouse_code | Yes | String | Remote warehouse code |
stocks - qty | Yes | Integer | Stock quantity |
This Message Payload Example:
{
"client_key": "client_key",
"id": "123455",
"variants": [
{
"brand_id": "string_brand_id_1",
"sku": "seller_sku",
"stocks": [
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "warehouse_code_from_channel",
"qty": 10
}
]
}
]
}
New Bulk Update Stock (V4)
Not implemented in production, still need UAT
This request using HTTP Json RPC
METHOD : InventoryService.UpdateStockV4
Requirement:
- Client must enable feature flag
feedback-bulk-update-inventory-v4
to use this API - The request's array length should not exceed 2000
- Each request's array - sku field should not be empty
- Make sure the authorization key has access to each array's brand_id field
- If there's any duplication payload data then this API will return 400 / bad request
Limitation:
This API has a limitation of 2 request per second for each client, if you want to alter the rate limit, please discuss with us via channel #ask-squad-zeus
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | client_key = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
(Object Array) | Yes | Array | Array object of the following data |
brand_id | Yes | String | Brand ID client |
sku | Yes | String | Inventory SKU |
stocks | Yes | Array | Array object client brand |
stocks - channel | Yes | String | MP code |
stocks - remote_variant | Yes | Interface | Remote variant (depends on MP) |
stocks - remote_warehouse_code | No | String | Remote warehouse code |
stocks - qty | Yes | Integer | Stock quantity |
Request body example:
{
"jsonrpc": "2.0",
"id": "activity_id",
"method": "InventoryService.UpdateStockV4",
"params": [
{
"brand_id": "string_brand_id_1",
"sku": "string_sku_1",
"stocks": [
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_marketplace_1",
"qty": 10
},
{
"channel": "string_marketplace_1",
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_marketplace_1",
"qty": 10
}
]
}
]
}
The above request returns JSON structured like this (success):
{
"id": "activity_id",
"jsonrpc": "2.0",
"result": "Your process is on progress, please check the feedback to check whether it is success or not"
}
The above request returns JSON structured like this (bad request):
{
"error": {
"code": 400,
"message": "No brand record found with ID test-aja for client with key 08d06aa2-a6a2-4578-9f37-d0a3e3390960"
},
"id": "testing-angel-update-stock-v4",
"jsonrpc": "2.0"
}
Notes: To check whether the request is success or failed to marketplace, please check the feedback for the details, this API response just return if the request is acceptable for the next process
Warehouse
Get Data From Channel
This request using HTTP Json RPC
METHOD : WarehouseService.Get
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 2333333 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
id | Yes | String | Activity ID of the action |
sales_channel | Yes | String | Sales Channel Code |
brand_id | Yes | String | Brand ID Client |
Request body example:
{
"jsonrpc":"2.0",
"id":"1",
"method":"WarehouseService.Get",
"params":{
"sales_channel": "lzda",
"brand_id": "2"
}
}
The above request returns JSON structured like this:
{
"id": "1",
"jsonrpc": "2.0",
"result": {
"channel": "lzda",
"raw": "{\"result\":{\"success\":true,\"module\":[{\"code\":\"dropshipping\",\"name\":\"\",\"detailAddress\":\"Grand wisata cluster monte aviolo EB 3 no. 2\",\"needToUpdate\":false,\"defaultAddress\":true,\"status\":\"ACTIVE\"},{\"code\":\"dropshipping\",\"name\":\"dropshipping\",\"detailAddress\":\"Grand wisata cluster monte aviolo EB 3 no. 2\",\"needToUpdate\":false,\"defaultAddress\":true,\"status\":\"ACTIVE\"},{\"code\":\"dropshipping\",\"name\":\"\",\"detailAddress\":\"Grand wisata cluster monte aviolo EB 3 no. 2\",\"needToUpdate\":false,\"defaultAddress\":true,\"status\":\"ACTIVE\"}],\"error_code\":{\"error_code_params\":null,\"display_message\":\"\"}},\"code\":\"0\",\"request_id\":\"2122234a16292614210211596\"}",
"remote_warehouses": [
{
"address": "Grand wisata cluster monte aviolo EB 3 no. 2",
"id": "dropshipping",
"name": "",
"type": "" // only applicable for tiktok
},
{
"address": "Grand wisata cluster monte aviolo EB 3 no. 2",
"id": "dropshipping",
"name": "dropshipping",
"type": "" // only applicable for tiktok
},
{
"address": "Grand wisata cluster monte aviolo EB 3 no. 2",
"id": "dropshipping",
"name": "",
"type": "" // only applicable for tiktok
}
]
}
}
Available channel
List of available channel to get warehouse data by above method:
Channel Code | Description |
---|---|
blib | Blibli |
lzda | Lazada |
tkpd | Tokopedia |
tktk | Tiktok |
shpe | Shopee |
Notes:
Field response type only applicable for tiktok, possible values:
- SALES_WAREHOUSE: Warehouse for shipping products.
- RETURN_WAREHOUSE: Warehouse for receiving returned products.
Remote Warehouse Dashboard
List of available channel code which MP Adapter stored the data of remote warehouse:
Channel Code | Description |
---|---|
blib | Blibli |
lzda | Lazada |
shpe | Shopee |
tkpd | Tokopedia |
tktk | Tiktok |
Commerce
dashboard: commerce
ICUBE
dashboard: icube / delivery
Promotion
Single Create Discount
This request using HTTP Json RPC
METHOD : PromotionService.CreateDiscount
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | client_key = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
discount_name | Yes | String | Discount Name |
start_time | Yes | Timestamp | Start Time |
end_time | Yes | Timestamp | End Time |
discount_products.channel[].base_price | Yes | Integer | Base Price or Original Price |
discount_products.channel[].remote_variant | Yes | JSON String | Remote Variant |
discount_products.channel[].sku | No | String | SKU |
discount_products.channel[].discount_type | Yes | String | Available Value : price / percentage |
discount_products.channel[].discount_value | Yes | Integer | Discount Value |
discount_products.channel[].max_order | Yes | Integer | Buyer's Maximum Order |
discount_products.channel[].promo_stock | Yes | Integer | Reserved Stock for Promotion |
discount_products.channel[].remote_warehouse_code | No | String | Remote Warehouse Code |
Request body example:
{
"id": "hana20",
"jsonrpc": "2.0",
"method": "PromotionService.CreateDiscount",
"params": {
"brand_id": "connexi-test",
"discount_name": "test",
"start_time": "2021-09-21T09:53:00",
"end_time": "2021-09-21T11:53:00",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "price",
"discount_value": 10000,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_1"
},
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "percentage",
"discount_value": 10,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_2"
}
],
"shpe": [
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "price",
"discount_value": 10000,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_1"
},
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "percentage",
"discount_value": 10,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_1"
}
]
}
}
}
The above request returns JSON structured like this:
{
"brand_id": "",
"discount_name": "",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"sku": "sku",
"success": true,
"message": "",
"discount_id": "123",
"remote_warehouse_code": "wh_1"
},
{
"remote_variant": {},
"sku": "sku",
"success": false,
"message": "Error Message",
"discount_id": "",
"remote_warehouse_code": "wh_2"
}
],
"shpe": [
{
"remote_variant": {},
"sku": "sku",
"success": true,
"message": "",
"discount_id": "123",
"remote_warehouse_code": "wh_1"
},
{
"remote_variant": {},
"sku": "sku",
"success": false,
"message": "Error Message",
"discount_id": "",
"remote_warehouse_code": "wh_1"
}
]
}
}
Bulk Upsert Discount
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Upsert Discount | CNX_BULK_UPSERT_DISCOUNT |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client key |
id | Yes | String | Activity ID |
discounts[].brand_id | Yes | String | Brand ID client |
discounts[].discount_name | Yes | String | Discount Name |
discounts[].start_time | Yes | Timestamp | Start Time |
discounts[].end_time | Yes | Timestamp | End Time |
discounts[].discount_products.channel[].remote_variant | Yes | JSON String | Remote Variant |
discounts[].discount_products.channel[].sku | No | String | SKU |
discounts[].discount_products.channel[].base_price | Yes | Integer | Base Price or Original Price |
discounts[].discount_products.channel[].discount_type | Yes | String | Available Value : price / percentage |
discounts[].discount_products.channel[].discount_value | Yes | Integer | Discount Value |
discounts[].discount_products.channel[].max_order | Yes | Integer | Buyer's Maximum Order |
discounts[].discount_products.channel[].promo_stock | Yes | Integer | Reserved Stock for Promotion |
discounts[].discount_products.channel[].remote_warehouse_code | No | String | Remote Warehouse Code |
This Message Payload Example:
{
"id": "1",
"client_key": "test",
"discounts": [
{
"brand_id": "",
"discount_name": "test",
"start_time": "2021-09-21T09:53:00",
"end_time": "2021-09-21T11:53:00",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "price",
"discount_value": 10000,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_1"
},
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "percentage",
"discount_value": 10,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_1"
}
],
"shpe": [
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "price",
"discount_value": 10000,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_1"
},
{
"remote_variant": {},
"sku": "sku",
"base_price": 15000,
"discount_type": "percentage",
"discount_value": 10,
"max_order": 1,
"promo_stock": 10,
"remote_warehouse_code": "wh_1"
}
]
}
}
]
}
Single Delete Discount
This request using HTTP Json RPC
METHOD : PromotionService.DeleteDiscount
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | client_key = 12312312 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID client |
discount_products.channel[].remote_variant | Yes | JSON String | Remote Variant |
discount_products.channel[].sku | No | String | SKU |
discount_products.channel[].discount_id | Yes | String | Unique discount identifier from channel |
Request body example:
{
"id": "hana20",
"jsonrpc": "2.0",
"method": "PromotionService.DeleteDiscount",
"params": {
"brand_id": "connexi-test",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
},
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
}
],
"shpe": [
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
},
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
}
]
}
}
}
The above request returns JSON structured like this:
{
"brand_id": "connexi-test",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"sku": "sku",
"success": true,
"message": ""
},
{
"remote_variant": {},
"sku": "sku",
"success": false,
"message": "Error Message"
}
],
"shpe": [
{
"remote_variant": {},
"sku": "sku",
"success": true,
"message": ""
},
{
"remote_variant": {},
"sku": "sku",
"success": false,
"message": "Error Message"
}
]
}
}
Bulk Delete Discount
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Delete Discount | CNX_BULK_DELETE_DISCOUNT |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
client_key | Yes | String | Client key |
id | Yes | String | Activity ID |
discounts[].brand_id | Yes | String | Brand ID client |
discounts[].discount_products.channel[].remote_variant | Yes | JSON String | Remote Variant |
discounts[].discount_products.channel[].sku | No | String | SKU |
discounts[].discount_products.channel[].discount_id | Yes | String | Unique discount identifier from channel |
This Message Payload Example:
{
"id": "1",
"client_key": "test",
"discounts": [
{
"brand_id": "",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
},
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
}
],
"shpe": [
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
},
{
"remote_variant": {},
"sku": "sku",
"discount_id": "string"
}
]
}
}
]
}
Promotion Requirement
Feature x MP | Percentage | Price | Delete Discount | Reserve Stock | Max Order |
---|---|---|---|---|---|
Tokopedia | Yes | Yes | Yes | No | Yes |
Blibli | Yes | Yes | Yes | Yes | No |
Bukalapak | Yes | Yes | Yes | No | No |
Lazada | No | Yes | No | No | No |
Shopee | Yes | Yes | Yes | Yes | Yes |
Tiktok | Yes | Yes | Yes | Yes | Yes |
Tokopedia
- Rate limit for this API is 2 requests per second
Blibli
- Discount type price only send max 100 SKU per request. Rate limit for this API is 25 requests per minute per store. this call will applied to slash price as product's level not promotion, so you can change the discount_value anytime with this type, also can set back to original price by sending discount_value equal to original price
- For discount type percentage, start time can't set before current time and both start time and end time must be a multiple of 30 minutes. Rate limit for this API is 10 requests per minute per store code
Bukalapak
Lazada
- This call will applied to slash price as product's level not promotion, so you can change the discount_value anytime with this type, also can set back to original price by sending start_time & end_time before the request time
Shopee
- If you want to set unlimited value for Max Order and Promo Stock, filled it with -1
Tiktok
- Max Order value should be set between 1 and 99, or if you want to set unlimited filled it with -1
- Promo Stock value should be set more than 0, or if you want to set unlimited filled it with -1
- MP Adapter doesn't yet support creating promotion with type "FLASHSALE"
Courier
Get Shipment Provider Services
This request using HTTP Json RPC
METHOD : CourierSourceService.GetShipmentProviderServices
HTTP Request
POST {cnx_url}/v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Authorization = 2333333 |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
brand_id | Yes | String | Brand ID Client |
channel | Yes | String | Channel Code |
Request body example:
{
"jsonrpc":"2.0",
"id":"1",
"method":"CourierSourceService.GetShipmentProviderServices",
"params":{
"brand_id": "connexi-test",
"channel": "lzda"
}
}
The above request returns JSON structured like this:
{
"id": "1",
"jsonrpc": "2.0",
"result": {
"couriers": [
{
"text": "JNE Cashless",
"value": "JNE Cashless"
},
{
"text": "J&T Cashless",
"value": "J&T Cashless"
}
],
"default_courier": "JNE Cashless" //can be empty
}
}
Courier Requirement
Get Shipment Provider Services
Only support for lazada (lzda) and zalora (zlra)
Feedback Response from Marketplace
Feedback Bulk Accept Order
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Accept Orders Response From MP | CNX_FEEDBACK_ACCEPT_ORDERS_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channel | string | Marketplace code channel identifier |
remote_order_id | string | Remote Order ID |
message | string | Feedback message |
success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_accept_orders",
"result": [
{
"brand_id": "MPA",
"channel": "shpe",
"remote_order_id": "20231010AGHJSGJ",
"message": "Successfully updated",
"success": true
}
]
}
Feedback Bulk Pack Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Packed Orders Response From MP | CNX_FEEDBACK_PACK_ORDERS_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channel | string | Marketplace code channel identifier |
remote_order_id | string | Remote Order ID |
message | string | Feedback message |
airwaybill_number | string | AWB Number |
pickup_code | string | Pickup Code (Shopee ID only with instant / sameday courier) |
shipment_extras | string | Shipment extra information |
success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321", //activity id
"method": "bulk_pack_orders",
"result": [
{
"brand_id": "MPA",
"channel": "shpe",
"remote_order_id": "20231010AGHJSGJ",
"message": "Successfully updated",
"airwaybill_number": "THBI-12ASDX18",
"pickup_code": "74AB",
"shipment_extras": "",
"success": true
}
]
}
Feedback Bulk Ship Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Shipped Orders Response From MP | CNX_FEEDBACK_SHIP_ORDERS_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channel | string | Marketplace code channel identifier |
remote_order_id | string | Remote Order ID |
message | string | Feedback message |
airwaybill_number | string | AWB Number |
shipment_extras | string | |
success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321", //activity id
"method": "bulk_ship_orders",
"result": [
{
"brand_id": "MPA",
"channel": "shpe",
"remote_order_id": "20231010AGHJSGJ",
"message": "Successfully updated",
"airwaybill_number": "THBI-12ASDX18",
"shipment_extras": "",
"success": true
}
]
}
Feedback Bulk Complete Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Complete Orders Response From MP | CNX_FEEDBACK_COMPLETE_ORDERS_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channel | string | Marketplace code channel identifier |
remote_order_id | string | Remote Order ID |
message | string | Feedback message |
success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_complete_orders",
"result": [
{
"brand_id": "MPA",
"channel": "shpe",
"remote_order_id": "20231010AGHJSGJ",
"message": "Successfully updated",
"success": true
}
]
}
Feedback Bulk Cancel Orders
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Cancel Orders Response From MP | CNX_FEEDBACK_CANCEL_ORDERS_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channel | string | Marketplace code channel identifier |
remote_order_id | string | Remote Order ID |
message | string | Feedback message |
success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_cancel_orders",
"result": [
{
"brand_id": "MPA",
"channel": "shpe",
"remote_order_id": "20231010AGHJSGJ",
"message": "Successfully updated",
"success": true
}
]
}
Feedback Bulk Create Product
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk/Single Upsert Product Response From MP | CNX_FEEDBACK_BULK_UPSERT_PRODUCT_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
products | array | Line items of the requested product |
products - brand_id | string | Brand ID client unique identifier |
products - channel | string | Marketplace code channel identifier |
products - parent_sku | string | SKU parent |
products - message | string | Feedback message |
products - status | string | Status feedback (success or failed) |
products - success | boolean | Flag which determines if success or failed |
variants | array | Line items of the variants product |
variants - sku | string | SKU variant |
variants - remote_variant | json object | Unique identifier of variant product in MPA |
variants - status | string | Status of the variant (active or inactive) |
variants - message | string | Feedback message |
variants - success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_upsert_product",
"result": {
"products": [
{
"brand_id": "MPA",
"channel": "shpe",
"parent_sku": "",
"message": "Successfully created",
"status": "success",
"variants": [
{
"sku": "SOFFELL1",
"remote_variant": {
"item_id": 123,
"variation_id": 123
},
"status": "active",
"message": "Successfully created",
"success": true
},
{
"sku": "SOFFELL2",
"remote_variant": {
"item_id": 123,
"variation_id": 124
},
"status": "active",
"message": "Successfully created",
"success": true
},
{
"sku": "SOFFELL3",
"remote_variant": {
"item_id": 123,
"variation_id": 122
},
"status": "active",
"message": "Successfully created",
"success": true
}
],
"success": true
}
]
}
}
Feedback Bulk Create Product V2
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk/Single Upsert Product Response From MP | CNX_FEEDBACK_BULK_UPSERT_PRODUCT_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
products | array | Line items of the requested product |
products - brand_id | string | Brand ID client unique identifier |
products - channel | string | Marketplace code channel identifier |
products - parent_sku | string | SKU parent |
products - message | string | Feedback message |
products - status | string | Status feedback (success or failed) |
products - success | boolean | Flag which determines if success or failed |
variants | array | Line items of the variants product |
variants - sku | string | SKU variant |
variants - remote_variant | json object | Unique identifier of variant product in MPA |
variants - status | string | Status of the variant (active or inactive) |
variants - message | string | Feedback message |
variants - success | boolean | Flag which determines if success or failed |
variants - remote_warehouse_id | string | Remote warehouse ID |
Notes: 1. Variant feedback will return for each warehouse. Example if you request add 2 variant and each variant have 2 warehouses in variant_infos field's, then you will get 4 variants in the feedback. 2. Create product v2 still unsupported partial feedback
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_upsert_product",
"result": {
"products": [
{
"brand_id": "MPA",
"channel": "shpe",
"parent_sku": "",
"message": "Successfully created",
"status": "success",
"variants": [
{
"sku": "SOFFELL1",
"remote_variant": {
"item_id": 123,
"variation_id": 123
},
"remote_warehouse_id": "IDZ",
"status": "active",
"message": "Successfully created",
"success": true
},
{
"sku": "SOFFELL2",
"remote_variant": {
"item_id": 123,
"variation_id": 124
},
"remote_warehouse_id": "IDZ",
"status": "active",
"message": "Successfully created",
"success": true
},
{
"sku": "SOFFELL3",
"remote_variant": {
"item_id": 123,
"variation_id": 122
},
"remote_warehouse_id": "IDZ",
"status": "active",
"message": "Successfully created",
"success": true
}
],
"success": true
}
]
}
}
Feedback Bulk Update Stock
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Update Inventory Response From MP | CNX_FEEDBACK_UPDATE_INVENTORY_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
sku | string | SKU variant |
stocks | array | Line items of the requested stock |
stocks - channel | string | Marketplace code channel identifier |
stocks - message | string | Feedback message |
stocks - success | boolean | Flag which determines if success or failed |
stocks - remote_warehouse_code | string | Value of warehouse code from request |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_update_inventory_V3",
"result": {
"brand_id": "MPA",
"sku": "GRB8F838992304009167",
"stocks": [
{
"channel": "tkpd",
"message": "Successfully updated",
"success": true,
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_warehouse_code"
}
]
}
}
Feedback New Bulk Update Stock (V4)
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Update Inventory Response From MP | CNX_FEEDBACK_BULK_UPDATE_INVENTORY_V4_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
sku | string | SKU variant |
stocks | array | Line items of the requested stock |
stocks - channel | string | Marketplace code channel identifier |
stocks - message | string | Feedback message |
stocks - success | boolean | Flag which determines if success or failed |
stocks - remote_warehouse_code | string | Remote Warehouse code from request |
This Message Payload Example:
{
"id": "activity_id",
"method": "bulk_update_stock_v4",
"result": {
"brand_id": "test-brand-string",
"sku": "sku-string",
"stocks": [
{
"channel": "tkpd",
"message": "unprocessed requests for sku sku-string with qty 99, we will process your latest update stock request",
"success": false,
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_warehouse_code"
}
]
}
}
Feedback Update Price
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Update Price Response From MP | CNX_FEEDBACK_BULK_UPDATE_PRICE_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
sku | string | SKU variant |
price | array | List of price that has been updated |
price - channel | string | Marketplace code channel identifier |
price - message | string | Feedback message |
price - success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_update_price",
"result": {
"brand_id": "MPA1",
"sku": "45678901",
"prices": [
{
"channel": "shpe",
"message": "",
"success": true,
"remote_variant": {
"gdn_sku": "string_gdn_sku_1"
},
"remote_warehouse_code": "string_warehouse_code"
},
{
"channel": "bklp",
"message": "Error from marketplace",
"success": false,
"remote_variant": {
"gdn_sku": "string_gdn_sku_2"
},
"remote_warehouse_code": "string_warehouse_code"
}
]
}
}
Feedback Product Fetch Manual
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Feedback the total number of products that were successfully fetch manual | CNX_FEEDBACK_PRODUCT_FETCHED_MANUAL_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channels | array | List of channel that brand has connect for fetch |
channels - channel | string | Marketplace code channel identifier |
channels - total_fetched | integer | Total product |
channels - message | string | Feedback message |
channels - success | boolean | Flag which determines if success or failed |
This Message Payload Example:
{
"id": "12312321", //activity_id
"method": "jsonrpc_product_fetched_manual",
"result": {
"brand_id": "MPA",
"channels": [
{
"channel": "tkpd",
"total_fetched": 300,
"message": "Successfully fetched products",
"success": true
}
{
"channel": "shpe",
"total_fetched": 25,
"message": "Successfully fetched products",
"success": true
}
]
}
}
Feedback Disconnect Channel
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Disconnect Channel | CNX_FEEDBACK_DISCONNECT_CHANNEL_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channel | string | Marketplace code channel identifier |
This Message Payload Example:
{
"id": "12312321", //activity_id
"method": "CNX_DISCONNECT_CHANNEL",
"result": {
"brand_id": "MPA",
"channel": "bklp",
}
}
Feedback Connect Channel
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Connect Channel | CNX_FEEDBACK_CONNECT_CHANNEL_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
channel_code | string | Marketplace code channel identifier |
shop_name | string | Store name on the MP (not all MP support this, check MPA Capabilities) |
product_limitation | object | Limitation for create or update product (Shopee only) |
credentials | object | Credentials raw schema (schema data can be differs between MP) |
This Message Payload Example (Shopee):
{
"id": "12312321", //activity_id
"method": "CNX_FEEDBACK_CONNECT_CHANNEL",
"result": {
"channel_code": "shpe",
"brand_id": "MPA",
"shop_name": "Toko Bagus Sekali",
"product_limitation": {
"request_id": "63e7853ad191c0b78d009dc4f7eef521",
"error": "",
"message": "",
"response": {
"price_limit": {
"min_limit": 99,
"max_limit": 150000000
},
"wholesale_price_threshold_percentage": {
"min_limit": 50,
"max_limit": 100
},
"stock_limit": {
"min_limit": 0,
"max_limit": 10000000
},
"item_name_length_limit": {
"min_limit": 5,
"max_limit": 255
},
"item_image_count_limit": {
"min_limit": 1,
"max_limit": 9
},
"item_description_length_limit": {
"min_limit": 20,
"max_limit": 3000
},
"tier_variation_name_length_limit": {
"min_limit": 1,
"max_limit": 14
},
"tier_variation_option_length_limit": {
"min_limit": 1,
"max_limit": 20
},
"item_count_limit": {
"max_limit": 100
}
}
},
"credentials": {
"shop_id": 123
}
}
}
This Message Payload Example:
{
"id": "12312321", //activity_id
"method": "CNX_FEEDBACK_CONNECT_CHANNEL",
"result": {
"channel_code": "shpe",
"brand_id": "MPA",
"shop_name": "Toko Bagus Sekali",
"product_limitation": null,
"credentials": {
"email": "mpa@sirclo.com",
"seller_id": 123
}
}
}
Feedback Create Discount
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Create Discount | CNX_FEEDBACK_BULK_UPSERT_DISCOUNT_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
discount_name | string | Discount name |
discount_products | object | Object discount data |
discount_products - channel_code | string | Key marketplace code channel identifier |
discount_products - channel_code | array | Data variant of the items requested discount |
discount_products - channel_code - remote_variant | json object | Unique identifier of variant product in MPA |
discount_products - channel_code - success | boolean | Flag which determines if success or failed |
discount_products - channel_code - message | string | Feedback message |
discount_products - channel_code - discount_id | string | Discount ID |
discount_products - channel_code - sku | string | Product SKU |
discount_products - channel_code - remote_warehouse_code | string | Product remote warehouse code |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_upsert_discount",
"result": [
{
"brand_id": "",
"discount_name": "",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"success": true,
"message": "",
"discount_id": "",
"sku": "",
"remote_warehouse_code": ""
},
{
"remote_variant": {},
"success": false,
"message": "error",
"discount_id": "",
"sku": "",
"remote_warehouse_code": ""
}
],
"shpe": [
{
"remote_variant": {},
"success": true,
"message": "",
"discount_id": "123",
"sku": "",
"remote_warehouse_code": ""
},
{
"remote_variant": {},
"success": false,
"message": "error",
"discount_id": "123",
"sku": "",
"remote_warehouse_code": ""
}
]
}
}
]
}
Feedback Delete Discount
HTTP Request
Method | Method Name | Subscription |
---|---|---|
PUBSUB | Bulk Delete Discount | CNX_FEEDBACK_BULK_DELETE_DISCOUNT_CLIENT-ID |
Data Schema
Data schema that will be sent to the client as a feedback response
Name | Type | Description |
---|---|---|
brand_id | string | Brand ID client unique identifier |
discount_products | object | Object discount data |
discount_products - channel_code | string | Key marketplace code channel identifier |
discount_products - channel_code | array | Data variant of the items requested discount |
discount_products - channel_code - remote_variant | json object | Unique identifier of variant product in MPA |
discount_products - channel_code - success | boolean | Flag which determines if success or failed |
discount_products - channel_code - message | string | Feedback message |
This Message Payload Example:
{
"id": "12312321",
"method": "bulk_delete_discount",
"result": [
{
"brand_id": "",
"discount_products": {
"bklp": [
{
"remote_variant": {},
"success": true,
"message": ""
},
{
"remote_variant": {},
"success": false,
"message": "error"
}
],
"shpe": [
{
"remote_variant": {},
"success": true,
"message": ""
},
{
"remote_variant": {},
"success": false,
"message": "error"
}
]
}
}
]
}
Passthrough
GET
Method
GET /v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Client Key value (given from Squad Zeus) used for Client identification |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
jsonrpc | Yes | String | Version jsonrpc |
id | Yes | String | Activity ID of the action by client |
method | Yes | string | Method feature of MP Adapter |
params | Yes | Object | Object request method |
Request queryParams Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
http_method | Yes | String | HTTP method |
url_path | Yes | String | URL of desired API |
body | Yes | Object | Object body of request |
header | Yes | Object | Header of request |
queryParams | Yes | Object | Parameters of request (check notes of individual MP) |
brand_id | Yes | String | Brand ID value client brand id used for Brand Client identification |
channel | Yes | String | Marketplacce channel code |
Reponse Body Parameter
Name | Required | Type | Description |
---|---|---|---|
jsonrpc | Yes | String | Version jsonrpc |
id | Yes | String | Activity ID of the action by client |
result | Yes | string | Response from marketplace |
Request body example:
{
"id": "test-steven2",
"jsonrpc": "2.0",
"method": "MarketplaceService.MarketplacePassthrough",
"params": {
"http_method": "GET",
"url_path": "/proxy/mta/api/businesspartner/v1/order/orderList",
"header": {},
"body": {},
"queryParams": {},
"brand_id": "connexi-test",
"channel": "blib"
}
}
Response body example:
{
"id": "test-steven2",
"jsonrpc": "2.0",
"result": {}
}
POST
Method
POST /v1/jsonrpc
Header Parameters
Name | Required | Type | Description |
---|---|---|---|
Authorization | Yes | String | Client Key value (given from Squad Zeus) used for Client identification |
Request Body Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
jsonrpc | Yes | String | Version jsonrpc |
id | Yes | String | Activity ID of the action by client |
method | Yes | string | Method feature of MP Adapter |
params | Yes | Object | Object request method |
Request Params Parameters
Request body must be a JSON document with the following properties
Name | Required | Type | Description |
---|---|---|---|
http_method | Yes | String | HTTP method |
url_path | Yes | String | URL of desired API |
body | Yes | Object | Object body of request |
header | Yes | Object | Header of request |
queryParams | Yes | Object | Parameters of request |
brand_id | Yes | String | Brand ID value client brand id used for Brand Client identification |
channel | Yes | String | Marketplace channel code |
Reponse Body Parameter
Name | Required | Type | Description |
---|---|---|---|
jsonrpc | Yes | String | Version jsonrpc |
id | Yes | String | Activity ID of the action by client |
result | Yes | string | Response from marketplace |
Request body example:
{
"id": "test-steven",
"jsonrpc": "2.0",
"method": "MarketplaceService.MarketplacePassthrough",
"params": {
"http_method": "POST",
"url_path": "/proxy/mta/api/businesspartner/v2/product/getProductList",
"body": {
"page": 1,
"size": 10
},
"header": {
"Content-Type": "application/json"
},
"queryParams": {
"requestId": "",
"businessPartnerCode": "",
"username":"",
"channelId":""
},
"brand_id": "connexi-test",
"channel": "blib"
}
}
Response body example:
{
"id": "test-steven2",
"jsonrpc": "2.0",
"result": {}
}
Notes for Blibli
Marketplace channel code: blib
Field name in blibli documentation compared to MP Adapter request field
Field on request | Field on Documentation |
---|---|
header | Header |
queryParams | Parameter |
body | Request Body Terminology |
http_method | method |
url_path | path |
The following queryParams will be automatically filled by MP adapter:
- requestId
- storeId
- storeCode
- username
- businessPartnerCode
- channelId
Should a need to fill out any of these field arise, please fill the field according to queryParams example
queryParams blibli example:
"queryParams": {
"requestId": "", // filled by MP adapter
"storeCode": "", // filled by MP adapter
"productId": "123" // filled by by client
},
Notes for Tokopedia
- Marketplace channel code is tkpd
- Header field is optional
- Make sure that the URL is filled complete with their parameters
Example:
- /v1/chat/fs/:fs_id/messages/:msg_id/reply (Incorrect)
- /v1/chat/fs/14835/messages/123456/reply (Correct)
The following queryParams will be automatically filled by MP adapter:
- fs_id
- shop_id
Should a need to fill out any of these field arise, please fill the field according to queryParams example
queryParams tokopedia example:
"queryParams": {
"fs_id": "", // filled by MP adapter
"shop_id": "", // filled by MP adapter
"msd_id": "123" // filled by client
},
Notes for Shopee
- Marketplace channel code is shpe-chat
- Header field is optional
- Make sure that Body and queryParams of request is filled according to shopee documentation
- For URL path, do not use /api/v2
For Example: In shopee documentation, if an URL path is /api/v2/payment/get_escrow_detail, fill out the url in postman as /payment/get_escrow_detail instead
Notes for Lazada
- Marketplace channel code is lzda
- Header field is optional
- If request parameter is a payload, then you only need to fill the body according to lazada documentation. If the request parameter is not a payload then you need to fill out queryParams as instructed by lazada documentation
request post example in lazada:
{
"id": "test-aldo",
"jsonrpc": "2.0",
"method": "MarketplaceService.MarketplacePassthrough",
"params": {
"http_method": "POST",
"url_path": "/product/create",
"body": "<Request><Product><PrimaryCategory>6614</PrimaryCategory><SPUId/><AssociatedSku/><Images><Image>https://my-live-02.slatic.net/p/765888ef9ec9e81106f451134c94048f.jpg</Image><Image>https://my-live-02.slatic.net/p/9eca31edef9f05f7e42f0f19e4d412a3.jpg</Image></Images><Attributes><name>apicreateproducttestsample</name><short_description>Thisisaniceproduct</short_description><brand>Remark</brand><model>asdf</model><kid_years>Kids(6-10yrs)</kid_years><video>12345(fillwiththevideoidofthepreviouslyuploadedvideo)optional</video><delivery_option_sof>Yes</delivery_option_sof></Attributes><Skus><Sku><SellerSku>api-create-test-1</SellerSku><color_family>Green</color_family><size>40</size><quantity>1</quantity><price>388.50</price><package_length>11</package_length><package_height>22</package_height><package_weight>33</package_weight><package_width>44</package_width><package_content>thisiswhat'sinthebox</package_content><Images><Image>http://sg.s.alibaba.lzd.co/original/59046bec4d53e74f8ad38d19399205e6.jpg</Image><Image>http://sg.s.alibaba.lzd.co/original/179715d3de39a1918b19eec3279dd482.jpg</Image></Images></Sku></Skus></Product></Request>",
"header": {},
"queryParams": {},
"brand_id": "connexi-test",
"channel": "lzda"
}
}
Errors
The Orders and Products API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The Order and Product requested is hidden for administrators only. |
404 | Not Found -- The specified Order and Product could not be found. |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |