Quản lý sản phẩm (PIM)Biến thể sản phẩm
Lấy danh sách biến thể
Lấy danh sách biến thể sản phẩm (thường dùng để lấy các variants của 1 sản phẩm cụ thể).
Endpoint
GET /site/productvariants
Headers
| Key | Value | Bắt buộc | Mô tả |
|---|---|---|---|
SiteTenantId | {tenant_id} | Có | ID của công ty/tenant. |
Workflow & Logic
API này được sử dụng chủ yếu trong trang chi tiết sản phẩm (PDP) để lấy danh sách tất cả các biến thể khả dụng, hoặc dùng để kiểm tra tồn kho/giá của một danh sách biến thể cụ thể.
Quy trình xử lý (Internal Processing)
-
Tiếp nhận tham số lọc (Filtering):
product_id: Lọc tất cả biến thể thuộc về một sản phẩm cha. Đây là use-case phổ biến nhất.ids: Lấy thông tin của một tập hợp các biến thể cụ thể (VD: Khi hiển thị giỏ hàng, cần lấy lại thông tin mới nhất của các item trong giỏ).external_id: Tìm biến thể theo mã đồng bộ từ hệ thống ngoài (ERP/POS).
-
Truy vấn Database:
- Chỉ lấy biến thể thuộc shop hiện tại, lọc theo các tiêu chí đã nhận (không lọc theo trạng thái).
- Mặc định sắp xếp theo
display_orderASC để đảm bảo thứ tự hiển thị màu sắc/kích thước đúng như Admin cấu hình.
-
Trả về kết quả (Formatting):
- Dữ liệu trả về là danh sách các đối tượng
ProductVariant. - Lưu ý: API này trả về dữ liệu "raw" của biến thể (SKU, Giá gốc, Tồn kho...). Việc tính toán giá bán thực tế (Sale Price) dựa trên Chính sách giá (Price Policy) thường được thực hiện ở tầng ứng dụng hoặc thông qua API
Product(enrichment) chứ không phải trực tiếp tại đây, trừ khi có logic mở rộng (trong code hiện tại trườngprice_by_policyluôn là mảng rỗng để tối ưu hiệu năng).
- Dữ liệu trả về là danh sách các đối tượng
Query Parameters
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
product_id | integer | Không | Lọc theo ID sản phẩm cha. |
ids | string | Không | Lọc theo danh sách ID biến thể (cách nhau dấu phẩy, tối đa 100 ID). |
external_id | string | Không | Lọc theo mã External ID. |
page | integer | Không | Trang hiện tại (Mặc định: 1). |
limit | integer | Không | Số lượng bản ghi (Mặc định và tối đa: 50). |
sort_by | string | Không | Sắp xếp (display_order, datecreated). |
sort_type | string | Không | Kiểu sắp xếp (ASC, DESC). |
Response Schema
HTTP 200 - JSON Object
{
"total": 3,
"currentpage": 1,
"limit": 50,
"items": [
{
"id": 101,
"product_id": 10,
"sku": "IP15-BLUE-256",
"price": 25000000,
"option_values": [
{ "option_id": 1, "value_id": 5 }
],
// ... Product Variant Object Fields
},
{
"id": 102,
"product_id": 10,
"sku": "IP15-BLACK-256",
"price": 25000000,
// ...
}
]
}