v2.add_on_deal.update_add_on_deal_main_item
POST/api/v2/add_on_deal/update_add_on_deal_main_itemVia 360: POST https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal_main_item
Write endpoint — changes data on Shopee. The key must be created with "Allow write API calls" ticked, otherwise you get 403 write_not_allowed. Every call is logged.
Description
Bật hoặc tắt sản phẩm chính trong chương trình mua kèm hiện có.
- Gọi qua /v1/shopee/api/v2/add_on_deal/update_add_on_deal_main_item với Authorization: Bearer <key>; dùng platform_shop_id khi có nhiều shop. 360 tự gắn partner_id, shop_id, sign và access_token.
- API GHI: thay đổi dữ liệu thật trên Shopee; cần key có quyền ghi (can_write) và gói mở module Khuyến mãi. Thay đổi cấu hình ưu đãi hoặc giá khuyến mãi người mua thấy.
- HTTP 200 vẫn có thể có lỗi nghiệp vụ; kiểm error trước khi dùng kết quả. Kiểm từng phần tử trong danh sách kết quả, gồm mã lỗi và thông báo của phần tử.
- Đọc trạng thái hiện tại bằng get_add_on_deal trước khi gọi.
- Tối đa 1000 chương trình; thời gian không quá 6 tháng, bắt đầu sau hiện tại ít nhất 1 giờ, kết thúc sau bắt đầu ít nhất 1 giờ. Giảm giá mua kèm không gửi purchase_min_spend/per_gift_num; quà tặng theo chi tiêu không gửi promotion_purchase_limit.
- Tối đa 1000 sản phẩm chính và 100 sản phẩm mua kèm; cần đủ tồn kho, trạng thái hợp lệ và có kênh vận chuyển chung. Thời gian chuẩn bị hàng mua kèm không dài hơn sản phẩm chính; giới hạn mua phải đáp ứng số lượng mua tối thiểu.
- Không sửa chương trình hết hạn hoặc chương trình do quản trị tạo; chương trình đang diễn ra có trường bị khóa, kiểm message. Chỉ lùi thời điểm bắt đầu chương trình sắp diễn ra và rút ngắn kết thúc.
Request
Endpoint
POST https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal_main_item
Authentication & shop
| Name | In | Type | Sample | Description |
|---|---|---|---|---|
| Authorization | header | header | Bearer q360_live_ab12cd34_… | Khóa API của brand (tạo ở mục API key). Bắt buộc với mọi request. Brand suy từ key — không truyền mã brand. |
| platform_shop_id | query | string | 100001 | Gian hàng (lấy ở GET /v1/platforms → shops[].platform_shop_id). BẮT BUỘC khi brand có > 1 gian hàng trên nền tảng; 360 bỏ tham số này trước khi chuyển tiếp. |
Request parameters
| Name | In | Type | Required | Sample | Description |
|---|---|---|---|---|---|
| add_on_deal_id | body | int64 | Yes | 100003 | Mã chương trình mua kèm. |
| main_item_list | body | object[] | Yes | [{"item_id":100011,"status":1}] | Danh sách sản phẩm chính. |
| main_item_list[].item_id | body | int64 | Yes | 100011 | Mã sản phẩm. |
| main_item_list[].status | body | int | Yes | 1 | Trạng thái sản phẩm: 1 = bật, 2 = tắt. |
Request examples
curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal_main_item" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"add_on_deal_id":100003,"main_item_list":[{"item_id":100011,"status":1}]}'
Python
import requests
KEY = "q360_live_..." # khóa API của brand
r = requests.post(
"https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal_main_item",
params={},
json={
"add_on_deal_id": 100003,
"main_item_list": [
{
"item_id": 100011,
"status": 1
}
]
},
headers={"Authorization": f"Bearer {KEY}"},
timeout=60,
)
print(r.status_code)
print(r.json())Node.js
const KEY = 'q360_live_...'; // khóa API của brand
const url = new URL('https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal_main_item');
for (const [k, v] of Object.entries({})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
method: 'POST',
headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({"add_on_deal_id":100003,"main_item_list":[{"item_id":100011,"status":1}]}),
});
console.log(r.status, await r.json());PHP
<?php
$key = 'q360_live_...'; // khóa API của brand
$url = 'https://partner.quantri360.com/v1/shopee/api/v2/add_on_deal/update_add_on_deal_main_item' . '?' . http_build_query([]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key, 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"add_on_deal_id":100003,"main_item_list":[{"item_id":100011,"status":1}]}');
$res = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status, "\n", $res;Response
Response fields (as returned by Shopee)
Phản hồi minh họa thành công; đọc error/message trước khi dùng kết quả. Đọc add_on_deal_id trong response; nếu không có thì đọc add_on_deal_id ở cấp ngoài cùng.
| Name | Type | Sample | Description |
|---|---|---|---|
| request_id | string | d52ca43b277a4f9292fb8be658bfd33d | Mã request của Shopee để tra lỗi. |
| error | string | Mã lỗi Shopee; rỗng = thành công. | |
| message | string | Mô tả lỗi. | |
| response | object | Kết quả xử lý. | |
| main_item_list | object[] | Danh sách sản phẩm chính. | |
| item_id | int64 | 100011 | Mã sản phẩm. |
| status | int | 1 | Trạng thái sản phẩm: 1 = bật, 2 = tắt. |
| add_on_deal_id | int64 | 100003 | Mã chương trình mua kèm. |
Response sample
{
"request_id": "demo-request",
"error": "",
"message": "",
"response": {
"main_item_list": [
{
"item_id": 100011,
"status": 1
}
],
"add_on_deal_id": 100003
}
}
Shopee error codes (22)
Show
| Code | Meaning |
|---|---|
| add_on.add_on_deal_error_unknown | Không sửa chương trình mua kèm do quản trị tạo. |
| add_on.add_on_item_exceed_discount_limit_error | Sản phẩm đã đạt giới hạn tham gia khuyến mãi. |
| add_on.add_on_item_overlap | Sản phẩm đã thuộc danh sách hoặc chương trình mua kèm / mua theo bộ xung đột; xem `message`. |
| add_on.add_on_shipping_channel_error | Không có kênh vận chuyển chung với sản phẩm bật đầu tiên. |
| add_on.add_on_deal_item_under_btoc | Có sản phẩm B2C không được thêm vào khuyến mãi. |
| add_on.add_on_deal_expired | Không sửa chương trình mua kèm đã hết hạn. |
| add_on.add_on_delete_error | Chỉ xóa chương trình mua kèm sắp diễn ra. |
| add_on.add_on_item_invalid | Trạng thái sản phẩm bất thường. |
| add_on.add_on_item_no_stock | Sản phẩm hết hàng. |
| add_on.add_on_no_item | Sản phẩm không tồn tại. |
| add_on.add_on_duplicate_item | Sản phẩm đã tồn tại trong danh sách chính hoặc mua kèm; xem `message`. |
| add_on.add_on_deal_not_exists | Chương trình mua kèm không tồn tại. |
| add_on.add_on_purchase_limit_error | Giới hạn mua phải lớn hơn số lượng mua tối thiểu. |
| error_data | Dữ liệu không tồn tại hoặc không hợp lệ cho thao tác (vd mã không có, loại yêu cầu không cho phép). |
| error_param | Tham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào. |
| error_server | Lỗi hệ thống Shopee — thử lại sau ít phút. |
| error_shop | Gian hàng không hợp lệ — kiểm tra platform_shop_id. |
| error_auth | Ủy quyền gian hàng cho 360 đã hết hạn hoặc bị thu hồi (360 đã tự làm mới token một lần) — chủ gian hàng kết nối lại Shopee trong Partner. |
| error_limit | Chạm hạn mức gọi Shopee trong ngày của kết nối — 360 trả kèm thời điểm thử lại; giảm tần suất gọi. |
| error_rate_limit | Gọi quá nhanh — chờ vài giây rồi gọi lại (360 cũng giới hạn theo key: 429 + Retry-After). |
| shop_banned | Gian hàng đang bị Shopee khóa — mọi API tạm ngưng tới khi gỡ khóa. |
| error_kyc_auth | Gian hàng chưa hoàn tất đăng ký người bán trên Kênh Người Bán. |
Get started
- Sign up for Partner
- Enable a data type of the Khuyến mãi (Marketing) group on the platform page
- Create an API key (tick the Shopee channel)
- Call it as in the examples above