Chuyển tới nội dung chính

Lấy danh sách danh mục sản phẩm

API này giúp bạn lấy danh sách các danh mục sản phẩm có trong hệ thống. Bạn có thể sử dụng các tham số (params) như page, limit để phân trang kết quả trả về.

Chỉ trả về danh mục gốc — kèm danh mục con

API chỉ trả về các danh mục gốc (không có danh mục cha). Danh mục con của mỗi danh mục gốc được trả kèm trong trường children của danh mục đó.


Endpoint

🔗Endpoint Staging
GET https://staging-manage.api.miniai.vn/api/external/v1/categories
Example
https://staging-manage.api.miniai.vn/api/external/v1/categories?limit=5&page=1
🔗Endpoint Production
GET https://manage-api.miniap.vn/api/external/v1/categories

Xác thực (Authentication)

Mọi request phải gửi kèm API key của bạn trong header:

HeaderGiá trịYêu cầu
x-api-keyminiai-partner <API_KEY_CỦA_BẠN>Bắt buộc
Không cần gửi shopId

Hệ thống tự động xác định gian hàng (shopId) từ API key của bạn và gán vào request. Vì vậy bạn không cần gửi shopId trong query — kết quả trả về luôn là danh mục của gian hàng tương ứng với API key.

Tham số truy vấn (Query Parameters)

Tất cả tham số đều là tùy chọn.

Tham sốKiểuYêu cầuMặc địnhMô tả
pagenumberTùy chọn1Trang cần lấy, số nguyên ≥ 1.
limitnumberTùy chọn10Số danh mục mỗi trang, tối đa 50. Gửi -1 để lấy toàn bộ.
sortBystringTùy chọncreatedAtTên trường dùng để sắp xếp (vd: name, position, createdAt).
sortOrderstringTùy chọndescThứ tự sắp xếp: asc (tăng dần) hoặc desc (giảm dần).
Lấy toàn bộ danh mục với limit=-1

Gửi limit=-1 để bỏ phân trang và nhận tất cả danh mục gốc trong một lần gọi. Khi đó hãy bỏ qua các giá trị phân trang trong meta (limit, totalPages) — chỉ total là có ý nghĩa.

Ví dụ Request

curl -X GET 'https://staging-manage.api.miniai.vn/api/external/v1/categories?page=1&limit=5&sortBy=createdAt&sortOrder=desc' \
-H 'x-api-key: miniai-partner <API_KEY_CỦA_BẠN>'

Phản hồi (Response)

Thành công trả về mã 200. Danh sách danh mục nằm trong data.categories, thông tin phân trang nằm trong meta (cùng cấp với data).

