OVIRO LogoOVIRO
Quản lý nhóm sản phẩmBiến thể sản phẩm

Cập nhật hàng loạt biến thể

Cập nhật danh sách biến thể của một sản phẩm cùng lúc

Endpoint

PUT /v1/productvariants/batch/{product_id}

Path Parameters

TênKiểuBắt buộcMô tả
product_idintID sản phẩm cha của các biến thể

Request Body

Gửi danh sách các biến thể cần cập nhật hoặc thêm mới trong mảng items. Cần truyền kèm thông tin công ty và người thao tác để kiểm tra phân quyền.

TrườngKiểuBắt buộcMô tả
company_idintID công ty (dùng để validate và check scope)
creator_idintID người thao tác (dùng để kiểm tra quyền)
itemsarrayDanh sách đối tượng biến thể (tối đa 200 phần tử)

Cấu trúc item trong mảng items

  • Nếu có id > 0: Hệ thống sẽ tìm và CẬP NHẬT biến thể đó.
  • Nếu không có id (hoặc id=0) và có uuid (dạng new_...): Hệ thống sẽ TẠO MỚI biến thể.
TrườngKiểuBắt buộcMô tả
idintKhôngID biến thể (>0 để cập nhật, 0 hoặc bỏ trống để tạo mới)
uuidstringKhôngUUID biến thể. Với biến thể mới có thể gửi dạng new_..., hệ thống sẽ tự chuẩn hóa.
skustringKhôngMã SKU (sẽ được chuẩn hóa bỏ khoảng trắng)
barcodestringKhôngMã barcode
display_namestringKhôngTên hiển thị của biến thể
notestringKhôngGhi chú nội bộ
priceintKhôngGiá bán chính
compare_priceintKhôngGiá so sánh (giá gốc trước giảm giá)
min_stockintKhôngTồn kho tối thiểu
is_serial_trackedintKhôngTheo dõi serial (1: Có, 0: Không)
lengthintKhôngChiều dài
widthintKhôngChiều rộng
heightintKhôngChiều cao
weightintKhôngTrọng lượng
external_idstringKhôngID liên kết bên ngoài
price_by_uomarrayKhôngGiá theo đơn vị tính
statusintKhôngTrạng thái biến thể
combo_dataarrayKhôngDữ liệu combo (nếu là sản phẩm combo)
bomarrayKhôngBill of materials
display_orderintKhôngThứ tự hiển thị (thường do UI sinh ra tự động)
option_valuesarrayKhôngDanh sách giá trị tùy chọn, sẽ được chuẩn hóa bằng identifyProductOptionValues()
photo_gallery_file_id_listarrayKhôngDanh sách file ID ảnh gallery cho biến thể
is_bom_kitintKhôngLà BOM kit (chỉ áp dụng khi TẠO MỚI, không đổi được với biến thể đã tồn tại)

Ví dụ Request Body

Ví dụ payload đầy đủ (rút gọn từ dữ liệu thực tế) khi cập nhật nhiều biến thể của cùng một sản phẩm:

{
  "company_id": 10311,
  "creator_id": 1,
  "items": [
    {
      "id": 2206,
      "uuid": "89d2a505-3034-4d67-a307-2e89e4ccc4a6",
      "sku": "8938502234534",
      "option_values": [
        {
          "option_id": 8,
          "option_value_id": 4,
          "option_value_name": "Đen",
          "uuid": "4abdd739-a132-49bd-9ed8-341ae6d48bbc"
        },
        {
          "option_id": 9,
          "option_value_id": 14,
          "option_value_name": "L",
          "uuid": "7d66253a-9c87-43f2-996b-712e015aa992"
        }
      ],
      "external_id": "",
      "price": 199000,
      "price_by_uom": [],
      "status": 3,
      "photo_gallery_file_id_list": [4598],
      "display_order": 1001,
      "barcode": "",
      "display_name": "",
      "note": "",
      "compare_price": 0,
      "min_stock": 0,
      "is_serial_tracked": 0,
      "length": 0,
      "width": 0,
      "height": 0,
      "weight": 0
    },
    {
      "id": 2208,
      "uuid": "85eefaf7-07bd-48ea-8c42-e58c2cb60bae",
      "sku": "8938502234535",
      "option_values": [
        {
          "option_id": 8,
          "option_value_id": 86,
          "option_value_name": "Đen",
          "uuid": "25c3915c-ed69-4c6d-a1df-88b171ebb516"
        },
        {
          "option_id": 9,
          "option_value_id": 84,
          "option_value_name": "S",
          "uuid": "0dc0a878-f6fe-4157-a119-0916234daa5c"
        }
      ],
      "external_id": "",
      "price": 199000,
      "price_by_uom": [],
      "status": 3,
      "photo_gallery_file_id_list": [4599],
      "display_order": 1002,
      "barcode": "",
      "display_name": "",
      "note": "",
      "compare_price": 0,
      "min_stock": 0,
      "is_serial_tracked": 0,
      "length": 0,
      "width": 0,
      "height": 0,
      "weight": 0
    }
  ]
}

Response Schema

HTTP 200 - OK

Trả về danh sách các biến thể đã được xử lý (bao gồm các ID mới được tạo).

{
    "currentpage": 1,
    "limit": 200,
    "total": 2,
    "items": [
        { "id": 1001, ... },
        { "id": 1005, ... }
    ]
}

Error Codes

Mã lỗiMô tả
error_items_property_is_requiredThuộc tính items phải là mảng
error_items_count_max_200Số lượng items vượt quá 200
error_product_variant_not_found_in_batch(ID #X)Không tìm thấy biến thể với ID đã gửi (khi cập nhật)
error_product_variant_update_fail(ID #X)Cập nhật biến thể thất bại
error_product_variant_add_fail(ID #UUID)Thêm mới biến thể thất bại
error_company_id_requiredID công ty không được để trống
error_company_id_notfoundID công ty không tìm thấy
error_user1_id_requiredID người tạo không được để trống
error_user_id_notfoundID người tạo không tìm thấy

On this page