Tham chiếu: Kho
Kho, tồn kho và phiếu nhập, xuất, kiểm kho. Mọi đường dẫn dưới https://danix.. Đặc tả máy đọc: openapi.json.
Danh sách kho
GET /warehouses
Các kho hàng của shop.
Quyền cần có: khoá có quyền pos..
Ví dụ yêu cầu
curl -X GET "https://danix.vn/api/open/v1/warehouses" \
-H "Authorization: Bearer dnx_live_…"
Phản hồi mẫu (200)
{
"data": [
{
"id": "018f3b8e-1c2d-7a4b-9c3d-000000000001",
"code": "KHO1",
"name": "Kho chính",
"phone": null,
"addressLine": null,
"provinceName": null,
"districtName": null,
"wardName": null,
"isDefault": true
}
]
}
Trường của phản hồi
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
data |
array<object> | có | Các kho. |
data[]. |
string (uuid) | có | Mã kho. |
data[]. |
string | có | Mã kho. |
data[]. |
string | có | Tên kho. |
data[]. |
string hoặc null | có | Số điện thoại kho. |
data[]. |
string hoặc null | có | Địa chỉ kho. |
data[]. |
string hoặc null | có | Tỉnh hoặc thành phố. |
data[]. |
string hoặc null | có | Quận hoặc huyện. |
data[]. |
string hoặc null | có | Phường hoặc xã. |
data[]. |
boolean | có | Kho mặc định của shop. |
Lỗi
| Trạng thái | Mã code |
Ý nghĩa |
|---|---|---|
| 401 | invalid-api-key |
Khoá API thiếu, sai hoặc đã bị thu hồi |
| 403 | insufficient-permission |
Khoá API không có quyền thực hiện thao tác này |
| 403 | shop-suspended |
Shop đang bị đình chỉ |
| 403 | automation-not-active |
Shop chưa bật tính năng Tự động hoá |
| 429 | rate-limited |
Vượt hạn mức gọi API, hãy chờ rồi thử lại |
| 500 | internal-error |
Lỗi hệ thống |
Định dạng lỗi và bảng mọi mã code: Lỗi.
Tồn kho theo mẫu mã và kho
GET /inventory/stock
Mỗi dòng là tồn của một mẫu mã tại một kho. Không có giá vốn. Đồng bộ tăng dần bằng updatedSince (lật trang trong một lượt bằng nextCursor): có updatedSince thì chỉ trả dòng tồn đổi từ mốc ấy và đã qua khoảng trễ an toàn (bằng trần thời gian tua lại kho của shop cộng 15 giây, mặc định 2 phút 15 giây). Mốc của dòng tồn chỉ đổi khi số tồn hoặc inTransit đổi; giá, mã, mã vạch, tên và ảnh đi kèm lấy từ đồng bộ sản phẩm và danh sách kho.
Quyền cần có: khoá có quyền pos. và quyền pos..
Tham số query
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
limit |
integer | không | Số dòng mỗi trang, từ 1 đến 100. Mặc định 50. |
cursor |
string | không | Con trỏ lấy từ nextCursor của trang trước, để lật trang trong CÙNG một lượt đọc (giữ nguyên các tham số khác). Không tự dựng, không lưu để nối lượt đồng bộ sau. |
updatedSince |
string (date-time) | không | Chỉ lấy bản ghi có updatedAt từ thời điểm này (ISO 8601 UTC), tính cả mốc. Đây là cách đồng bộ tăng dần: có tham số này thì danh sách chỉ trả bản ghi đã qua khoảng trễ an toàn (trần thời gian tua lại kho của shop cộng 15 giây, mặc định 2 phút 15 giây). |
warehouseId |
string (uuid) | không | Chỉ lấy tồn của kho này. |
search |
string | không | Tìm theo tên hoặc mã mẫu mã. |
Ví dụ yêu cầu
curl -X GET "https://danix.vn/api/open/v1/inventory/stock" \
-H "Authorization: Bearer dnx_live_…"
Phản hồi mẫu (200)
{
"data": [
{
"variantId": "018f3b8e-1c2d-7a4b-9c3d-000000000601",
"productId": "018f3b8e-1c2d-7a4b-9c3d-000000000701",
"productName": "Áo thun cổ tròn",
"variantName": "Áo thun - M",
"code": "AO-THUN-M",
"barcode": null,
"warehouseId": "018f3b8e-1c2d-7a4b-9c3d-000000000001",
"warehouseName": "Kho chính",
"quantity": "18",
"inTransit": "0",
"price": "225000"
}
],
"nextCursor": null
}
Trường của phản hồi
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
data |
array<object> | có | Các bản ghi của trang này. |
data[]. |
string (uuid) | có | Mã mẫu mã. |
data[]. |
string (uuid) | có | Mã sản phẩm. |
data[]. |
string | có | Tên sản phẩm. |
data[]. |
string | có | Tên mẫu mã. |
data[]. |
string | có | Mã mẫu mã (SKU). |
data[]. |
string hoặc null | có | Mã vạch. |
data[]. |
string (uuid) | có | Mã kho. |
data[]. |
string | có | Tên kho. |
data[]. |
string | có | Tồn thực trong kho. Chuỗi thập phân, tối đa ba chữ số lẻ. |
data[]. |
string | có | Số lượng đang trên đường về kho. Chuỗi thập phân, tối đa ba chữ số lẻ. |
data[]. |
string | có | Giá bán. Chuỗi thập phân, ví dụ "150000". |
nextCursor |
string hoặc null | có | Con trỏ của trang kế; null khi đã hết dữ liệu. |
Lỗi
| Trạng thái | Mã code |
Ý nghĩa |
|---|---|---|
| 401 | invalid-api-key |
Khoá API thiếu, sai hoặc đã bị thu hồi |
| 403 | insufficient-permission |
Khoá API không có quyền thực hiện thao tác này |
| 403 | shop-suspended |
Shop đang bị đình chỉ |
| 403 | automation-not-active |
Shop chưa bật tính năng Tự động hoá |
| 429 | rate-limited |
Vượt hạn mức gọi API, hãy chờ rồi thử lại |
| 500 | internal-error |
Lỗi hệ thống |
| 400 | validation-failed |
Dữ liệu gửi lên không hợp lệ |
| 400 | invalid-cursor |
Con trỏ phân trang không hợp lệ |
Định dạng lỗi và bảng mọi mã code: Lỗi.
Tạo phiếu kho nháp
POST /inventory/documents
Tạo phiếu nhập, xuất hoặc kiểm kho ở trạng thái draft. Tồn kho chỉ đổi khi ghi sổ bằng POST /inventory/documents/{id}/post.
Quyền cần có: khoá có ít nhất một trong các quyền pos., pos. và đủ các quyền pos., pos..
Thân yêu cầu (JSON)
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
kind |
"receipt" | "issue" | "stocktake" | có | Loại phiếu: nhập, xuất hoặc kiểm kho. |
warehouseId |
string (uuid) | có | Kho của phiếu. |
supplierId |
string (uuid) hoặc null | không | Nhà cung cấp (phiếu nhập). |
documentDate |
string | không | Ngày của phiếu, dạng YYYY-MM-DD. |
note |
string hoặc null | không | Ghi chú. |
lines |
array<object> | không | Các dòng của phiếu, tối đa 500. |
lines[]. |
string (uuid) | có | Mã mẫu mã. |
lines[]. |
string | không | Số lượng nhập hoặc xuất. |
lines[]. |
string | không | Số đếm thực tế (phiếu kiểm kho). |
lines[]. |
string | không | Giá nhập (phiếu nhập). |
lines[]. |
string hoặc null | không | Ghi chú dòng. |
Ví dụ yêu cầu
curl -X POST "https://danix.vn/api/open/v1/inventory/documents" \
-H "Authorization: Bearer dnx_live_…" \
-H "Content-Type: application/json" \
-d '{
"kind": "receipt",
"warehouseId": "018f3b8e-1c2d-7a4b-9c3d-000000000001",
"lines": [
{
"variantId": "018f3b8e-1c2d-7a4b-9c3d-000000000601",
"quantity": "10",
"unitCost": "120000"
}
]
}'
Phản hồi mẫu (201)
{
"id": "018f3b8e-1c2d-7a4b-9c3d-000000001201",
"kind": "receipt",
"code": "PN0001",
"status": "draft",
"warehouseId": "018f3b8e-1c2d-7a4b-9c3d-000000000001",
"supplierId": null,
"occurredAt": "2026-10-02T03:15:00.000Z",
"postedAt": null,
"costingMethod": null,
"note": null,
"lines": []
}
Trường của phản hồi
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
id |
string (uuid) | có | Mã phiếu. |
kind |
string | có | Loại phiếu: receipt, issue, stocktake… |
code |
string | có | Mã phiếu. |
status |
"draft" | "ordered" | "posted" | "in_transit" | "completed" | "cancelled" | có | Trạng thái phiếu: draft là nháp, posted đã ghi sổ. |
warehouseId |
string (uuid) | có | Kho của phiếu. |
supplierId |
string (uuid) hoặc null | có | Nhà cung cấp. |
occurredAt |
string (date-time) | có | Ngày của phiếu. ISO 8601, múi giờ UTC. |
postedAt |
string (date-time) hoặc null | có | Thời điểm ghi sổ. ISO 8601 UTC hoặc null. |
costingMethod |
"average" | "fifo" hoặc null | có | Phương pháp tính giá vốn khi ghi sổ. |
note |
string hoặc null | có | Ghi chú phiếu. |
lines |
array<object> | có | Các dòng của phiếu. |
lines[]. |
string (uuid) | có | Mã dòng phiếu. |
lines[]. |
string (uuid) | có | Mã mẫu mã. |
lines[]. |
string | có | Mã mẫu mã. |
lines[]. |
string hoặc null | có | Số lượng nhập hoặc xuất. Chuỗi thập phân. |
lines[]. |
string hoặc null | có | Số đếm thực tế (phiếu kiểm kho). |
lines[]. |
string hoặc null | không | Giá nhập. Chỉ có khi khoá được xem giá vốn. |
lines[]. |
string hoặc null | có | Ghi chú dòng. |
Lỗi
| Trạng thái | Mã code |
Ý nghĩa |
|---|---|---|
| 401 | invalid-api-key |
Khoá API thiếu, sai hoặc đã bị thu hồi |
| 403 | insufficient-permission |
Khoá API không có quyền thực hiện thao tác này |
| 403 | shop-suspended |
Shop đang bị đình chỉ |
| 403 | automation-not-active |
Shop chưa bật tính năng Tự động hoá |
| 429 | rate-limited |
Vượt hạn mức gọi API, hãy chờ rồi thử lại |
| 500 | internal-error |
Lỗi hệ thống |
| 402 | subscription-expired |
Gói cước của shop đã hết hạn, chỉ còn quyền đọc |
| 400 | validation-failed |
Dữ liệu gửi lên không hợp lệ |
| 413 | payload-too-large |
Thân yêu cầu vượt quá dung lượng cho phép |
| 415 | unsupported-media-type |
Thân yêu cầu phải là JSON (Content-Type: application/json) |
| 422 | variant-removed |
Mẫu mã đã bị gỡ khỏi sản phẩm |
Định dạng lỗi và bảng mọi mã code: Lỗi.
Ghi sổ phiếu kho
POST /inventory/documents/{id}/post
Ghi sổ phiếu nháp: tồn kho đổi ngay. Ghi sổ lần hai trả document-already-posted. Quyền theo LOẠI phiếu: phiếu kiểm kho cần pos., phiếu nhập hay xuất cần pos. — có quyền còn lại thôi thì insufficient-permission.
Quyền cần có: khoá có ít nhất một trong các quyền pos., pos. và đủ các quyền pos., pos..
Tham số đường dẫn
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
id |
string (uuid) | có | Mã định danh (UUID) của tài nguyên. |
Ví dụ yêu cầu
curl -X POST "https://danix.vn/api/open/v1/inventory/documents/{id}/post" \
-H "Authorization: Bearer dnx_live_…"
Thay {id} trong địa chỉ bằng mã thật của bản ghi, và dnx_live_… bằng khoá của bạn.
Phản hồi mẫu (200)
{
"id": "018f3b8e-1c2d-7a4b-9c3d-000000001201",
"kind": "receipt",
"code": "PN0001",
"status": "posted",
"warehouseId": "018f3b8e-1c2d-7a4b-9c3d-000000000001",
"supplierId": null,
"occurredAt": "2026-10-02T03:15:00.000Z",
"postedAt": "2026-10-02T03:16:00.000Z",
"costingMethod": "average",
"note": null,
"lines": []
}
Trường của phản hồi
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
id |
string (uuid) | có | Mã phiếu. |
kind |
string | có | Loại phiếu: receipt, issue, stocktake… |
code |
string | có | Mã phiếu. |
status |
"draft" | "ordered" | "posted" | "in_transit" | "completed" | "cancelled" | có | Trạng thái phiếu: draft là nháp, posted đã ghi sổ. |
warehouseId |
string (uuid) | có | Kho của phiếu. |
supplierId |
string (uuid) hoặc null | có | Nhà cung cấp. |
occurredAt |
string (date-time) | có | Ngày của phiếu. ISO 8601, múi giờ UTC. |
postedAt |
string (date-time) hoặc null | có | Thời điểm ghi sổ. ISO 8601 UTC hoặc null. |
costingMethod |
"average" | "fifo" hoặc null | có | Phương pháp tính giá vốn khi ghi sổ. |
note |
string hoặc null | có | Ghi chú phiếu. |
lines |
array<object> | có | Các dòng của phiếu. |
lines[]. |
string (uuid) | có | Mã dòng phiếu. |
lines[]. |
string (uuid) | có | Mã mẫu mã. |
lines[]. |
string | có | Mã mẫu mã. |
lines[]. |
string hoặc null | có | Số lượng nhập hoặc xuất. Chuỗi thập phân. |
lines[]. |
string hoặc null | có | Số đếm thực tế (phiếu kiểm kho). |
lines[]. |
string hoặc null | không | Giá nhập. Chỉ có khi khoá được xem giá vốn. |
lines[]. |
string hoặc null | có | Ghi chú dòng. |
Lỗi
| Trạng thái | Mã code |
Ý nghĩa |
|---|---|---|
| 401 | invalid-api-key |
Khoá API thiếu, sai hoặc đã bị thu hồi |
| 403 | insufficient-permission |
Khoá API không có quyền thực hiện thao tác này |
| 403 | shop-suspended |
Shop đang bị đình chỉ |
| 403 | automation-not-active |
Shop chưa bật tính năng Tự động hoá |
| 429 | rate-limited |
Vượt hạn mức gọi API, hãy chờ rồi thử lại |
| 500 | internal-error |
Lỗi hệ thống |
| 402 | subscription-expired |
Gói cước của shop đã hết hạn, chỉ còn quyền đọc |
| 400 | validation-failed |
Dữ liệu gửi lên không hợp lệ |
| 413 | payload-too-large |
Thân yêu cầu vượt quá dung lượng cho phép |
| 415 | unsupported-media-type |
Thân yêu cầu phải là JSON (Content-Type: application/json) |
| 404 | not-found |
Không tìm thấy tài nguyên |
| 409 | conflict |
Thao tác xung đột với trạng thái hiện tại |
| 409 | document-already-posted |
Phiếu kho đã ghi sổ |
| 422 | insufficient-stock |
Không đủ tồn kho cho thao tác này |
| 422 | variant-removed |
Mẫu mã đã bị gỡ khỏi sản phẩm |
Định dạng lỗi và bảng mọi mã code: Lỗi.