stable本次发布有变化全部展示
来自 Shopee 官方资料快照 ·
- 当前资料结构化阅读页
- 固定快照已留存,可追溯
- 官方原文可核对
资料正文
§1 v2.bundle_deal.add_bundle_deal
create bundle deal. Relevant restrictions refer to FAQ:https://open.shopee.com/faq/254
§2 Overview
Overview
| Field | Value |
|---|---|
| Module | Bundle Deal |
| API type | Shop |
| HTTP method | POST |
| Path | /api/v2/bundle_deal/add_bundle_deal |
| Production URL | https://partner.shopeemobile.com/api/v2/bundle_deal/add_bundle_deal |
| Sandbox URL | https://partner.test-stable.shopeemobile.com/api/v2/bundle_deal/add_bundle_deal |
| Rate limit | [0, 0, 0] |
| Permission | ERP System; Seller In House System; Marketing; Swam ERP |
§3 Request parameters
Request parameters
| Name | Type | Required | Sample | Description |
|---|---|---|---|---|
| rule_type | int32 | Yes | 1 | The bundle deal rule type:FIX_PRICE = 1 ;DISCOUNT_PERCENTAGE = 2; DISCOUNT_VALUE = 3 |
| discount_value | float | Yes | 11.0 | The deducted price when when buying a bundle deal. Need to input it when the bundle deal rule type is 3 |
| fix_price | float | Yes | 11.0 | The amount of the buyer needs to spend to purchase a bundle deal. Need to input it when the bundle deal rule type is 1 |
| discount_percentage | int32 | Yes | 33 | The discount that the buyer can get when buying a bundle deal. Need to input it when the bundle deal rule type is 2 |
| min_amount | int32 | Yes | 1 | The quantity of items that need buyer to combine purchased |
| start_time | timestamp | Yes | 1600000000 | The time when bundle deal activity start.The start time must be later than current time. |
| end_time | timestamp | Yes | 1610000000 | The time when bundle deal activity end. The end time must be 1 hour later than start time. |
| name | string | Yes | bundle name | Title of the bundle deal |
| purchase_limit | int32 | Yes | 3 | Maximum number of bundle deals that can be bought by a buyer. |
| additional_tiers | object[] | No | Use to create tiered discount for bundle deals, a max of 2 additional tiers are allowed to create.; the rule of multiple tiers needs to follow this faq https://open.shopee.com/faq/53; For additional tiers, the fix price, discount_percentage, discount_value should be consistent with tier 1 | |
| additional_tiers.min_amount | int32 | Yes | 100 | The quantity of items that the buyers need to purchase for additional tier |
| additional_tiers.fix_price | float | No | 100.00 | The bundle price when the buyers purchase a bundle deal for additional tiers. Need to input it when the bundle deal rule type is 1. |
| additional_tiers.discount_value | float | No | 20.00 | The bundle deal discount amount the buyer can save when purchasing a bundle deal. Need to input it when the bundle deal rule type is 3 |
| additional_tiers.discount_percentage | int32 | No | 20 | The bundle deal discount% that the buyer can get when buying a bundle deal for additional tiers. Need to input it when the bundle deal rule type is 2 |
§4 Response parameters
Response parameters
| Name | Type | Required | Sample | Description |
|---|---|---|---|---|
| error | string | Indicate error type if hit error. Empty if no error happened. | ||
| message | string | Indicate error details if hit error. Empty if no error happened. | ||
| request_id | string | b41cb9d4eff03a708347d69abcd4c63d | The identifier of the API request for error tracking | |
| response | object | |||
| response.bundle_deal_id | int32 | 11111 | Shopee's unique identifier for a bundle deal activity. |
§5 Common parameters
Common parameters
| Name | Type | Required | Sample | Description |
|---|---|---|---|---|
| partner_id | int | 1 | Partner ID is assigned upon registration is successful. Required for all requests. | |
| timestamp | timestamp | 1610000000 | This is to indicate the timestamp of the request. Required for all requests. Expires in 5 minutes. | |
| access_token | string | c09222e3fc40ffb25fc947f738b1abf1 | The token for API access, using to identify your permission to the api. Valid for multiple use and expires in 4 hours. | |
| shop_id | int | 600000 | Shopee's unique identifier for a shop. Required param for most APIs. | |
| sign | string | e318d3e932719916a9f9ebb57e2011961bd47abfa54a36e040d050d8931596e2 | Signature generated by partner_id, api path, timestamp, access_token, shop_id and partner_key via HMAC-SHA256 hashing algorithm. More details: https://open.shopee.com/documents?module=87&type=2&id=58&version=2 |
§6 Request samples
Request samples
§7 Payload
Payload
{
"rule_type": 1,
"discount_value": 11,
"fix_price": 11,
"discount_percentage": 33,
"min_amount": 1,
"start_time": 1600000000,
"end_time": 1610000000,
"name": "bundle name",
"purchase_limit": 3,
"additional_tiers": [
{
"min_amount": 100,
"fix_price": 100,
"discount_value": 20,
"discount_percentage": 20
}
]
}
§8 Java
Java
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://open.admin.shopee.io/api/v2/bundle_deal/add_bundle_deal?access_token=access_token&partner_id=partner_id&shop_id=shop_id&sign=sign×tamp=timestamp")
.header("Content-Type","application/json")
.body("{
\"additional_tiers\": [
{
\"discount_percentage\": 20,
\"discount_value\": 20,
\"fix_price\": 100,
\"min_amount\": 100
}
],
\"discount_percentage\": 33,
\"discount_value\": 11,
\"end_time\": 1610000000,
\"fix_price\": 11,
\"min_amount\": 1,
\"name\": \"bundle name\",
\"purchase_limit\": 3,
\"rule_type\": 1,
\"start_time\": 1600000000
}")
.asString();
§9 PHP
PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://open.admin.shopee.io/api/v2/bundle_deal/add_bundle_deal?access_token=access_token&partner_id=partner_id&shop_id=shop_id&sign=sign×tamp=timestamp',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"additional_tiers": [
{
"discount_percentage": 20,
"discount_value": 20,
"fix_price": 100,
"min_amount": 100
}
],
"discount_percentage": 33,
"discount_value": 11,
"end_time": 1610000000,
"fix_price": 11,
"min_amount": 1,
"name": "bundle name",
"purchase_limit": 3,
"rule_type": 1,
"start_time": 1600000000
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
§10 cURL
cURL
curl --location --request POST 'https://open.admin.shopee.io/api/v2/bundle_deal/add_bundle_deal?access_token=access_token&partner_id=partner_id&shop_id=shop_id&sign=sign×tamp=timestamp' \
--header 'Content-Type: application/json' \
--data-raw '{
"additional_tiers": [
{
"discount_percentage": 20,
"discount_value": 20,
"fix_price": 100,
"min_amount": 100
}
],
"discount_percentage": 33,
"discount_value": 11,
"end_time": 1610000000,
"fix_price": 11,
"min_amount": 1,
"name": "bundle name",
"purchase_limit": 3,
"rule_type": 1,
"start_time": 1600000000
}'
§11 Python
Python
import requests
import json
url = "https://open.admin.shopee.io/api/v2/bundle_deal/add_bundle_deal?access_token=access_token&partner_id=partner_id&shop_id=shop_id&sign=sign×tamp=timestamp"
payload=json.dumps({
"additional_tiers": [
{
"discount_percentage": 20,
"discount_value": 20,
"fix_price": 100,
"min_amount": 100
}
],
"discount_percentage": 33,
"discount_value": 11,
"end_time": 1610000000,
"fix_price": 11,
"min_amount": 1,
"name": "bundle name",
"purchase_limit": 3,
"rule_type": 1,
"start_time": 1600000000
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST",url,headers=headers, data=payload, allow_redirects=False)
print(response.text)
§12 Response sample
Response sample
§13 JSON
JSON
{
"error": "-",
"message": "-",
"request_id": "b41cb9d4eff03a708347d69abcd4c63d",
"response": {
"bundle_deal_id": 11111
}
}
§14 Error example
Error example
§15 JSON
JSON
{
"message": "The start time should be later than current time",
"request_id": "485066ac3b30e1bcad15447ef16179b5",
"response": {},
"error": "bundle.bundle_deal_start_time_error"
}
§16 Errors
Errors
| Error | Description | Solution |
|---|---|---|
| add_on.add_on_no_logistic | This item doesn't has shipping channel, please set shipping channel firstly | |
| add_on.add_on_deal_item_under_block_categories | This product is under a category that is prohibited from promotions due to regulations in your country | |
| bundle.bundle_deal_discount_value_invalid_range | Discount value should be within Price range. | |
| bundle.bundle_deal_start_time_error | Promotion start time can only be changed to a later timing. | |
| bundle.bundle_deal_error_total_count_limit | A maximum of 1000 bundle deals can be created | |
| bundle.bundle_deal_error_unknown | Unknown error occurred in the service | |
| bundle.bundle_deal_exceed_remaining_time_limit | The bundle deal end time must earlier than the max allowed current time | |
| bundle.bundle_deal_fix_price_invalid_range | Fix price should be within Price range. | |
| bundle.bunde_deal_multi_tier_invalid_discount | Higher tier should have a higher or same discount or bundle price | |
| bundle.bundle_deal_multi_tier_invalid_discount_with_equal_error | Higher tier discount must be equivalent or greater than lower tier | |
| bundle.bundle_deal_multi_tier_invalid_fix_price_per_item | Higher tier should have lower price per item (price per item = fixed bundle price / item amount) | |
| bundle.bundle_deal_multi_tier_feature_toggle | Cannot create multi-tier bundle deals | |
| bundle.bundle_deal_name_length | Name length can't be less than 1 or greater than 25 | |
| bundle.bundle_deal_ongoing_promotion_info_lock | Cannot change rule_type, fix_price, discount_percentage, discount_value or tiers number if Bundle deal is ongoing. | |
| bundle.bundle_deal_ongoing_promotion_info_lock_min_amount | Cannot change min_amount if Bundle deal is ongoing and has enabled items | |
| bundle.bundle_deal_over_min_amount | The item amount can't exceed 3000 | |
| bundle.bundle_deal_over_tier | Max bundle tier allowed is 3 | |
| bundle.bundle_deal_rule_type_mix_use | Please use consistent rule type | |
| bundle.bundle_deal_rule_type_value | Please use correct bundle deal rule type | |
| bundle.bundle_deal_tier_invalid | The discount off for tier 1 must be < 90%% | |
| bundle.bundle_deal_under_min_amount | The item amount should be greater than 1 | |
| bundle.bundle_deal_under_min_amount_multi_tier | The item amount should be greater than the previous tier | |
| bundle.bundle_deal_invaild_discount_percentage | Discount percentage should not less than 1%% and not more than 99%% | |
| bundle.bundle_deal_min_span_within | The promotion period must be greater than 1 hour | |
| bundle.bundle_deal_start_time_error | The start time should be later than current time | |
| error_network | Inner http call failed | |
| error_data | parse data failed | |
| error_data | data not exist | |
| error_param | parameter invalid | |
| error_param | The information you queried is not found. | |
| error_param | Wrong parameters, detail: {msg}. | |
| error_server | Something wrong. Please try later. | |
| error_shop | shopid is invalid | |
| error_param | request not from gateway |
§17 Common errors
Common errors
| Error | Description | Solution |
|---|---|---|
| error_auth | partner_id is invalid | |
| error_auth | The App is deleted, and you'll be unable to make any API call. | |
| error_auth | App developer’s permissions for authorizations have been restricted. If you’re a seller, contact the developer for more information. If you’re the developer, refer to the Open Platform Console for details. | |
| error_param | There is no partner_id in query. | |
| error_param | Invalid partner_id. | |
| error_param | no timestamp | |
| error_param | Invalid timestamp | |
| error_param | There is no sign in query. | |
| error_sign | Wrong sign. | |
| invalid_partner_id | Invalid partner_id, please have a check. | |
| error_auth | No permission to current api. | |
| error_api_call_restricted | The App permission for api call have been restricted. If you’re a seller, contact the developer for more information. If you’re the developer, refer to the Open Platform Console for details. | |
| api_suspended | The API is offline. Please call v2 API instead. | |
| error_limit | The total API call number made by your APP has reached the daily API call limit, please try again after 00: 00 (UTC+08:00) | |
| error_rate_limit | Too many requests. You have reached the rate limit. Please try again later. | |
| source_ip_undeclared | Request Source IP ({ip}) is undeclared. Please declare all your IP addresses in the Shopee Open Platform Console > App list > IP Address Whitelist | |
| error_param | Permission denied. This API is currently offline or the request path is incorrect. | |
| error_param | Partner_id is invalid, should be an integer between 0 and 4294967295. | |
| error_param | no timestamp. | |
| error_param | Timestamp is invalid, should be an integer between 0 and 4294967295. | |
| error_param | Timestamp is expired. | |
| error_partner_key_expired | Your API partner key has expired, please reset the Live API Partner Key in Console to get a new valid partner key to call open api. | |
| error_api_permission | This app type has no permission to this API. | |
| error_param | There is no access_token in query. | |
| error_auth | Invalid access_token. | |
| error_auth | Invalid partner_id or shopid. | |
| shop_no_linked | Partner and shop has no linked. | |
| shop_banned | The shop account has been banned. Permissions for shop authorization and API calls have been suspended until the shop account is restored. | |
| invalid_acceess_token | Invalid access_token, please have a check. | |
| partner_shop_no_link | Invalid partner_id or shop_id, please have a check. | |
| error_ashop_api_permission | The shop is Affiliate shop has no permission to call this API. | |
| error_kyc_auth | No permission. Please inform the seller to complete the Seller Registration on Shopee Seller Center first, then this shop can call for this API. | |
| error_auth | System error, please try again later. | |
| error_param | There is no shop_id in query. | |
| error_param | shop_id is invalid, should be an integer between 0 and 4294967295. |
§18 Update log
Update log
| Date | Change |
|---|---|
| 2025-09-08 | select type for some parameters |
| 2022-08-29 | add additional_tiers |
| 2022-07-26 | Add Error Example information |
| 2022-06-29 | Optimize the Sample information of Request Parameter and Response Parameter |
| 2021-04-25 | update |
