# Danh sách sản phẩm

* /api/product/search: Tính năng này dùng để lấy danh sách sản phẩm ở trên Nhanh.vn. Dữ liệu sẽ được phân trang, mỗi trang tối đa không quá 100 sản phẩm.
* Nếu bạn hay thường xuyên cần gọi toàn bộ danh sách sản phẩm, bạn nên lưu giá trị thời gian lần cuối cùng quét toàn bộ, sau đó dùng 2 request params là updatedDateTimeFrom và updatedDateTimeTo để chỉ lấy về các sản phẩm có cập nhật mới, không cần gọi lại toàn bộ khách cũ không có thay đổi gì.
  * **Chú ý**: updatedDateTime sẽ chỉ bao gồm thông tin sản phẩm (tên, giá bán...) bị thay đổi, không bao gồm thông tin tồn kho của sản phẩm. Để cập nhật tồn kho, bạn nên đăng ký [webhooks tồn kho](https://apidocs.nhanh.vn/v2/webhooks/inventory)

## Request

* Xem các [common request params](https://apidocs.nhanh.vn/v2/readme#request-params)
* Các key của mảng **data array** dùng để tạo **data** json string:

| Key                 | Type   | Description                                                                                                                                                                                                                                                                                 |
| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| page                | int    | Phân trang, mặc định: 1.                                                                                                                                                                                                                                                                    |
| icpp                | int    | Số lượng sản phẩm trên 1 trang, mặc định: 100, tối đa: 100.                                                                                                                                                                                                                                 |
| sort                | array  | Sắp xếp kết quả, dữ liệu gửi lên là 1 mảng kiểu \[Tiêu chí sắp xếp => cách sắp xếp (asc: tăng dần hoặc desc giảm dần)] Giá trị mặc định sẽ là \[id => desc].Các tiêu chí có thể là: **id**: id sản phẩm, **price**: giá sản phẩm, **name**: tên sản phẩm, **inventory**: tồn kho có thể bán |
| name                | string | Tìm sản phẩm theo tên, mã, mã vạch                                                                                                                                                                                                                                                          |
| parentId            | int    | Tìm theo ID sản phẩm cha. -1 = Sản phẩm độc lập, -2 = Sản phẩm cha                                                                                                                                                                                                                          |
| categoryId          | int    | Tìm sản phẩm theo id danh mục sản phẩm, nếu danh mục này có các danh mục con, hệ thống sẽ tìm sản phẩm của toàn bộ danh mục con.                                                                                                                                                            |
| status              | string | Tìm theo trạng thái sản phẩm. Xem bảng mô tả [trạng thái sản phẩm](https://apidocs.nhanh.vn/v2/readme#trang-thai-san-pham)                                                                                                                                                                  |
| priceFrom           | double | Tìm theo giá >=                                                                                                                                                                                                                                                                             |
| priceTo             | double | Tìm theo giá <=                                                                                                                                                                                                                                                                             |
| brandId             | int    | Tìm theo thương hiệu                                                                                                                                                                                                                                                                        |
| imei                | string | Tìm theo IMEI                                                                                                                                                                                                                                                                               |
| showHot             | int    | Tìm theo sản phẩm được đánh dấu là sản phẩm hot (Giá trị truyền lên: 1 hoặc 0)                                                                                                                                                                                                              |
| showNew             | int    | Tìm theo sản phẩm được đánh dấu là sản phẩm mới (Giá trị truyền lên: 1 hoặc 0)                                                                                                                                                                                                              |
| showHome            | int    | Tìm theo sản phẩm được đánh dấu là sản phẩm trên trang chủ (Giá trị truyền lên: 1 hoặc 0)                                                                                                                                                                                                   |
| updatedDateTimeFrom | string | Định dạng: Y-m-d H:i:s, Vd: 2022-05-25 00:00:00 Ngày cập nhật sản phẩm từ ngày                                                                                                                                                                                                              |
| updatedDateTimeTo   | string | Định dạng: Y-m-d H:i:s, Vd: 2022-05-30 23:59:00 Ngày cập nhật sản phẩm đến ngày                                                                                                                                                                                                             |

## Response

* JSON decode the response to get the structure:

| Key      | Type  | Description                               |
| -------- | ----- | ----------------------------------------- |
| code     | int   | 1 = success or 0 = failed                 |
| messages | array | is an array of error messages if code = 0 |
| data     | array | is an array of product list               |

```javascript
[
    "totalPages": 30, // int
    "products": {
        {}, // each product item, all properties are listed in the table below
        ...
    }
]
```

| Key                | Type        | Description                                                                                  |
| ------------------ | ----------- | -------------------------------------------------------------------------------------------- |
| idNhanh            | bigint(20)  | ID sản phẩm trên Nhanh.vn                                                                    |
| categoryId         | int         | ID danh mục sản phẩm trên Nhanh.vn                                                           |
| internalCategoryId | int         | ID danh mục nội bộ trên Nhanh.vn                                                             |
| parentId           | bigint(20)  | -1 = Sản phẩm độc lập, hoặc -2 = Sản phẩm cha, hoặc -10 = Tất cả sản phẩm con                |
| code               | string(255) | Mã sản phẩm                                                                                  |
| name               | string(255) | Tên sản phẩm                                                                                 |
| otherName          | string(255) | Tên khác của sản phẩm                                                                        |
| importPrice        | doulbe      | Giá nhập                                                                                     |
| oldPrice           | double      | Giá cũ                                                                                       |
| price              | double      | Giá bán lẻ                                                                                   |
| wholesalePrice     | double      | Giá bán buôn                                                                                 |
| vat                | int         | % thuế giá trị gia tăng (VD: 10)                                                             |
| image              | string(255) | Đường dẫn tuyệt đối của ảnh đại diện                                                         |
| images             | array       | Đường dẫn tuyệt đối của các ảnh khác của sản phẩm                                            |
| status             | string      | Xem bảng mô tả [trạng thái sản phẩm](https://apidocs.nhanh.vn/v2/readme#trang-thai-san-pham) |
| previewLink        | string      | Link chi tiết của sản phẩm trên website (if status is Active)                                |
| showHot            | int         | (Giá trị 0 or 1) Sản phẩm được đánh dấu là sản phẩm hot                                      |
| showNew            | int         | (Giá trị 0 or 1) Sản phẩm được đánh dấu là sản phẩm mới                                      |
| showHome           | int         | (Giá trị 0 or 1) Sản phẩm được đánh dấu hiển thị ở trang chủ                                 |
| width              | int         | in cm                                                                                        |
| height             | int         | in cm                                                                                        |
| warrantyAddress    | string      | Địa chỉ bảo hành                                                                             |
| warrantyPhone      | string      | Số điện thoại bảo hành                                                                       |
| warranty           | int         | Số tháng bảo hành                                                                            |
| length             | int         | in cm                                                                                        |
| shippingWeight     | int         | in gram                                                                                      |
| createdDateTime    | datetime    | định dạng yyyy-mm-dd hh:mm:ss                                                                |
| brandId            | int         | ID thương hiệu                                                                               |
| brandName          | string      | Tên thương hiệu                                                                              |
| typeId             | int         | ID loại sản phẩm                                                                             |
| typeName           | string      | Loại sản phẩm                                                                                |
| avgCost            | double      | Giá vốn sản phẩm                                                                             |
| countryName        | string      | Xuất xứ                                                                                      |
| unit               | string      | Đơn vị tính                                                                                  |
| importType         | int         | ID Kiểu nhập kho                                                                             |
| importTypeLabel    | string      | Tên kiểu nhập kho                                                                            |
| inventory          | array       | Xem bảng [Inventory](#inventory) bên dưới                                                    |
| attributes         | array       | Xem bảng [Attributes](#attributes) bên dưới                                                  |
| units              | array       | Xem bảng [Units](#units) bên dưới                                                            |
| updatedAt          | int         | Ngày cập nhật sản phẩm (định dạng timestamp)                                                 |

### Inventory

* Tồn kho:

```javascript
[
    // Tổng tồn trong tất cả các kho
    "remain" => int, // số lượng tồn kho
    "shipping" => int, // số lượng đang giao hàng
    "holding" => int, // số lượng đang tạm giữ
    "damage" => int, // số lượng lỗi
    "available" => int, // số lượng có thể bán (sử dụng để hiển thị trên website, chặn đặt hàng khi hết số tồn hoặc vượt quá số tồn).
    "warranty" => int, // số lượng bảo hành
    "warrantyHolding" => int, // Số lượng đang bảo hành
    "depots" => { // Tồn tại từng kho
        "depotId" => {
            "remain" => int, // số lượng tồn kho
            "shipping" => int, //  số lượng đang giao hàng
            "holding" => int, // số lượng đang tạm giữ
            "damage" => int, //  số lượng lỗi
            "available" => int, // số lượng có thể bán (sử dụng để hiển thị trên website, chặn đặt hàng khi hết số tồn hoặcvượt quá số tồn).
            "warranty" => int, // số lượng bảo hành
            "warrantyHolding" => int, // Số lượng đang bảo hành
			"transfering" => int, // Số lượng đang chuyển kho
        },
        "depotId" => {
            // ...
        },
    }
]
```

### Attributes

* Thuộc tính sản phẩm:

```javascript
[
	{
		"id_thuoc_tinh" => {
			"attributeName" => string,
			"id" => int,
			"name" => string,
			"order" => int
		},
		"id_thuoc_tinh" => {
			"attributeName" => string,
			"id" => int,
			"name" => string,
			"order" => int
			"parent" => { // parent attribute
				"id" => int,
				"name" => string
			}
		}
	}
]
```

### Units

* Đơn vị tính

```javascript
[
    {
        "id" => int, // ID đơn vị tính
        "name" => string // Tên đơn vị tính
        "quantity" => int // Số lượng quy đổi
        "importPrice" => double // Giá nhập
        "price" => double // Giá lẻ
        "wholesalePrice" => double // Giá buôn
    },
    {
        ...
    }
]
```
