Giới thiệu Open API – Mini Gift
Open API cho phép hệ thống của bạn kết nối trực tiếp với Mini Gift để quản lý quà tặng, tra cứu chiến dịch và cấu hình Webhook một cách tự động, không cần thao tác thủ công trên Portal.
API được thiết kế theo chuẩn RESTful, dữ liệu truyền và nhận ở định dạng JSON (UTF-8), xác thực bằng API Key.
Tài liệu này dành cho lập trình viên tích hợp hệ thống bên ngoài (ERP, CRM, POS, website...) với Mini Gift. Người dùng cần có quyền quản trị cửa hàng để tạo API Key.
1. Lấy API Key
API Key được tạo và quản lý ngay trên Portal Mini Gift. Mỗi cửa hàng chỉ có một API Key duy nhất.
Truy cập Quản lý liên kết
Từ menu bên trái, chọn Quản lý liên kết.

Hình ảnh: Truy cập Quản lý liên kết từ menu bên trái
Chọn tab Api Key
Nhấn vào tab Api Key ở thanh tab phía trên.

Hình ảnh: Chọn tab Api Key
Tạo mới API Key
Nhấn nút Tạo mới (góc phải). Một hộp thoại xuất hiện yêu cầu bạn nhập tên cho API Key.

Hình ảnh: Nhập tên và xác nhận tạo API Key
Nếu đã có API Key cũ, việc tạo mới sẽ ghi đè khóa cũ ngay lập tức — mọi
tích hợp đang dùng khóa cũ sẽ bị lỗi 401.
Sao chép API Key
Sau khi xác nhận, hệ thống sinh ra một khóa có dạng sk_ theo sau là 48 ký tự ngẫu nhiên:
sk_9aF3kZ1qWpX7bN2rL8vT0cH5dY4eU6sM1oI2gK3jD7fB0nQ
Nhấn nút Sao chép bên cạnh khóa để copy vào clipboard.

Hình ảnh: Sao chép API Key vừa tạo
- API Key tương đương mật khẩu: cần bảo mật tuyệt đối, chỉ lưu ở phía máy chủ (server-side), không đặt trong mã nguồn client, ứng dụng di động hay biến môi trường công khai. - Nếu nghi ngờ lộ khóa, hãy tạo lại API Key mới để vô hiệu hóa khóa cũ.
2. Xác thực (Authentication)
Mọi request gửi đến Open API đều bắt buộc gắn API Key vào header x-api-key:
x-api-key: sk_9aF3kZ1qWpX7bN2rL8vT0cH5dY4eU6sM1oI2gK3jD7fB0nQ
Content-Type: application/json
Cửa hàng (shop) được xác định tự động từ API Key, vì vậy bạn không cần truyền shopId trong bất kỳ request nào.
Nếu thiếu hoặc sai API Key, hệ thống trả về lỗi 401 Unauthorized:
{ "statusCode": 401, "message": "Thiếu API key" }
{ "statusCode": 401, "message": "API key không hợp lệ" }
3. Base URL & môi trường
GET https://api.minigift.vn/api
Toàn bộ endpoint của Open API dùng chung tiền tố /v1/open. Ví dụ đầy đủ:
https://api.minigift.vn/api/v1/open/gifts
| Thành phần | Giá trị | Ý nghĩa |
|---|---|---|
| Base URL | https://api.minigift.vn/api | Địa chỉ máy chủ Mini Gift |
| Tiền tố Open API | /v1/open | v1 là phiên bản API |
| Tài nguyên | /gifts, /campaigns, /webhooks | Nhóm chức năng |
4. Định dạng phản hồi (Response format)
Mọi phản hồi thành công đều được bọc trong một envelope thống nhất với trường success: true:
{
"data": {},
"success": true
}
Với các API trả về danh sách, phản hồi kèm thêm thông tin phân trang trong meta:
{
"data": [],
"meta": { "total": 100, "page": 1, "limit": 10 },
"success": true
}
| Trường | Kiểu | Mô tả |
|---|---|---|
success | boolean | Luôn là true với phản hồi thành công |
data | object | array | Dữ liệu trả về |
meta.total | number | Tổng số bản ghi khớp điều kiện |
meta.page | number | Trang hiện tại |
meta.limit | number | Số bản ghi mỗi trang |
- Trường định danh được trả về dưới tên
id(thay cho_idnội bộ). - TrườngshopIdđược ẩn khỏi phản hồi (cửa hàng đã xác định qua API Key). - Thời gian trả về theo chuẩn ISO 8601 (UTC), ví dụ
2026-07-02T02:00:00.000Z.
5. Phân trang (Pagination)
Các API danh sách nhận hai tham số truy vấn chung:
| Tham số | Kiểu | Mặc định | Giới hạn |
|---|---|---|---|
page | number | 1 | ≥ 1 |
limit | number | 10 | 1 – 1000 |
Ví dụ: GET /v1/open/gifts?page=2&limit=50.
6. Giới hạn truy cập (Rate limit)
Mỗi API Key được phép gọi tối đa 30 request / 60 giây. Khi vượt ngưỡng, hệ thống trả về lỗi 429 Too Many Requests. Hãy triển khai cơ chế retry có độ trễ tăng dần (backoff) ở phía client.
7. Bảng mã trạng thái (HTTP status codes)
| Mã | Ý nghĩa | Khi nào xảy ra |
|---|---|---|
200 | OK | Request thành công |
201 | Created | Tạo mới thành công |
400 | Bad Request | Dữ liệu gửi lên không hợp lệ (thiếu trường, sai định dạng, sai enum) |
401 | Unauthorized | Thiếu hoặc sai API Key |
404 | Not Found | Không tìm thấy tài nguyên (ID không tồn tại) |
409 | Conflict | Trùng lặp (ví dụ quà đã tồn tại, webhook đã đăng ký) |
429 | Too Many Requests | Vượt giới hạn rate limit |
500 | Internal Server Error | Lỗi phía máy chủ |
Cấu trúc phản hồi lỗi:
{
"statusCode": 400,
"message": "Mô tả lỗi cụ thể",
"error": "Bad Request"
}
8. Danh sách API
| Nhóm | Mô tả | Trang |
|---|---|---|
| Quản lý quà tặng | Tạo, cập nhật, xoá và tra cứu quà tặng | Quản lý quà tặng |
| Chiến dịch | Lấy danh sách chiến dịch và thống kê khảo sát | Chiến dịch |
| Webhook | Đăng ký nhận thông báo sự kiện theo thời gian thực | Webhook |