Skip to main content

Quản lý quà tặng

Nhóm API cho phép bạn tạo, cập nhật, xoá và tra cứu quà tặng trong cửa hàng Mini Gift.

Xác thực

Tất cả endpoint bên dưới đều yêu cầu header x-api-key. Xem chi tiết tại trang Giới thiệu Open API.


1. Đối tượng quà tặng (Gift)

Toàn bộ API dưới đây thao tác trên đối tượng quà tặng có cấu trúc sau:

Bảng thuộc tính Gift

TrườngKiểuMô tả
idstringID của quà tặng
namestringTên quà tặng
descriptionstringMô tả chi tiết
imagestringURL hình ảnh quà tặng
winDisplayImagestringURL hình hiển thị khi trúng quà
statusstring (enum)Trạng thái: active, inactive
quantitynumberSố lượng quà phát hành
integrationTypestring (enum)Loại tích hợp (xem bảng bên dưới)
redeemMethodstring (enum)Cách nhận quà (xem bảng bên dưới)
deliveryMethodstring (enum)Hình thức giao quà: in_store, delivery
giftCodestringMã quà tặng (hệ thống tự sinh với một số loại tích hợp)
pointsRequirednumberSố điểm cần để đổi quà (khi redeemMethod = exchange_points)
discountVoucherConfigobjectCấu hình voucher giảm giá (khi integrationType = discount_voucher)
claimStartDatestring (ISO 8601)Ngày bắt đầu cho phép đổi quà — chỉ dùng khi redeemMethod = exchange_points. Trước thời điểm này, quà không hiển thị cho khách đổi điểm
claimEndDatestring (ISO 8601)Ngày kết thúc cho phép đổi quà — chỉ dùng khi redeemMethod = exchange_points. Sau thời điểm này, quà không còn khả dụng để đổi điểm
expirationGiftDatestring (ISO 8601)Ngày hết hạn sử dụng voucher — chỉ dùng khi integrationType = discount_voucher. Sau ngày này, voucher đã nhận sẽ không thể sử dụng
createdAtstring (ISO 8601)Thời điểm tạo
updatedAtstring (ISO 8601)Thời điểm cập nhật gần nhất

Giá trị enum

Bảng integrationType

Loại tích hợp quyết định cách quà được sử dụng:

Giá trịÝ nghĩa
direct_claimNhận quà trực tiếp (sinh mã quà)
campaignQuà gắn với chiến dịch (minigame, vòng quay...)
miniappQuà sử dụng trong Mini App
externalQuà tích hợp hệ thống ngoài (mã do bên thứ ba cấp)
discount_voucherVoucher giảm giá (cần discountVoucherConfig)

Bảng redeemMethod

Cách khách nhận/đổi quà:

Giá trịÝ nghĩa
self_confirmKhách tự xác nhận
staff_scanNhân viên quét mã để trao quà
exchange_pointsĐổi quà bằng điểm tích lũy

Bảng discountVoucherConfig

Cấu hình voucher giảm giá:

TrườngKiểuBắt buộcMô tả
discountTypestringpercentage (giảm %) hoặc fixed_amount (giảm số tiền cố định)
discountValuenumberGiá trị giảm (theo % hoặc theo VND)
maxUsesnumberSố lần sử dụng tối đa (mặc định 1)
minimumOrderAmountnumberKhôngGiá trị đơn hàng tối thiểu để áp dụng
maximumDiscountAmountnumberKhôngSố tiền giảm tối đa (dùng cho giảm %)
Quy tắc nghiệp vụ
  • redeemMethod = exchange_points chỉ áp dụng cho quà loại direct_claim hoặc discount_voucher. Kết hợp khác sẽ trả về 400. - Không được tạo hai quà trùng cả name + integrationType trong cùng cửa hàng — sẽ trả về 409 Conflict. - giftCode được hệ thống tự sinh cho các loại direct_claim, campaign, external, miniapp; bạn không cần gửi lên.

2. Lấy danh sách quà tặng

Endpoint

🔗Endpoint Production
GET https://api.minigift.vn/api/v1/open/gifts

Tham số truy vấn (Query Parameters)

