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

KeyValueBắt buộcMô 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)

  1. 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).
  2. 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_order ASC để đảm bảo thứ tự hiển thị màu sắc/kích thước đúng như Admin cấu hình.
  3. 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ường price_by_policy luôn là mảng rỗng để tối ưu hiệu năng).

Query Parameters

TênKiểuBắt buộcMô tả
product_idintegerKhôngLọc theo ID sản phẩm cha.
idsstringKhôngLọc theo danh sách ID biến thể (cách nhau dấu phẩy, tối đa 100 ID).
external_idstringKhôngLọc theo mã External ID.
pageintegerKhôngTrang hiện tại (Mặc định: 1).
limitintegerKhôngSố lượng bản ghi (Mặc định và tối đa: 50).
sort_bystringKhôngSắp xếp (display_order, datecreated).
sort_typestringKhôngKiể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,
      // ...
    }
  ]
}

Xem Product Variant Object Schema

On this page