YUI Open PlatformKết nối một lần — tích hợp mọi sản phẩm YUI

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ênKiểuBắt buộcMô tảVí dụ
Content-TypestringYesKiểu dữ liệu gửi lênapplication/json

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
grantTypebodystringYesCố định rsdoc_sessionrsdoc_session
rsdocSessionTokenbodystringYesToken phiên RS-DOC (JWT)eyJhbGciOiJIUzI1NiIs...

Request body

request.json
{
  "grantType": "rsdoc_session",
  "rsdocSessionToken": "eyJhbGciOiJIUzI1NiIs..."
}

Response body

response.json
{
  "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
200Cấp token thành công
400VALIDATION — sai grantType hoặc thiếu rsdocSessionToken
401UNAUTHORIZED — phiên RS-DOC không hợp lệ/hết hạn
429Quá 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ênKiểuBắt buộcMô tảVí dụ
Content-TypestringYesKiểu dữ liệu gửi lênapplication/json

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
refreshTokenbodystringYesrefreshToken nhận từ API Ihrm-refresh-6f1c...

Request body

request.json
{
  "refreshToken": "hrm-refresh-6f1c..."
}

Response body

response.json
{
  "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
200Gia hạn thành công
401UNAUTHORIZED — 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

response.json
{
  "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
200Dị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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Response body

response.json
{
  "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
200Thành công
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
kyThangquerystringNoKỳ công dạng YYYY-MM; bỏ trống = tháng hiện tại2026-08

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
kyThangquerystringNoKỳ công dạng YYYY-MM; bỏ trống = tháng hiện tại2026-08

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
kyThangquerystringNoKỳ công dạng YYYY-MM; bỏ trống = tháng hiện tại2026-08

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...
Content-TypestringYesKiểu dữ liệu gửi lênapplication/json

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
loaibodystringYesMUON | SOMMUON
ngayCongbodystringYesNgày công YYYY-MM-DD2026-08-10
gioDuKienbodystringYesGiờ dự kiến đến/về HH:mm09:00
lyDobodystringYesLý do (≤ 500 ký tự)Kẹt xe

Request body

request.json
{
  "loai": "MUON",
  "ngayCong": "2026-08-10",
  "gioDuKien": "09:00",
  "lyDo": "Kẹt xe"
}

Response body

response.json
{
  "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
201Tạo thông báo thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
422NOTICE_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
tbIdpathGuidYesId thông báo (từ API V/VI)5b0e2f7a-1c3d-4e8f-9a01-2b3c4d5e6f70

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
404NOT_FOUND — không tìm thấy thông báo
422NOTICE_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
namqueryintNoNăm; bỏ trống = năm hiện tại2026

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
statusquerystringNoPENDING | APPROVED | REJECTED | CANCELLEDPENDING
kyThangquerystringNoLọc đơn có ngày nghỉ trong kỳ YYYY-MM2026-08

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...
Content-TypestringYesapplication/json, hoặc multipart/form-data khi đính kèm chứng từapplication/json

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
cheDobodystringYesFULL_DAY | HALF_DAYFULL_DAY
loaiMabodystringYesMã loại nghỉ (API VIII)NP
tuNgaybodystringYesTừ ngày YYYY-MM-DD2026-08-20
denNgaybodystringNoĐến ngày YYYY-MM-DD (HALF_DAY bỏ qua)2026-08-20
buoibodystringNoAM | PM — bắt buộc khi HALF_DAYAM
lyDobodystringNoLý do (≤ 1000 ký tự)Việc gia đình
filebodyobjectNoChứng từ PDF/JPG/PNG ≤ 5MB (multipart)giay-kham-benh.pdf

Request body

request.json
{
  "cheDo": "FULL_DAY",
  "loaiMa": "NP",
  "tuNgay": "2026-08-20",
  "denNgay": "2026-08-20",
  "lyDo": "Việc gia đình"
}

Response body

response.json
{
  "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
201Nộp đơn thành công (PENDING)
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
422NO_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
donIdpathGuidYesId đơn nghỉ (từ API X/XI)9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
404NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
donIdpathGuidYesId đơn nghỉ (từ API X/XI)9d4c1a2b-7e3f-4a5b-8c6d-0e1f2a3b4c5d

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
404NOT_FOUND — không tìm thấy bản ghi
422VALIDATION — 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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
trangThaiquerystringNoALL | PENDING | APPROVED | REJECTEDALL

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...
Content-TypestringYesKiểu dữ liệu gửi lênapplication/json

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
ngayCongbodystringYesNgày công YYYY-MM-DD2026-08-05
gioVaoMoibodystringNoGiờ vào đề xuất HH:mm08:05
gioRaMoibodystringNoGiờ ra đề xuất HH:mm17:30
lyDobodystringYesLý do điều chỉnhQuên chấm công

Request body

request.json
{
  "ngayCong": "2026-08-05",
  "gioVaoMoi": "08:05",
  "gioRaMoi": "17:30",
  "lyDo": "Quên chấm công"
}

Response body

response.json
{
  "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
201Tạo đề xuất thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
422PERIOD_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
hopdongIdpathintYesId hợp đồng (từ API XVIII)1024

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
404NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...
Content-TypestringYesKiểu dữ liệu gửi lênapplication/json

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
hopdongIdpathintYesId hợp đồng (từ API XVIII)1024

Request body

request.json
{}

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
404NOT_FOUND — không tìm thấy bản ghi
422Hợ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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...
Content-TypestringYesKiểu dữ liệu gửi lênapplication/json

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
hopdongIdpathintYesId hợp đồng (từ API XVIII)1024
lyDobodystringYesLý do từ chốiSai mức lương

Request body

request.json
{
  "lyDo": "Sai mức lương"
}

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
404NOT_FOUND — không tìm thấy bản ghi
422Hợ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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_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ênKiểuBắt buộcMô tảVí dụ
AuthorizationstringYesBearer accessToken lấy từ API I (auth/token)Bearer eyJhbGciOiJIUzI1NiIs...

Tham số

TênVị tríKiểuBắt buộcMô tảVí dụ
donviMapathstringYesMã doanh nghiệp (lấy từ API II — hopdongDS[].donviMa)BNNTEST
kyThangpathstringYesKỳ lương YYYY-MM2026-08

Response body

response.json
{
  "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
200Thành công
400VALIDATION — tham số không hợp lệ
401UNAUTHORIZED — thiếu/sai Bearer token
403NOT_LINKED / FORBIDDEN_DONVI — CCCD chưa liên kết hoặc không có HĐ hiệu lực tại đơn vị
404NOT_FOUND — không tìm thấy bản ghi