Xác thực (API I)
HRM/API Reference/Xác thực (API I)
POST
Đổi phiên RS-DOC lấy accessToken
POST/api/v1/integrations/rsdoc/auth/token
API I. Nhận rsdocSessionToken (sau khi NLĐ đăng nhập RS-DOC), HRM introspect với RS-DOC để lấy CCCD rồi cấp accessToken + refreshToken. Chỉ cấp khi introspect trả active=true. Không cần Bearer.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Content-Type | string | Yes | Kiểu dữ liệu gửi lên | application/json |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| grantType | body | string | Yes | Cố định rsdoc_session | rsdoc_session |
| rsdocSessionToken | body | string | Yes | Token phiên RS-DOC (JWT) | eyJhbGciOiJIUzI1NiIs... |
Request body
{
"grantType": "rsdoc_session",
"rsdocSessionToken": "eyJhbGciOiJIUzI1NiIs..."
}
Response body
{
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "hrm-refresh-6f1c...",
"expireInSeconds": 3600,
"tokenType": "Bearer"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Cấp token thành công |
| 400 | VALIDATION — sai grantType hoặc thiếu rsdocSessionToken |
| 401 | UNAUTHORIZED — phiên RS-DOC không hợp lệ/hết hạn |
| 429 | Quá giới hạn truy cập |
HRM/API Reference/Xác thực (API I)
POST
Gia hạn accessToken
POST/api/v1/integrations/rsdoc/auth/refresh
Dùng refreshToken để lấy accessToken mới khi token cũ hết hạn. Không cần Bearer.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Content-Type | string | Yes | Kiểu dữ liệu gửi lên | application/json |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| refreshToken | body | string | Yes | refreshToken nhận từ API I | hrm-refresh-6f1c... |
Request body
{
"refreshToken": "hrm-refresh-6f1c..."
}
Response body
{
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"expireInSeconds": 3600,
"tokenType": "Bearer"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Gia hạn thành công |
| 401 | UNAUTHORIZED — refreshToken không hợp lệ/hết hạn |
HRM/API Reference/Xác thực (API I)
GET
Kiểm tra tình trạng dịch vụ
GET/api/v1/integrations/rsdoc/health
Health check của facade HRM cho RS-DOC. Không cần token.
Response body
{
"ok": true,
"service": "rsdoc-hrm-api",
"version": "1.1.0"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Dịch vụ hoạt động bình thường |
Doanh nghiệp (API II)
HRM/API Reference/Doanh nghiệp (API II)
GET
Danh sách doanh nghiệp đang có HĐ hiệu lực
GET/api/v1/integrations/rsdoc/enterprises
API II. Trả về các doanh nghiệp mà NLĐ (theo claim cccd trong token) đang có hợp đồng lao động hiệu lực. donviMa dùng cho mọi API phía sau.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Response body
{
"hopdongDS": [
{
"donviMa": "BNNTEST",
"donviTen": "Công ty TNHH BNN Test",
"donviMst": "0109876543",
"nhanvienMa": "NV0012",
"nhanvienHoTen": "Nguyễn Văn An",
"hopdongMa": "HDLD-2025-0012",
"hopdongTrangthaiMa": 2,
"hopdongTrangthaiTen": "Hiệu lực",
"hopdongLoaiMa": "XAC_DINH_THOI_HAN",
"hopdongLoaiTen": "Xác định thời hạn",
"ngayBatDau": "2025-01-02",
"ngayKetThuc": "2027-01-01"
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED — CCCD chưa liên kết hồ sơ nhân viên HRM |
Chấm công (API III–IV)
HRM/API Reference/Chấm công (API III–IV)
GET
Bảng công tháng
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/attendance/month
API III. Lưới chấm công theo ngày trong kỳ: giờ vào/ra, phút muộn/sớm, trạng thái (1 Đúng giờ, 2 Đi muộn, 3 Về sớm, 4 Chấm thiếu, 5 Chấm thiếu 1 phần, 6 Nghỉ phép), cờ xinPhepMuon/xinPhepSom và ca làm việc.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| kyThang | query | string | No | Kỳ công dạng YYYY-MM; bỏ trống = tháng hiện tại | 2026-08 |
Response body
{
"donviMa": "BNNTEST",
"nhanvienMa": "NV0012",
"kyThang": "2026-08",
"khoaKy": false,
"ca": {
"caMa": "HC",
"caTen": "Hành chính",
"gioVao": "08:00",
"gioRa": "17:30"
},
"days": [
{
"ngay": "2026-08-03",
"laNgayLamViec": true,
"gioVao": "07:56",
"gioRa": "17:35",
"gioCongThucTe": 8,
"phutDiMuon": 0,
"phutVeSom": 0,
"trangThaiMa": 1,
"trangThaiTen": "Đúng giờ",
"xinPhepMuon": false,
"xinPhepSom": false,
"nguon": "DEVICE",
"leave": null
},
{
"ngay": "2026-08-11",
"laNgayLamViec": true,
"gioVao": "08:12",
"gioRa": "17:30",
"gioCongThucTe": 8,
"phutDiMuon": 12,
"phutVeSom": 0,
"trangThaiMa": 2,
"trangThaiTen": "Đi muộn",
"xinPhepMuon": true,
"xinPhepSom": false,
"nguon": "DEVICE",
"leave": null
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Chấm công (API III–IV)
GET
Tổng kết công tháng
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/attendance/summary
API IV. Tổng hợp kỳ công: phép năm, ngày nghỉ có/không lương, ngày đi làm thực tế/quy định, tỷ lệ công, tổng phút muộn/sớm, giờ OT.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| kyThang | query | string | No | Kỳ công dạng YYYY-MM; bỏ trống = tháng hiện tại | 2026-08 |
Response body
{
"donviMa": "BNNTEST",
"nhanvienMa": "NV0012",
"kyThang": "2026-08",
"khoaKy": false,
"phepNam": {
"nam": 2026,
"tongQuy": 12,
"daDung": 3,
"choDuyet": 1,
"conLai": 9
},
"soNgayNghiKhongLuong": 0,
"soNgayNghiCoLuong": 1,
"soNgayDiLamThuc": 19,
"soNgayQuyDinh": 21,
"tyLeCong": 0.9,
"tongPhutDiMuon": 12,
"tongPhutVeSom": 45,
"soGioOt": 0
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
Thông báo đi muộn / về sớm (API V–VII)
HRM/API Reference/Thông báo đi muộn / về sớm (API V–VII)
GET
Hạn mức & danh sách thông báo muộn/sớm
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/attendance/late-early/notices
API V. Trả hạn mức thông báo đi muộn (muon) / về sớm (som) trong tháng và danh sách thông báo đã gửi.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| kyThang | query | string | No | Kỳ công dạng YYYY-MM; bỏ trống = tháng hiện tại | 2026-08 |
Response body
{
"kyThang": "2026-08",
"muon": {
"hanMuc": 3,
"daDung": 1,
"conLai": 2
},
"som": {
"hanMuc": 3,
"daDung": 0,
"conLai": 3
},
"items": [
{
"tbId": "5b0e2f7a-1c3d-4e8f-9a01-2b3c4d5e6f70",
"tbMa": "CC-MS-2026-0001",
"loai": "MUON",
"ngayCong": "2026-08-10",
"gioDuKien": "09:00",
"lyDo": "Kẹt xe",
"trangThai": "VALID",
"createdAt": "2026-08-10T00:35:12.000Z"
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Thông báo đi muộn / về sớm (API V–VII)
POST
Gửi thông báo đi muộn / về sớm
POST/api/v1/integrations/rsdoc/enterprises/{donviMa}/attendance/late-early/notices
API VI. Không cần duyệt. MUON phải gửi trước giờ vào ca, SOM trước giờ ra ca. Không đổi trangThaiMa chấm công, chỉ đánh dấu xinPhepMuon/xinPhepSom.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
| Content-Type | string | Yes | Kiểu dữ liệu gửi lên | application/json |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| loai | body | string | Yes | MUON | SOM | MUON |
| ngayCong | body | string | Yes | Ngày công YYYY-MM-DD | 2026-08-10 |
| gioDuKien | body | string | Yes | Giờ dự kiến đến/về HH:mm | 09:00 |
| lyDo | body | string | Yes | Lý do (≤ 500 ký tự) | Kẹt xe |
Request body
{
"loai": "MUON",
"ngayCong": "2026-08-10",
"gioDuKien": "09:00",
"lyDo": "Kẹt xe"
}
Response body
{
"tbId": "5b0e2f7a-1c3d-4e8f-9a01-2b3c4d5e6f70",
"tbMa": "CC-MS-2026-0001",
"donviMa": "BNNTEST",
"nhanvienMa": "NV0012",
"loai": "MUON",
"ngayCong": "2026-08-10",
"gioDuKien": "09:00",
"lyDo": "Kẹt xe",
"trangThai": "VALID",
"createdAt": "2026-08-10T00:35:12.000Z"
}
Phản hồi
Trả về 201 Created với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 201 | Tạo thông báo thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 422 | NOTICE_DEADLINE / NOTICE_QUOTA / NOTICE_DUPLICATE / NO_SHIFT / PERIOD_LOCKED |
HRM/API Reference/Thông báo đi muộn / về sớm (API V–VII)
POST
Hủy thông báo đi muộn / về sớm
POST/api/v1/integrations/rsdoc/enterprises/{donviMa}/attendance/late-early/notices/{tbId}/cancel
API VII. Chỉ hủy được thông báo trạng thái VALID và trước hạn (giờ vào ca với MUON, giờ ra ca với SOM).
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| tbId | path | Guid | Yes | Id thông báo (từ API V/VI) | 5b0e2f7a-1c3d-4e8f-9a01-2b3c4d5e6f70 |
Response body
{
"tbId": "5b0e2f7a-1c3d-4e8f-9a01-2b3c4d5e6f70",
"tbMa": "CC-MS-2026-0001",
"trangThai": "CANCELLED",
"cancelledAt": "2026-08-10T00:50:03.000Z"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 404 | NOT_FOUND — không tìm thấy thông báo |
| 422 | NOTICE_DEADLINE — đã qua hạn hủy |
Nghỉ phép (API VIII–XIII)
HRM/API Reference/Nghỉ phép (API VIII–XIII)
GET
Danh mục loại nghỉ
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/leave/types
API VIII. Các loại nghỉ đang hiệu lực tại đơn vị: có lương, trừ quỹ phép, ngưỡng số ngày cần chứng từ (soNgayCanChungMinh), chế độ gợi ý.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
Response body
{
"items": [
{
"loaiMa": "NP",
"loaiTen": "Nghỉ phép năm",
"coLuong": true,
"truQuyPhep": true,
"soNgayCanChungMinh": 0,
"cheDoGoiY": [
"FULL_DAY",
"HALF_DAY"
]
},
{
"loaiMa": "OM",
"loaiTen": "Nghỉ ốm",
"coLuong": true,
"truQuyPhep": false,
"soNgayCanChungMinh": 2,
"cheDoGoiY": [
"FULL_DAY",
"HALF_DAY"
]
},
{
"loaiMa": "KL",
"loaiTen": "Nghỉ không lương",
"coLuong": false,
"truQuyPhep": false,
"soNgayCanChungMinh": 0,
"cheDoGoiY": [
"FULL_DAY",
"HALF_DAY"
]
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Nghỉ phép (API VIII–XIII)
GET
Số dư phép năm
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/leave/balance
API IX. Quỹ phép năm: tổng quỹ, đã dùng, đang chờ duyệt, còn lại.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| nam | query | int | No | Năm; bỏ trống = năm hiện tại | 2026 |
Response body
{
"nam": 2026,
"tongQuy": 12,
"daDung": 3,
"choDuyet": 1,
"conLai": 9
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Nghỉ phép (API VIII–XIII)
GET
Danh sách đơn nghỉ của tôi
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/leave/requests
API X. Đơn nghỉ của NLĐ tại đơn vị, mới nhất trước. Lọc theo trạng thái và kỳ tháng.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| status | query | string | No | PENDING | APPROVED | REJECTED | CANCELLED | PENDING |
| kyThang | query | string | No | Lọc đơn có ngày nghỉ trong kỳ YYYY-MM | 2026-08 |
Response body
{
"items": [
{
"donId": "9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d",
"donMa": "R2026-021",
"donviMa": "BNNTEST",
"nhanvienMa": "NV0012",
"cheDo": "FULL_DAY",
"loaiMa": "NP",
"loaiTen": "Nghỉ phép năm",
"tuNgay": "2026-08-20",
"denNgay": "2026-08-20",
"buoi": null,
"soNgayNp": 1,
"lyDo": "Việc gia đình",
"canChungMinh": false,
"fileDinhKem": null,
"trangThai": "PENDING",
"chiTiet": [
{
"ngayNghi": "2026-08-20",
"soNgay": 1,
"loaiMa": "NP",
"coLuong": 1
}
],
"createdAt": "2026-08-15T02:10:00.000Z"
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Nghỉ phép (API VIII–XIII)
POST
Nộp đơn xin nghỉ
POST/api/v1/integrations/rsdoc/enterprises/{donviMa}/leave/requests
API XI. cheDo FULL_DAY (tuNgay–denNgay) hoặc HALF_DAY (buoi AM|PM). Khi soNgayNp > soNgayCanChungMinh phải gửi multipart/form-data kèm field file (PDF/JPG/PNG ≤ 5MB). Hệ thống tự tính soNgayNp theo ca làm việc.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
| Content-Type | string | Yes | application/json, hoặc multipart/form-data khi đính kèm chứng từ | application/json |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| cheDo | body | string | Yes | FULL_DAY | HALF_DAY | FULL_DAY |
| loaiMa | body | string | Yes | Mã loại nghỉ (API VIII) | NP |
| tuNgay | body | string | Yes | Từ ngày YYYY-MM-DD | 2026-08-20 |
| denNgay | body | string | No | Đến ngày YYYY-MM-DD (HALF_DAY bỏ qua) | 2026-08-20 |
| buoi | body | string | No | AM | PM — bắt buộc khi HALF_DAY | AM |
| lyDo | body | string | No | Lý do (≤ 1000 ký tự) | Việc gia đình |
| file | body | object | No | Chứng từ PDF/JPG/PNG ≤ 5MB (multipart) | giay-kham-benh.pdf |
Request body
{
"cheDo": "FULL_DAY",
"loaiMa": "NP",
"tuNgay": "2026-08-20",
"denNgay": "2026-08-20",
"lyDo": "Việc gia đình"
}
Response body
{
"donId": "9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d",
"donMa": "R2026-021",
"donviMa": "BNNTEST",
"nhanvienMa": "NV0012",
"cheDo": "FULL_DAY",
"loaiMa": "NP",
"loaiTen": "Nghỉ phép năm",
"tuNgay": "2026-08-20",
"denNgay": "2026-08-20",
"buoi": null,
"soNgayNp": 1,
"lyDo": "Việc gia đình",
"canChungMinh": false,
"fileDinhKem": null,
"trangThai": "PENDING",
"chiTiet": [
{
"ngayNghi": "2026-08-20",
"soNgay": 1,
"loaiMa": "NP",
"coLuong": 1
}
],
"createdAt": "2026-08-15T02:10:00.000Z"
}
Phản hồi
Trả về 201 Created với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 201 | Nộp đơn thành công (PENDING) |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 422 | NO_SHIFT / PROOF_REQUIRED / LEAVE_QUOTA / LEAVE_OVERLAP |
HRM/API Reference/Nghỉ phép (API VIII–XIII)
GET
Chi tiết đơn nghỉ
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/leave/requests/{donId}
API XII. Chi tiết một đơn nghỉ, gồm chiTiet theo ngày và thông tin file đính kèm (chỉ tên, dung lượng — không có API tải file).
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| donId | path | Guid | Yes | Id đơn nghỉ (từ API X/XI) | 9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d |
Response body
{
"donId": "9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d",
"donMa": "R2026-021",
"donviMa": "BNNTEST",
"nhanvienMa": "NV0012",
"cheDo": "FULL_DAY",
"loaiMa": "NP",
"loaiTen": "Nghỉ phép năm",
"tuNgay": "2026-08-20",
"denNgay": "2026-08-20",
"buoi": null,
"soNgayNp": 1,
"lyDo": "Việc gia đình",
"canChungMinh": false,
"fileDinhKem": null,
"trangThai": "PENDING",
"chiTiet": [
{
"ngayNghi": "2026-08-20",
"soNgay": 1,
"loaiMa": "NP",
"coLuong": 1
}
],
"createdAt": "2026-08-15T02:10:00.000Z"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 404 | NOT_FOUND — không tìm thấy bản ghi |
HRM/API Reference/Nghỉ phép (API VIII–XIII)
POST
Hủy đơn nghỉ
POST/api/v1/integrations/rsdoc/enterprises/{donviMa}/leave/requests/{donId}/cancel
API XIII. Chỉ hủy được đơn DRAFT/PENDING; hoàn lại số ngày chờ duyệt vào quỹ phép.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| donId | path | Guid | Yes | Id đơn nghỉ (từ API X/XI) | 9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d |
Response body
{
"donId": "9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d",
"donMa": "R2026-021",
"donviMa": "BNNTEST",
"nhanvienMa": "NV0012",
"cheDo": "FULL_DAY",
"loaiMa": "NP",
"loaiTen": "Nghỉ phép năm",
"tuNgay": "2026-08-20",
"denNgay": "2026-08-20",
"buoi": null,
"soNgayNp": 1,
"lyDo": "Việc gia đình",
"canChungMinh": false,
"fileDinhKem": null,
"trangThai": "CANCELLED",
"chiTiet": [
{
"ngayNghi": "2026-08-20",
"soNgay": 1,
"loaiMa": "NP",
"coLuong": 1
}
],
"createdAt": "2026-08-15T02:10:00.000Z",
"cancelledAt": "2026-08-16T01:00:00.000Z"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 404 | NOT_FOUND — không tìm thấy bản ghi |
| 422 | VALIDATION — chỉ hủy được đơn DRAFT/PENDING |
Hồ sơ, ca & điều chỉnh công (API XIV–XVII)
HRM/API Reference/Hồ sơ, ca & điều chỉnh công (API XIV–XVII)
GET
Hồ sơ nhân viên
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/profile
API XIV. Thông tin hồ sơ NLĐ tại đơn vị kèm thông tin bảo hiểm (baoHiem).
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
Response body
{
"nhanvienMa": "NV0012",
"hoTen": "Nguyễn Văn An",
"ngaySinh": "1995-03-12",
"gioiTinh": "Nam",
"email": "an.nguyen@bnntest.vn",
"soDienThoai": "0912345678",
"phongBan": "Phòng Kế toán",
"chucVu": "Chuyên viên",
"ngayVaoLam": "2025-01-02",
"baoHiem": {
"soSoBhxh": "0123456789",
"mucDong": 8500000,
"noiKcb": "Bệnh viện Bạch Mai",
"tuNgay": "2025-01-01"
}
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Hồ sơ, ca & điều chỉnh công (API XIV–XVII)
GET
Ca làm việc đang áp dụng
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/shift
API XV. Ca làm việc hiện hành của NLĐ: giờ vào/ra, nghỉ trưa, ngày làm việc trong tuần.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
Response body
{
"caMa": "HC",
"caTen": "Hành chính",
"gioVao": "08:00",
"gioRa": "17:30",
"nghiTruaTu": "12:00",
"nghiTruaDen": "13:30",
"ngayLamViec": [
1,
2,
3,
4,
5
],
"apDungTu": "2025-01-02"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Hồ sơ, ca & điều chỉnh công (API XIV–XVII)
GET
Danh sách đề xuất điều chỉnh công
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/attendance/adjustments
API XVI. Các đề xuất điều chỉnh giờ chấm công của NLĐ.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| trangThai | query | string | No | ALL | PENDING | APPROVED | REJECTED | ALL |
Response body
{
"items": [
{
"dxId": "c2a7e1d4-3b5f-4c6a-9d8e-1f2a3b4c5d6e",
"ngayCong": "2026-08-05",
"gioVaoMoi": "08:05",
"gioRaMoi": "17:30",
"lyDo": "Quên chấm công",
"trangThai": "PENDING",
"createdAt": "2026-08-06T01:20:00.000Z"
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Hồ sơ, ca & điều chỉnh công (API XIV–XVII)
POST
Tạo đề xuất điều chỉnh công
POST/api/v1/integrations/rsdoc/enterprises/{donviMa}/attendance/adjustments
API XVII. Tạo đề xuất điều chỉnh giờ vào/ra cho một ngày công, trạng thái PENDING chờ quản lý duyệt trên HRM.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
| Content-Type | string | Yes | Kiểu dữ liệu gửi lên | application/json |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| ngayCong | body | string | Yes | Ngày công YYYY-MM-DD | 2026-08-05 |
| gioVaoMoi | body | string | No | Giờ vào đề xuất HH:mm | 08:05 |
| gioRaMoi | body | string | No | Giờ ra đề xuất HH:mm | 17:30 |
| lyDo | body | string | Yes | Lý do điều chỉnh | Quên chấm công |
Request body
{
"ngayCong": "2026-08-05",
"gioVaoMoi": "08:05",
"gioRaMoi": "17:30",
"lyDo": "Quên chấm công"
}
Response body
{
"dxId": "c2a7e1d4-3b5f-4c6a-9d8e-1f2a3b4c5d6e",
"ngayCong": "2026-08-05",
"gioVaoMoi": "08:05",
"gioRaMoi": "17:30",
"lyDo": "Quên chấm công",
"trangThai": "PENDING",
"createdAt": "2026-08-06T01:20:00.000Z"
}
Phản hồi
Trả về 201 Created với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 201 | Tạo đề xuất thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 422 | PERIOD_LOCKED — kỳ công đã khóa |
Hợp đồng lao động (API XVIII–XXI)
HRM/API Reference/Hợp đồng lao động (API XVIII–XXI)
GET
Danh sách hợp đồng lao động
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/contracts
API XVIII. Hợp đồng/phụ lục của NLĐ tại đơn vị, kèm trạng thái ký số (kySoTrangThai, vd CHO_NV_XAC_NHAN, DA_KY, TU_CHOI).
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
Response body
{
"items": [
{
"hopdongId": 1024,
"hopdongMa": "HDLD-2026-0031",
"loaiTen": "Phụ lục điều chỉnh lương",
"ngayBatDau": "2026-09-01",
"ngayKetThuc": null,
"kySoTrangThai": "CHO_NV_XAC_NHAN",
"ngayGui": "2026-08-25T03:00:00.000Z"
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Hợp đồng lao động (API XVIII–XXI)
GET
Chi tiết hợp đồng
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/contracts/{hopdongId}
API XIX. Chi tiết hợp đồng kèm nội dung file (fileBase64, PDF) để hiển thị cho NLĐ trước khi xác nhận.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| hopdongId | path | int | Yes | Id hợp đồng (từ API XVIII) | 1024 |
Response body
{
"hopdongId": 1024,
"hopdongMa": "HDLD-2026-0031",
"loaiTen": "Phụ lục điều chỉnh lương",
"ngayBatDau": "2026-09-01",
"kySoTrangThai": "CHO_NV_XAC_NHAN",
"tenFile": "HDLD-2026-0031.pdf",
"fileBase64": "JVBERi0xLjcKJc..."
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 404 | NOT_FOUND — không tìm thấy bản ghi |
HRM/API Reference/Hợp đồng lao động (API XVIII–XXI)
POST
Xác nhận ký hợp đồng
POST/api/v1/integrations/rsdoc/enterprises/{donviMa}/contracts/{hopdongId}/confirm
API XX. NLĐ xác nhận đồng ý ký. Chỉ áp dụng khi kySoTrangThai = CHO_NV_XAC_NHAN.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
| Content-Type | string | Yes | Kiểu dữ liệu gửi lên | application/json |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| hopdongId | path | int | Yes | Id hợp đồng (từ API XVIII) | 1024 |
Request body
Response body
{
"hopdongId": 1024,
"kySoTrangThai": "NV_DA_XAC_NHAN",
"thoiGian": "2026-08-26T02:15:00.000Z"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 404 | NOT_FOUND — không tìm thấy bản ghi |
| 422 | Hợp đồng không ở trạng thái CHO_NV_XAC_NHAN |
HRM/API Reference/Hợp đồng lao động (API XVIII–XXI)
POST
Từ chối ký hợp đồng
POST/api/v1/integrations/rsdoc/enterprises/{donviMa}/contracts/{hopdongId}/reject
API XXI. NLĐ từ chối ký kèm lý do. Chỉ áp dụng khi kySoTrangThai = CHO_NV_XAC_NHAN.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
| Content-Type | string | Yes | Kiểu dữ liệu gửi lên | application/json |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| hopdongId | path | int | Yes | Id hợp đồng (từ API XVIII) | 1024 |
| lyDo | body | string | Yes | Lý do từ chối | Sai mức lương |
Request body
{
"lyDo": "Sai mức lương"
}
Response body
{
"hopdongId": 1024,
"kySoTrangThai": "TU_CHOI",
"lyDo": "Sai mức lương",
"thoiGian": "2026-08-26T02:20:00.000Z"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 404 | NOT_FOUND — không tìm thấy bản ghi |
| 422 | Hợp đồng không ở trạng thái CHO_NV_XAC_NHAN |
Phiếu lương (API XXII–XXIII)
HRM/API Reference/Phiếu lương (API XXII–XXIII)
GET
Danh sách phiếu lương
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/payslips
API XXII. Các phiếu lương đã gửi cho NLĐ (trạng thái SENT/VIEWED).
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
Response body
{
"items": [
{
"kyThang": "2026-08",
"tenKy": "Lương tháng 08/2026",
"thucLinh": 15250000,
"trangThai": "SENT",
"ngayGui": "2026-09-05T03:00:00.000Z"
},
{
"kyThang": "2026-07",
"tenKy": "Lương tháng 07/2026",
"thucLinh": 14980000,
"trangThai": "VIEWED",
"ngayGui": "2026-08-05T03:00:00.000Z"
}
]
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
HRM/API Reference/Phiếu lương (API XXII–XXIII)
GET
Chi tiết phiếu lương theo kỳ
GET/api/v1/integrations/rsdoc/enterprises/{donviMa}/payslips/{kyThang}
API XXIII. Chi tiết các khoản thu nhập, khấu trừ và thực lĩnh của một kỳ lương. Mở phiếu SENT sẽ chuyển sang VIEWED.
Request Headers
| Tên | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| Authorization | string | Yes | Bearer accessToken lấy từ API I (auth/token) | Bearer eyJhbGciOiJIUzI1NiIs... |
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả | Ví dụ |
| donviMa | path | string | Yes | Mã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa) | BNNTEST |
| kyThang | path | string | Yes | Kỳ lương YYYY-MM | 2026-08 |
Response body
{
"kyThang": "2026-08",
"tenKy": "Lương tháng 08/2026",
"ngayCong": 21,
"ngayCongThucTe": 20,
"thuNhap": [
{
"ma": "LCB",
"ten": "Lương cơ bản",
"soTien": 12000000
},
{
"ma": "PC_AN",
"ten": "Phụ cấp ăn trưa",
"soTien": 730000
},
{
"ma": "THUONG",
"ten": "Thưởng KPI",
"soTien": 3500000
}
],
"khauTru": [
{
"ma": "BHXH",
"ten": "BHXH, BHYT, BHTN (10,5%)",
"soTien": 892500
},
{
"ma": "TNCN",
"ten": "Thuế TNCN",
"soTien": 87500
}
],
"tongThuNhap": 16230000,
"tongKhauTru": 980000,
"thucLinh": 15250000,
"trangThai": "VIEWED"
}
Phản hồi
Trả về 200 OK với cấu trúc JSON như ví dụ bên phải. Lỗi trả về theo chuẩn:
| Mã | Ý nghĩa |
| 200 | Thành công |
| 400 | VALIDATION — tham số không hợp lệ |
| 401 | UNAUTHORIZED — thiếu/sai Bearer token |
| 403 | NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị |
| 404 | NOT_FOUND — không tìm thấy bản ghi |