Tham sốKiểuBắt buộcMô tả
pagenumberKhôngTrang hiện tại (mặc định 1)
limitnumberKhôngSố bản ghi mỗi trang (mặc định 10, tối đa 1000)
searchstringKhôngTìm theo tên quà hoặc mã quà
statusstringKhôngLọc theo trạng thái: active, inactive
integrationTypesstring[]KhôngLọc theo một hoặc nhiều loại tích hợp
giftIdsstring[]KhôngLọc theo danh sách ID quà cụ thể

Ví dụ request

cURL
curl -X GET "https://api.minigift.vn/api/v1/open/gifts?status=active&page=1&limit=10" \
-H "x-api-key: sk_your_api_key_here"

Phản hồi (Response)

{
"data": [
{
"id": "6650f1a2b3c4d5e6f7a8b9c0",
"name": "Voucher giảm 50.000đ",
"image": "https://cdn.minigift.vn/gifts/voucher-50k.png",
"description": "Voucher giảm giá cho đơn từ 200.000đ",
"integrationType": "discount_voucher",
"status": "active",
"redeemMethod": "self_confirm",
"deliveryMethod": "in_store",
"giftCode": "1234567890123",
"pool": {
"_id": "6650f1a2b3c4d5e6f7a8b9c1",
"quantity": 100,
"usedCount": 12,
"reservedCount": 3
},
"usedCodesCount": 12,
"createdAt": "2026-06-20T03:15:00.000Z",
"updatedAt": "2026-06-25T08:40:00.000Z"
}
],
"meta": { "total": 1, "page": 1, "limit": 10 },
"success": true
}
Trường bổ sung khi lấy danh sách
  • pool: thông tin kho mã quà — quantity (tổng), usedCount (đã dùng), reservedCount (đang giữ chỗ). Trả về null nếu quà không có kho. - usedCodesCount: số mã quà đã được sử dụng.

3. Lấy chi tiết quà tặng

Endpoint

🔗Endpoint Production
GET https://api.minigift.vn/api/v1/open/gifts/{id}

Tham số đường dẫn (Path Parameters)

Tham sốKiểuBắt buộcMô tả
idstringID của quà tặng

Ví dụ request

cURL
curl -X GET "https://api.minigift.vn/api/v1/open/gifts/6650f1a2b3c4d5e6f7a8b9c0" \
-H "x-api-key: sk_your_api_key_here"

Phản hồi (Response)

{
"data": {
"id": "6650f1a2b3c4d5e6f7a8b9c0",
"name": "Voucher giảm 50.000đ",
"image": "https://cdn.minigift.vn/gifts/voucher-50k.png",
"description": "Voucher giảm giá cho đơn từ 200.000đ",
"integrationType": "discount_voucher",
"status": "active",
"redeemMethod": "self_confirm",
"deliveryMethod": "in_store",
"giftCode": "1234567890123",
"discountVoucherConfig": {
"discountType": "fixed_amount",
"discountValue": 50000,
"minimumOrderAmount": 200000,
"maxUses": 1
},
"claimStartDate": "2026-06-20T00:00:00.000Z",
"claimEndDate": "2026-07-20T00:00:00.000Z",
"createdAt": "2026-06-20T03:15:00.000Z",
"updatedAt": "2026-06-25T08:40:00.000Z"
},
"success": true
}

4. Tạo quà tặng

Endpoint

🔗Endpoint Production
POST https://api.minigift.vn/api/v1/open/gifts

Dữ liệu được gửi đi (Request Body)

TrườngKiểuBắt buộcMô tả
namestringTên quà tặng
integrationTypestringdirect_claim, campaign, miniapp, external, discount_voucher
statusstringactive, inactive
redeemMethodstringself_confirm, staff_scan, exchange_points
imagestringKhôngURL hình ảnh quà tặng
winDisplayImagestringKhôngURL hình hiển thị khi trúng quà
descriptionstringKhôngMô tả quà tặng
quantitynumberKhôngSố lượng quà
deliveryMethodstringKhôngin_store, delivery
pointsRequirednumberKhôngSố điểm cần để đổi (khi redeemMethod = exchange_points)
couponIdstringKhôngID coupon liên kết
ecomShopIdstringKhôngID cửa hàng TMĐT liên kết
externalsarrayKhôngMã ngoài: [{ "code": "ABC", "link": "https://..." }]
discountVoucherConfigobjectKhôngBắt buộc khi integrationType = discount_voucher
claimStartDatestringKhôngNgày bắt đầu cho phép đổi quà (ISO 8601) — chỉ dùng khi redeemMethod = exchange_points
claimEndDatestringKhôngNgày kết thúc cho phép đổi quà (ISO 8601) — chỉ dùng khi redeemMethod = exchange_points
expirationGiftDatestringKhôngNgày hết hạn sử dụng voucher (ISO 8601) — chỉ dùng khi integrationType = discount_voucher
Lưu ý

Không cần gửi shopId — cửa hàng được xác định thông qua API Key.

Ví dụ request

cURL
curl -X POST "https://api.minigift.vn/api/v1/open/gifts" \
-H "x-api-key: sk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Voucher giảm 50.000đ",
"integrationType": "discount_voucher",
"status": "active",
"redeemMethod": "self_confirm",
"discountVoucherConfig": {
"discountType": "fixed_amount",
"discountValue": 50000,
"minimumOrderAmount": 200000,
"maxUses": 1
}
}'
{
"name": "Voucher giảm 50.000đ",
"integrationType": "discount_voucher",
"status": "active",
"redeemMethod": "self_confirm",
"deliveryMethod": "in_store",
"image": "https://cdn.minigift.vn/gifts/voucher-50k.png",
"description": "Voucher giảm giá cho đơn từ 200.000đ",
"discountVoucherConfig": {
"discountType": "fixed_amount",
"discountValue": 50000,
"minimumOrderAmount": 200000,
"maxUses": 1
}
}

Phản hồi (Response)

{
"data": {
"id": "6650f1a2b3c4d5e6f7a8b9c0",
"name": "Voucher giảm 50.000đ",
"integrationType": "discount_voucher",
"status": "active",
"redeemMethod": "self_confirm",
"deliveryMethod": "in_store",
"giftCode": "1234567890123",
"createdAt": "2026-07-02T02:00:00.000Z",
"updatedAt": "2026-07-02T02:00:00.000Z"
},
"success": true
}

5. Cập nhật quà tặng

Endpoint

🔗Endpoint Production
PATCH https://api.minigift.vn/api/v1/open/gifts/{id}

Tham số đường dẫn (Path Parameters)

Tham sốKiểuBắt buộcMô tả
idstringID của quà tặng cần cập nhật

Dữ liệu được gửi đi (Request Body)

Gửi các trường cần cập nhật (tất cả đều tuỳ chọn), dùng cùng tập trường như khi tạo quà. Các trường không gửi sẽ giữ nguyên.

Ví dụ request

cURL
curl -X PATCH "https://api.minigift.vn/api/v1/open/gifts/6650f1a2b3c4d5e6f7a8b9c0" \
-H "x-api-key: sk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "name": "Voucher giảm 70.000đ", "status": "inactive" }'
{
"name": "Voucher giảm 70.000đ",
"status": "inactive"
}

Phản hồi (Response)

{
"data": {
"id": "6650f1a2b3c4d5e6f7a8b9c0",
"name": "Voucher giảm 70.000đ",
"status": "inactive",
"updatedAt": "2026-07-02T02:30:00.000Z"
},
"success": true
}

6. Xoá quà tặng

Endpoint

🔗Endpoint Production
DELETE https://api.minigift.vn/api/v1/open/gifts/{id}

Tham số đường dẫn (Path Parameters)

Tham sốKiểuBắt buộcMô tả
idstringID của quà tặng cần xoá

Ví dụ request

cURL
curl -X DELETE "https://api.minigift.vn/api/v1/open/gifts/6650f1a2b3c4d5e6f7a8b9c0" \
-H "x-api-key: sk_your_api_key_here"

Phản hồi (Response)

{
"data": {
"id": "6650f1a2b3c4d5e6f7a8b9c0",
"deleted": true
},
"success": true
}