{
"success": true,
"data": {
"categories": [
{
"_id": "68c6dcd4938bb4fca9e005fc",
"type": "product",
"name": "Danh mục migrate",
"slug": "danh-mc-migrate",
"images": [
"https://dmcl0k8mc5oht.cloudfront.net/64204a17a5a97a86f12e1f0a/541877a8-053e-4f28-b55f-1ad0c75579f8.jpeg"
],
"subItemsGroupIDs": [],
"shopId": "64204a17a5a97a86f12e1f0a",
"status": "active",
"createdAt": "2025-09-14T15:18:44.114Z",
"updatedAt": "2025-09-14T15:19:03.068Z",
"__v": 0,
"position": 1,
"children": [],
"id": "68c6dcd4938bb4fca9e005fc"
},
{
"images": [],
"subItemsGroupIDs": [],
"_id": "68c3896389abbc33d8e8d7b8",
"type": "product",
"name": "Sản phẩm nổi bật",
"slug": "hot-products",
"sCategoryId": "1004537153",
"storeId": "200001061016",
"shopId": "64204a17a5a97a86f12e1f0a",
"platform": "haravan",
"status": "active",
"createdAt": "2025-09-12T02:45:55.486Z",
"updatedAt": "2025-09-16T08:31:48.796Z",
"children": [],
"id": "68c3896389abbc33d8e8d7b8"
},
{
"images": [],
"subItemsGroupIDs": [],
"_id": "68c3896389abbc33d8e8d7b7",
"type": "product",
"name": "Sản phẩm khuyến mãi",
"slug": "onsale",
"sCategoryId": "1004537152",
"storeId": "200001061016",
"shopId": "64204a17a5a97a86f12e1f0a",
"platform": "haravan",
"status": "active",
"createdAt": "2025-09-12T02:45:55.486Z",
"updatedAt": "2025-09-16T08:31:48.796Z",
"children": [],
"id": "68c3896389abbc33d8e8d7b7"
},
{
"images": [],
"subItemsGroupIDs": [],
"_id": "68c3896389abbc33d8e8d7b6",
"type": "product",
"name": "Trang chủ",
"slug": "frontpage",
"sCategoryId": "1004537151",
"storeId": "200001061016",
"shopId": "64204a17a5a97a86f12e1f0a",
"platform": "haravan",
"status": "active",
"createdAt": "2025-09-12T02:45:55.486Z",
"updatedAt": "2025-09-16T08:31:48.806Z",
"children": [],
"id": "68c3896389abbc33d8e8d7b6"
},
{
"subItemsGroupIDs": [],
"_id": "68c28f92b4a7efbfddf4eb9b",
"type": "product",
"name": "Haravan",
"slug": "other-haravan",
"images": [
"https://bizweb.dktcdn.net/thumb/1024x1024/100/438/295/products/haravan-01.png"
],
"shopId": "64204a17a5a97a86f12e1f0a",
"platform": "haravan",
"status": "active",
"createdAt": "2025-09-11T09:00:02.134Z",
"updatedAt": "2025-09-11T09:00:02.134Z",
"children": [],
"id": "68c28f92b4a7efbfddf4eb9b"
}
]
},
"meta": {
"total": 42,
"page": 1,
"limit": 5,
"totalPages": 9
}
}

Các trường trong data.categories[]

TrườngKiểuMô tả
id / _idstringID của danh mục — dùng làm categoryId khi tạo sản phẩm
typestringLuôn là product
namestringTên danh mục
slugstringĐường dẫn thân thiện của danh mục
imagesstring[]Danh sách URL ảnh của danh mục
statusstringactive hoặc inactive
positionnumberThứ tự hiển thị (nếu có)
childrenobject[]Danh sách danh mục con — cùng cấu trúc với danh mục gốc
shopIdstringID gian hàng
platformstringNền tảng nguồn nếu danh mục được đồng bộ từ hệ thống khác (vd: haravan)
sCategoryIdstringID danh mục trên nền tảng nguồn (chỉ có với danh mục đồng bộ)
storeIdstringID cửa hàng trên nền tảng nguồn (chỉ có với danh mục đồng bộ)
subItemsGroupIDsstring[]Danh sách ID nhóm sản phẩm con (nếu có)
createdAtstringThời điểm tạo (ISO 8601)
updatedAtstringThời điểm cập nhật gần nhất (ISO 8601)

Các trường trong meta

TrườngKiểuMô tả
totalnumberTổng số danh mục gốc của gian hàng (mọi trang)
pagenumberTrang hiện tại
limitnumberSố danh mục mỗi trang
totalPagesnumberTổng số trang

Lỗi thường gặp

Nguyên nhân
400Tham số sai kiểu (page/limit không phải số), limit vượt quá 50, sortOrder không phải asc/desc
401Thiếu header x-api-key, sai tiền tố miniai-partner , hoặc API key không hợp lệ
429Vượt giới hạn số request (xem mục Giới hạn bên dưới)
500Lỗi hệ thống
{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed",
"validation": {
"query": {
"source": "query",
"keys": ["limit"],
"message": "\"limit\" must be less than or equal to 50"
}
}
}

Giới hạn (Rate limit)

100 request / phút

Mỗi gian hàng được gọi tối đa 100 request mỗi phút trên toàn bộ External API. Vượt quá giới hạn sẽ nhận mã 429.

Các bước tiếp theo

Với id của danh mục, bạn có thể: