Quản lý nhóm sản phẩmSản phẩm
Tạo sản phẩm
Tạo mới một sản phẩm
Endpoint
POST /v1/products
Quyền:
product.manage
Request Body
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
company_id | int | Có | ID công ty |
creator_id | int | Có | ID người tạo |
name | string | Có | Tên sản phẩm (duy nhất trong công ty) |
type | int | Có | Loại sản phẩm: 1 (Hàng hóa), 3 (IMEI), 5 (Combo), 7 (Dịch vụ) |
code | string | Không | Mã sản phẩm (duy nhất) |
status | int | Có | 1 (Nháp), 3 (Hoạt động), 5 (Lưu trữ) |
is_bom_kit | int | Không | 1: Là Combo/Kit (chỉ set khi tạo, không đổi được) |
weight_type | int | Không | Loại trọng lượng (chỉ set khi tạo): 1 (Đơn vị), 3 (Cân nặng), 5 (Catch weight) |
booking_attachable | int | Không | 1: Sản phẩm đính kèm booking (chỉ set khi tạo, luôn sell_on_zero = 1) |
options | array | Không | Cấu trúc tùy chọn biến thể (Size, Color...) |
external_id | string | Không | ID tham chiếu ngoài (duy nhất) |
category_primary | int | Không | ID danh mục chính |
category_id_list | array | Không | Danh sách ID danh mục phụ |
brand_id | int | Không | ID thương hiệu |
supplier_id | array | Không | Danh sách ID nhà cung cấp |
sell_on_zero | int | Không | 1: Cho phép bán khi tồn kho bằng 0 |
visibility | int | Không | Trạng thái hiển thị |
installment | array | Không | Cấu hình trả góp |
tax_ratio | float | Không | Thuế suất (%) |
name_short | string | Không | Tên ngắn |
tags | array | Không | Danh sách tag |
note | string | Không | Ghi chú nội bộ |
attribute_detail | array | Không | Thông tin thuộc tính chi tiết |
category_displayorder | array | Không | Thứ tự hiển thị theo danh mục |
weight_sale_mode | int | Không | Chế độ bán theo trọng lượng |
weight_presets | array | Không | Các mức cân nặng định sẵn |
physical_catch_weight_uom_id | int | Không | Đơn vị tính cho catch weight |
pricing_type | int | Không | Loại định giá |
allow_preorder | int | Không | 1: Cho phép đặt hàng trước |
default_variant_id | int | Không | ID biến thể mặc định |
country_of_origin | string | Không | Xuất xứ |
hs_code | string | Không | HS Code |
need_customize | int | Không | 1: Cần tùy biến |
mockup_supported | int | Không | 1: Hỗ trợ mockup |
config3d_supported | int | Không | 1: Hỗ trợ cấu hình 3D |
material_type | int | Không | Loại vật liệu |
length | int | Không | Chiều dài (mm) |
width | int | Không | Chiều rộng (mm) |
height | int | Không | Chiều cao (mm) |
packing_priority | int | Không | Độ ưu tiên đóng gói |
page_id | int | Không | ID trang nội dung |
default_warehouse_location_id | int | Không | ID vị trí kho mặc định |
lead_time | int | Không | Thời gian chuẩn bị hàng (ngày) |
expiry_tracked | int | Không | 1: Theo dõi hạn sử dụng |
summary | string | Không | Tóm tắt sản phẩm |
description | string | Không | Mô tả chi tiết |
info_package | string | Không | Thông tin đóng gói |
info_warranty | string | Không | Thông tin bảo hành |
info_promotion | string | Không | Thông tin khuyến mãi |
info_promotion_note | string | Không | Ghi chú khuyến mãi |
seo_url | string | Không | URL SEO (tự sinh từ name + code nếu trống) |
seo_title | string | Không | Tiêu đề SEO |
seo_meta_description | string | Không | Mô tả Meta SEO |
seo_meta_keyword | string | Không | Từ khóa SEO |
seo_graph_file_id | int | Không | ID ảnh SEO Graph |
seo_canonical | string | Không | Canonical URL |
seo_options | object | Không | Các tùy chọn SEO |
badge | string | Không | Nhãn hiển thị (Mới, Hot...) |
certification | string | Không | Thông tin chứng nhận |
avatar_file_id_list | array | Không | Danh sách ID ảnh đại diện |
photo_gallery_file_id_list | array | Không | Danh sách ID ảnh thư viện |
photo360_file_id_list | array | Không | Danh sách ID ảnh 360 |
embed_video_scripts | string | Không | Script nhúng video |
Lưu ý: Các trường
type,weight_type,is_bom_kit,booking_attachablechỉ được gán khi tạo mới (không thể thay đổi khi edit). Trườngprocurement_typehiện được hardcode = 1 (Buy to stock).
Ví dụ JSON
{
"company_id": 1,
"creator_id": 10,
"name": "Áo thun Polo mẫu mới",
"type": 1,
"code": "POLO2024",
"status": 1,
"is_bom_kit": 0,
"weight_type": 1,
"booking_attachable": 0,
"options": [
{
"option_id": 10,
"option_values": [
{ "option_value_name": "Đỏ" },
{ "option_value_name": "Xanh" }
]
},
{
"option_id": 11,
"option_values": [
{ "option_value_name": "S" },
{ "option_value_name": "M" }
]
}
],
"external_id": "",
"category_primary": 105,
"category_id_list": [],
"brand_id": 12,
"supplier_id": [36],
"sell_on_zero": 1,
"visibility": 1,
"installment": [],
"tax_ratio": 10.0,
"name_short": "",
"tags": ["ao-thun", "polo"],
"note": "",
"attribute_detail": [],
"category_displayorder": [],
"weight_sale_mode": 0,
"weight_presets": [],
"physical_catch_weight_uom_id": 0,
"pricing_type": 1,
"allow_preorder": 0,
"default_variant_id": 0,
"country_of_origin": "",
"hs_code": "",
"need_customize": 0,
"mockup_supported": 0,
"config3d_supported": 0,
"material_type": 0,
"length": 0,
"width": 0,
"height": 0,
"packing_priority": 0,
"page_id": 0,
"default_warehouse_location_id": 0,
"lead_time": 0,
"expiry_tracked": 0,
"summary": "",
"description": "",
"info_package": "",
"info_warranty": "",
"info_promotion": "",
"info_promotion_note": "",
"seo_url": "",
"seo_title": "",
"seo_meta_description": "",
"seo_meta_keyword": "",
"seo_graph_file_id": 0,
"seo_canonical": "",
"seo_options": {},
"badge": "",
"certification": "",
"avatar_file_id_list": [],
"photo_gallery_file_id_list": [],
"photo360_file_id_list": [],
"embed_video_scripts": ""
}Response Schema
HTTP 201 - Created
Trả về Product Object vừa tạo.
Error Codes
Lỗi dữ liệu đầu vào. Trả về mảng các mã lỗi:
| Mã lỗi | Mô tả |
|---|---|
error_name_require | Tên sản phẩm không được để trống |
error_name_duplicated | Tên sản phẩm đã tồn tại |
error_code_existed | Mã sản phẩm (code) đã tồn tại |
error_external_id_existed | External ID đã tồn tại |
error_status_not_exist | Trạng thái không hợp lệ |
error_brand_not_valid | ID thương hiệu không hợp lệ |
error_supplier_not_valid | ID nhà cung cấp không hợp lệ |
error_category_not_valid | ID danh mục không hợp lệ |
error_company_id_required | ID công ty không được để trống |
error_company_id_notfound | ID công ty không tìm thấy |
error_user1_id_required | ID người tạo không được để trống |
error_user_id_notfound | ID người tạo không tìm thấy |