Skip to main content

Danh sách hợp đồng

GET /api/contracts
Query params:
ParamKiểuMô tả
pagenumberSố trang (mặc định: 1)
limitnumberSố bản ghi / trang (mặc định: 20)
statusstringdraft | signing | completed | rejected | expired
searchstringTìm theo tên hợp đồng
fromDatestringISO 8601, lọc từ ngày
toDatestringISO 8601, lọc đến ngày
Response:
{
  "statusCode": 200,
  "data": [
    {
      "id": "ctr_abc123",
      "title": "Hợp đồng dịch vụ CNTT 2025",
      "status": "signing",
      "createdAt": "2025-01-15T08:00:00Z",
      "expiredAt": "2025-02-15T23:59:59Z",
      "signers": [
        {
          "email": "nguyen@example.com",
          "name": "Nguyễn Văn A",
          "order": 1,
          "status": "signed",
          "signedAt": "2025-01-16T10:30:00Z"
        }
      ]
    }
  ],
  "meta": { "page": 1, "limit": 20, "total": 45 }
}

Tạo hợp đồng mới

POST /api/contracts
Content-Type: multipart/form-data
Body (multipart/form-data):
TrườngKiểuBắt buộcMô tả
fileFileFile .pdf hoặc .docx
titlestringTên hợp đồng
contractTypeIdnumberID loại hợp đồng
expiredAtstringDeadline ký (ISO 8601)
signersJSON stringDanh sách bên ký (xem bên dưới)
descriptionstringGhi chú
Cấu trúc signers:
[
  {
    "name": "Nguyễn Văn A",
    "email": "a@example.com",
    "phone": "0901234567",
    "role": "party_a",
    "order": 1
  },
  {
    "name": "Trần Thị B",
    "email": "b@example.com",
    "phone": "0907654321",
    "role": "party_b",
    "order": 2
  }
]
Response:
{
  "statusCode": 201,
  "message": "Tạo hợp đồng thành công",
  "data": {
    "id": "ctr_abc123",
    "title": "Hợp đồng dịch vụ CNTT 2025",
    "status": "draft",
    "fileUrl": "https://storage.econtractid.vn/contracts/ctr_abc123.pdf"
  }
}

Chi tiết hợp đồng

GET /api/contracts/:id
Trả về đầy đủ thông tin hợp đồng bao gồm danh sách bên ký, lịch sử thao tác (audit trail).

Gửi hợp đồng đi ký

POST /api/contracts/:id/send
Chuyển hợp đồng từ trạng thái draft sang signing và gửi email thông báo tới bên ký thứ 1. Response:
{
  "statusCode": 200,
  "message": "Đã gửi hợp đồng đi ký thành công",
  "data": {
    "id": "ctr_abc123",
    "status": "signing",
    "sentAt": "2025-01-15T09:00:00Z"
  }
}

Hủy hợp đồng

DELETE /api/contracts/:id
Content-Type: application/json

{
  "reason": "Lý do hủy hợp đồng"
}
Chỉ hủy được hợp đồng ở trạng thái draft hoặc signing. Hợp đồng đã completed không thể hủy.

Tải xuống hợp đồng

GET /api/contracts/:id/download?type=signed
Param typeMô tả
originalFile gốc chưa ký
signedPDF đã nhúng chữ ký số (chỉ khi đã có ít nhất 1 chữ ký)
auditBiên bản kiểm tra (audit trail PDF)
Trả về file PDF dạng binary stream.