Cổng dữ liệu HV Holdings
Danh mục API cho app nội bộ. Trang này chỉ có mô tả — không có số liệu. Bản cho máy / AI đọc: https://api.hvholdings.vn/v1/apis
Cách gọi
GET /v1/data/<id>?<params> with header "Authorization: Bearer <access_token>" (token from the shared login id.hvholdings.vn). Every registered app may call every API; each user only sees data their own HV Admin account is allowed to see.
Khi gặp lỗi
| Mã | Nghĩa — app nên làm gì |
|---|---|
401 | code=refresh → refresh the token (POST /v1/token { app, refresh_token }) then retry once · code=relogin → send the user to the login page |
403 | API disabled / app paused / account has no permission at the source |
429 | too many calls — wait retry_after seconds |
502 | source is down — retry later |
Lỗi luôn có dạng { "error": "…", "code": "…" }. Mọi app đã đăng ký đều gọi được mọi API. Columns not listed for an API may appear when the source adds new fields — ignore unknown columns.
Tài khoản profilephiên bản 1nguồn HV Admin
Thông tin tài khoản HV Admin của chính người đang đăng nhập: mã, tên đăng nhập, họ tên, email, số điện thoại, ảnh, tình trạng. Luôn trả 1 dòng — không xem được tài khoản người khác.
GET https://api.hvholdings.vn/v1/data/profile Authorization: Bearer <access_token>
Tham số
Không có.
Cột trả về (trong rows)
| Cột | Kiểu | Nghĩa |
|---|---|---|
id | string | Mã tài khoản trong HV Admin (UUID) |
userName | string | Tên đăng nhập |
firstName | string | Tên |
lastName | string | Họ (và tên đệm) |
email | string | |
isActive | boolean | Tài khoản còn hoạt động |
emailConfirmed | boolean | Email đã xác nhận |
phoneNumber | string | Số điện thoại |
imageUrl | string | Địa chỉ ảnh đại diện |
twoFactorEnabled | boolean | Đã bật xác thực 2 lớp |
Mẫu trả về
{
"api": "profile",
"version": 1,
"page": 1,
"has_more": false,
"count": 1,
"rows": [
{
"id": "string",
"userName": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"isActive": "boolean",
"emailConfirmed": "boolean",
"phoneNumber": "string",
"imageUrl": "string",
"twoFactorEnabled": "boolean"
}
]
}
Thị trường marketsphiên bản 1nguồn HV Admin
Các thị trường (nước bán) mà tài khoản đang đăng nhập được kinh doanh. HV Admin tự lọc theo tài khoản — mỗi người thấy danh sách của mình. Dùng làm ô chọn thị trường và làm mã thị trường khi gọi các API khác.
GET https://api.hvholdings.vn/v1/data/markets Authorization: Bearer <access_token>
Tham số
| Tên | Bắt buộc | Nghĩa |
|---|---|---|
page | không | Trang muốn lấy, bắt đầu từ 1 (mặc định 1) |
page_size | không | Số dòng mỗi trang (mặc định 50), tối đa 200 |
Cột trả về (trong rows)
| Cột | Kiểu | Nghĩa |
|---|---|---|
value | string | Mã thị trường trong HV Admin (UUID) — dùng mã này khi lọc theo thị trường |
label | string | Tên thị trường, VD "Việt Nam", "Mỹ" |
hint | string | Mã viết tắt, VD "VN", "USA", "AU" |
parentValue | string | Mã thị trường cha (trống nếu không có) |
Mẫu trả về
{
"api": "markets",
"version": 1,
"page": 1,
"has_more": false,
"count": 1,
"rows": [
{
"value": "string",
"label": "string",
"hint": "string",
"parentValue": "string"
}
]
}
Doanh số marketing marketing-performancephiên bản 1nguồn HV Admin
Doanh số, chi phí marketing, giá vốn, lợi nhuận và tình trạng đơn theo từng nhân sự marketing × thị trường trong 1 khoảng ngày. HV Admin tự lọc theo tài khoản — mỗi người thấy phần mình được xem. Số tiền theo đơn vị ở tham số currency.
GET https://api.hvholdings.vn/v1/data/marketing-performance Authorization: Bearer <access_token>
Tham số
| Tên | Bắt buộc | Nghĩa |
|---|---|---|
from | có | Từ ngày, dạng YYYY-MM-DD |
to | có | Đến ngày, dạng YYYY-MM-DD (tối đa 92 ngày mỗi lượt) |
date_type | không | Lọc theo loại ngày: Created = ngày tạo đơn (mặc định, hiện chỉ có loại này) |
currency | không | Đơn vị tiền: Vnd (mặc định, hiện chỉ có loại này) |
page | không | Trang muốn lấy, bắt đầu từ 1 (mặc định 1) |
page_size | không | Số dòng mỗi trang (mặc định 50), tối đa 200 |
Cột trả về (trong rows)
| Cột | Kiểu | Nghĩa |
|---|---|---|
marketerEmployeeId | string | Mã nhân sự marketing |
marketerName | string | Tên nhân sự marketing |
marketId | string | Mã thị trường (khớp cột value của API markets) |
marketName | string | Tên thị trường |
orgUnitCode | string | Mã đơn vị / phòng ban trong sơ đồ tổ chức |
structurePath | string | Đường dẫn trong sơ đồ tổ chức (đơn vị cha → con) |
orderCount | number | Số đơn (chưa xác nhận: tổng đơn tạo trong kỳ) |
confirmedOrders | number | Số đơn đã chốt |
actualRevenue | number | Doanh thu thực nhận (chưa xác nhận định nghĩa; thị trường Mỹ từng trả 0) |
gmvAfterDiscount | number | GMV sau giảm giá |
revenue | number | Doanh thu |
totalMarketingCost | number | Tổng chi phí marketing |
partnerFee | number | Phí đối tác (vận chuyển / sàn) |
partnerFeeRatioOnGmvAfterDiscount | number | Phí đối tác / GMV sau giảm giá (tỉ lệ) |
partnerFeeRatioOnRevenue | number | Phí đối tác / doanh thu (tỉ lệ) |
productCogs | number | Giá vốn sản phẩm bán |
productCogsRatioOnGmvAfterDiscount | number | Giá vốn sản phẩm / GMV sau giảm giá (tỉ lệ) |
productCogsRatioOnRevenue | number | Giá vốn sản phẩm / doanh thu (tỉ lệ) |
productCogsRatioOnCogs | number | Giá vốn sản phẩm / tổng giá vốn (tỉ lệ) |
giftCogs | number | Giá vốn quà tặng |
giftCogsRatioOnGmvAfterDiscount | number | Giá vốn quà tặng / GMV sau giảm giá (tỉ lệ) |
giftCogsRatioOnRevenue | number | Giá vốn quà tặng / doanh thu (tỉ lệ) |
giftCogsRatioOnCogs | number | Giá vốn quà tặng / tổng giá vốn (tỉ lệ) |
cogs | number | Tổng giá vốn (sản phẩm + quà tặng) |
cogsRatioOnGmvAfterDiscount | number | Tổng giá vốn / GMV sau giảm giá (tỉ lệ) |
cogsRatioOnRevenue | number | Tổng giá vốn / doanh thu (tỉ lệ) |
expectedProfit | number | Lợi nhuận dự kiến |
expectedProfitRatioOnGmvAfterDiscount | number | Lợi nhuận dự kiến / GMV sau giảm giá (tỉ lệ) |
expectedProfitRatioOnRevenue | number | Lợi nhuận dự kiến / doanh thu (tỉ lệ) |
netProfit | number | Lợi nhuận ròng |
netProfitRatioOnGmvAfterDiscount | number | Lợi nhuận ròng / GMV sau giảm giá (tỉ lệ) |
netProfitRatioOnRevenue | number | Lợi nhuận ròng / doanh thu (tỉ lệ) |
performance | number | Hiệu suất (chưa xác nhận công thức) |
marketingCostRatioOnGmvAfterDiscount | number | Chi phí marketing / GMV sau giảm giá (tỉ lệ) |
marketingCostRatioOnRevenue | number | Chi phí marketing / doanh thu (tỉ lệ) |
roasOnGmvAfterDiscount | number | ROAS tính trên GMV sau giảm giá |
roasOnRevenue | number | ROAS tính trên doanh thu |
roasOffPlatform | number | ROAS ngoài nền tảng (chưa xác nhận định nghĩa) |
confirmedAov | number | Giá trị trung bình 1 đơn đã chốt |
confirmedAovOnRevenue | number | Giá trị trung bình 1 đơn đã chốt, tính trên doanh thu |
totalOrders | number | Tổng số đơn (mọi trạng thái) |
processing | number | Số đơn đang xử lý |
confirmed | number | Số đơn đã xác nhận |
cancelled | number | Số đơn đã huỷ |
waitingShipment | number | Số đơn chờ gửi hàng |
shipping | number | Số đơn đang giao |
delivered | number | Số đơn đã giao |
returned | number | Số đơn hoàn |
cancelledAfterFinalized | number | Số đơn huỷ sau khi đã chốt |
productCount | number | Số sản phẩm |
Mẫu trả về
{
"api": "marketing-performance",
"version": 1,
"page": 1,
"has_more": false,
"count": 1,
"rows": [
{
"marketerEmployeeId": "string",
"marketerName": "string",
"marketId": "string",
"marketName": "string",
"orgUnitCode": "string",
"structurePath": "string",
"orderCount": "number",
"confirmedOrders": "number",
"actualRevenue": "number",
"gmvAfterDiscount": "number",
"revenue": "number",
"totalMarketingCost": "number",
"partnerFee": "number",
"partnerFeeRatioOnGmvAfterDiscount": "number",
"partnerFeeRatioOnRevenue": "number",
"productCogs": "number",
"productCogsRatioOnGmvAfterDiscount": "number",
"productCogsRatioOnRevenue": "number",
"productCogsRatioOnCogs": "number",
"giftCogs": "number",
"giftCogsRatioOnGmvAfterDiscount": "number",
"giftCogsRatioOnRevenue": "number",
"giftCogsRatioOnCogs": "number",
"cogs": "number",
"cogsRatioOnGmvAfterDiscount": "number",
"cogsRatioOnRevenue": "number",
"expectedProfit": "number",
"expectedProfitRatioOnGmvAfterDiscount": "number",
"expectedProfitRatioOnRevenue": "number",
"netProfit": "number",
"netProfitRatioOnGmvAfterDiscount": "number",
"netProfitRatioOnRevenue": "number",
"performance": "number",
"marketingCostRatioOnGmvAfterDiscount": "number",
"marketingCostRatioOnRevenue": "number",
"roasOnGmvAfterDiscount": "number",
"roasOnRevenue": "number",
"roasOffPlatform": "number",
"confirmedAov": "number",
"confirmedAovOnRevenue": "number",
"totalOrders": "number",
"processing": "number",
"confirmed": "number",
"cancelled": "number",
"waitingShipment": "number",
"shipping": "number",
"delivered": "number",
"returned": "number",
"cancelledAfterFinalized": "number",
"productCount": "number"
}
]
}