NAV Navbar

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

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.

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:

  1. For now this method only support for Tiktok
  2. 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:

  1. For now this method only support for Shopee, Tiktok, and Tokopedia
  2. MP who support this feature will get an order status of request_cancel and this order status is eligible for this method
  3. You can get value for "reject_reason" field in METHOD : OrderService.ListRejectCancelReason and use reason_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:

  1. Exclusively for Shopee, if the document_type is not filled then it will get the default type("THERMAL_AIR_WAYBILL")
  2. 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:

  1. only for channel Shopee, the field airwaybill_number is required.

Order Requirements

CnC Blibli Process Flow

  1. 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.
  2. Create new pickup point for CnC, or update your existing pickup point to support CnC too
  3. You can create new CnC product on your store
  4. 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.
  5. 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

  1. For Complete order case, you must fill the field received_by with a settlement code that gets from the buyer.
  2. 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

  1. Channel_variants is mandatory (minimum 1)
  2. 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)
  3. Image maximum 9 image
  4. SuportHTML Yes!
  5. Stock is mandatory (cannot be empty) and accept zero value (stock = 0)
  6. Weight support float number, rounding 3 digits
  7. NOTES: Create or Update TikTok Products always makes the product status "active" in Marketplace

Tokopedia

  1. Attribute channel is mandatory (minimum 1)
  2. Size chart attribute is mandatory for product with variant
  3. SuportHTML Yes, but avoid ( non-ASCII or special character)
  4. Stock is mandatory (cannot be empty) and should be greater than zero (stock > 0)
  5. Weight doesn't support float number
  6. When create and update product preorder's, type field only support value days and it should not exceed 91 days

Blibli

  1. Price is mandatory (cannot be empty)
  2. 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.)
  3. SuportHTML Yes but avoid ( non-ASCII or special character)
  4. Stock is not mandatory (can be empty) and accept zero value (stock = 0)
  5. Weight doesn't support float number
  6. Product Archive: If all variants have an inactive status, the product will be archived in the Seller Center.
  7. NOTES: Blibli uses queue to create and update product
  8. 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
  9. 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

  1. Price is mandatory (cannot be empty)
  2. Weight should be greater than zero (weight > 0), support float number
  3. Description length should be greater than two characters (len(description) > 2)
  4. Package volume (length * width * height) should be between 0.0 and 80.0 inclusive
  5. Brand is mandatory (cannot be empty)
  6. SuportHTML No!
  7. Stock is not mandatory (can be empty) and accept zero value (stock = 0)
  8. When create and update product preorder's, type field only support value days and it should follow the product category's availability

Lazada

  1. Variant value in attribute channel is unique
  2. 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.)
  3. SuportHTML Yes!
  4. Stock is not mandatory (can be empty) and accept zero value (stock = 0)
  5. Weight support float number
  6. Product Attributes utilize the size_chart attribute is mandatory for Women's Clothing categories, excluding Lingerie, Sleep & Lounge, and Socks & Tights.
  7. When create and update product preorder's, type field only support value days and it should have range between 7-30 days

Bukalapak

  1. Description length should be greater than 30 characters (len(description) > 30)
  2. Weight should be lower than 1 ton, doesn't support float number
  3. Price is mandatory (cannot be empty) and should be numeric
  4. Product name cannot use the one already in the seller center
  5. Stuff name length should be between 6 and 150 characters inclusive
  6. SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
  7. Stock is mandatory (cannot be empty) and should be greater than zero (stock > 0)
  8. 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

  1. Variant_remote_warehouse is mandatory
  2. SuportHTML Yes!
  3. Stock is mandatory (cannot be empty) and accept zero value (stock = 0)
  4. 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
  1. Description length should be less than 2000 characters
    (len(description) < 2000)
  2. SuportHTML Yes, but avoid ( non-ASCII or special character)
  3. 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
  1. SuportHTML No!
  2. 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
  1. Description length should be between 6 and 25000 characters (len(description) > 6 && len(description) < 25000)
  2. SuportHTML Yes!
  3. Stock is not mandatory (can be empty) and and accept zero value (stock = 0)
  4. Not allowed to add / remove attribute variants

Bukalapak

Attribute Without Variant With Variant
Name Yes Yes
Description Yes Yes
Price Yes Yes
  1. Description length should be less than 65530 characters
    (len(description) < 65530)
  2. SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
  3. Stock is mandatory (cannot be empty) and accept zero value (stock = 0)

Blibli

  1. Description length should be less than 5000 characters
    (len(description) < 5000)
  2. SuportHTML Yes but avoid ( non-ASCII or special character)
  3. Stock doesn't support update stock on UpdateProduct, whether the field is filled or not has no effect
  4. 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

  1. Channel_variants is mandatory (minimum 1)
  2. 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)
  3. Image maximum 9 image
  4. SuportHTML Yes!
  5. 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
  6. Weight support float number, rounding 3 digits
  7. Price is mandatory. If variant has implemented multi warehouses, the price must same for each warehouse
  8. 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
  9. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too

Tokopedia

  1. Attribute channel is mandatory (minimum 1)
  2. Size chart attribute is mandatory for product with variant
  3. SuportHTML Yes, but avoid ( non-ASCII or special character)
  4. 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
  5. Weight doesn't support float number
  6. Product name length should be greater than 25 characters
  7. When create and update product preorder's, type field only support value days and it should not exceed 91 days
  8. Prices can be different in some warehouses
  9. The status between some warehouses cannot be different, but between some variants can be different
  10. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too

Blibli

  1. Price is mandatory (cannot be empty)
  2. 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.)
  3. SuportHTML Yes but avoid ( non-ASCII or special character)
  4. 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
  5. Weight doesn't support float number
  6. Blibli uses asynchronous process while create and update product
  7. 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
  8. Prices and Status can be different in some warehouses
  9. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too

Shopee

  1. Price is mandatory (cannot be empty)
  2. Weight should be greater than zero (weight > 0), support float number
  3. Description length should be greater than two characters (len(description) > 2)
  4. Package volume (length * width * height) should be between 0.0 and 80.0 inclusive
  5. Brand is mandatory (cannot be empty)
  6. SuportHTML No!
  7. 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
  8. When create and update product preorder's, type field only support value days and it should follow the product category's availability
  9. Price between some warehouses cannot be different, but between some variants can be different
  10. Status for each variants must be same
  11. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too

Lazada

  1. Variant value in attribute channel is unique
  2. 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.)
  3. SuportHTML Yes!
  4. Stock is not mandatory (can be empty) and accept zero value (stock = 0)
  5. Weight support float number
  6. When create and update product preorder's, type field only support value days and it should have range between 7-30 days
  7. Price and Status between some warehouses cannot be different, but between some variants can be different
  8. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too

Bukalapak

  1. Description length should be greater than 30 characters (len(description) > 30)
  2. Weight should be lower than 1 ton, doesn't support float number
  3. Price is mandatory (cannot be empty) and should be numeric
  4. Product name cannot use the one already in the seller center
  5. Stuff name length should be between 6 and 150 characters inclusive
  6. SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
  7. Stock is mandatory (cannot be empty) and should be greater than zero (stock > 0)
  8. When create and update product preorder's, type field only support value days and it should have range between 2-60 days
  9. Bukalapak doesn't support multi warehouse

Update Product

Update product capabilites for each marketplace

Tiktok

  1. Variant_remote_warehouse is mandatory
  2. SuportHTML Yes!
  3. Stock is mandatory (cannot be empty) and accept zero value (stock = 0)
  4. 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).
  5. Doesn't support adding/removing warehouses in existing products
  6. Price is mandatory. If variant has implemented multi warehouses, the price must same for each warehouse
  7. 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
  8. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
  9. 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
  1. Description length should be less than 2000 characters
    (len(description) < 2000)
  2. SuportHTML Yes, but avoid ( non-ASCII or special character)
  3. Stock is not mandatory (can be empty) and if you filled, it should be greater than zero (stock > 0)
  4. Doesn't support adding/removing warehouses in existing products
  5. Product name on Tokopedia cannot be updated if the product already has a transaction
  6. Existing product updates will not update the stock (stock will be ignored by MP Adapter), except the action field is "ADD"
  7. Prices can be different in some warehouses
  8. The status between some warehouses cannot be different, but between some variants can be different
  9. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
  10. 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
  1. SuportHTML No!
  2. When create and update product preorder's, type field only support value days and it should follow the product category's availability
  3. Existing product updates will not update the stock (stock will be ignored by MP Adapter), except the action field is "ADD"
  4. Price between some warehouses cannot be different, but between some variants can be different
  5. Status for each variants must be same
  6. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
  7. Support update attribute combination, need to use action delete and add to change attribute's tiering
  8. Doesn't support adding/removing warehouses in existing products

Lazada

Attribute Without Variant With Variant
Name Yes Yes
Description Yes Yes
Price Yes Yes
  1. Description length should be between 6 and 25000 characters (len(description) > 6 && len(description) < 25000)
  2. SuportHTML Yes!
  3. Stock is not mandatory (can be empty) and and accept zero value (stock = 0)
  4. Not allowed to add / remove attribute variants
  5. When create and update product preorder's, type field only support value days and it should have range between 7-30 days
  6. Existing product updates will not update the stock (stock will be ignored by MP Adapter)
  7. Price and Status between some warehouses cannot be different, but between some variants can be different
  8. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
  9. Doesn't support update attribute combination
  10. Doesn't support adding/removing warehouses in existing products

Bukalapak

Attribute Without Variant With Variant
Name Yes Yes
Description Yes Yes
Price Yes Yes
  1. Description length should be less than 65530 characters
    (len(description) < 65530)
  2. SuportHTML Not support, but support BBCode format, and for image in description you must use bukalapak url
  3. Bukalapak doesn't support multi warehouse
  4. Stock is not mandatory (can be empty)
  5. Existing product updates will not update the stock (stock will be ignored by MP Adapter)
  6. When create and update product preorder's, type field only support value days and it should have range between 2-60 days
  7. Doesn't support update attribute combination

Blibli

  1. Description length should be less than 5000 characters
    (len(description) < 5000)
  2. Blibli uses asynchronous process while create product
  3. SuportHTML Yes but avoid ( non-ASCII or special character)
  4. Stock is not mandatory (can be empty)
  5. Existing product updates will not update the stock (stock will be ignored by MP Adapter), except the action field is "ADD"
  6. Prices and Status can be different in some warehouses
  7. The variant_infos length must be same for each variant and the warehouse ID between each variants must be same too
  8. Support update attribute combination, need to use action delete and add to change attribute's tiering
  9. 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:

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

  1. Rate limit for this API is 2 requests per second

Blibli

  1. 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
  2. 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

  1. 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

  1. If you want to set unlimited value for Max Order and Promo Stock, filled it with -1

Tiktok

  1. Max Order value should be set between 1 and 99, or if you want to set unlimited filled it with -1
  2. Promo Stock value should be set more than 0, or if you want to set unlimited filled it with -1
  3. 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:

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

Example:

The following queryParams will be automatically filled by MP adapter:

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

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

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.