Skip to main content
Mọi event dùng chung envelope { id, type, createdAt, data } — xem Tổng quan. Trang này mô tả phần data. Nguyên tắc chung:
  • Mã, không phải ID nội bộ. documentId là mã hồ sơ bạn cấp, transactionId là mã tiến trình, documentUuid là UUID công khai.
  • Tương thích tiến. Hệ thống có thể thêm trường mới vào data. Bộ parse của bạn phải bỏ qua trường chưa biết thay vì báo lỗi.
  • metadata luôn là bản echo của metadata bạn gửi khi tạo hồ sơ ({} nếu không gửi).

relatedParties

Có trong data của mọi event notification.* và document.*. Cho biết ai tạo hồ sơ và những ai đã xử lý tính đến thời điểm gửi event — đủ để bạn tự gửi thông báo cho người liên quan.
object | null
Người tạo hồ sơ. Luôn là tài khoản của tổ chức (type: "internal"); với hồ sơ tạo qua API là tài khoản tích hợp.
array
Mỗi phần tử là một lần xử lý (duyệt/ký hoặc từ chối), sắp theo actedAt tăng dần. Một người xử lý nhiều bước sẽ xuất hiện nhiều lần. Mảng rỗng khi chưa ai xử lý (ví dụ event giao việc của bước đầu tiên).
relatedParties không bao giờ chứa credentials. Bước quá hạn không tạo actor, vì không ai thực sự xử lý.
Gợi ý lấy danh sách người cần báo, bỏ trùng và chọn kênh gửi:

Event notification.*

Năm event dùng chung một cấu trúc; notification.task_completed có thêm actor và nextStep.

Trường chung

Khác nhau giữa các event

  • step: bước vừa giao (task_assigned_*), bước vừa xong (task_completed), bước bị từ chối (task_rejected); null ở process_finished.
  • signUrl: link mở công việc ký ở task_assigned_*; link mở hồ sơ ở ba event còn lại.
recipients[] của task_rejected và process_finished không gồm người tạo hồ sơ. Lấy người tạo ở relatedParties.creator.

recipients[]

Ba biến thể của credentials: null (không có tài khoản) · { userName, password: null } · { userName, password }. Bước mời người ký bằng số điện thoại có email: null và phone có giá trị. Luôn kiểm tra trường nào khác null rồi mới chọn kênh gửi.
credentials.password là mật khẩu thật. Không ghi payload của task_assigned_external vào log.

Ví dụ

Một bước được giao cho người ký bên ngoài.

Event document.*

document.completed

Ví dụ rút gọn relatedParties.actors — thực tế chứa mọi lần xử lý, cấu trúc như mục trên. files[] được thiết kế tương thích tiến: bạn có thể bỏ qua các type chưa nhận diện, cho phép hệ thống thêm loại file mới mà không phá vỡ tích hợp cũ. ecmNodeUuid chính là fileUuid dùng cho endpoint tải file.
signers[] và totalSigners chỉ tính người ký bên ngoài — bước của nhân sự nội bộ và bước theo vai trò bị loại khỏi payload. Vì vậy totalSigners có thể nhỏ hơn requiredCount của endpoint tra cứu; đừng đối soát trực tiếp hai con số này. Cần cả người xử lý nội bộ thì dùng relatedParties.actors.
files[].url là presigned URL — lấy thẳng từ JSON parser rồi GET, đừng đọc từ log thô hay re-marshal (Go mặc định escape &; nếu buộc phải, dùng encoder.SetEscapeHTML(false)). Dấu hiệu sai: URL có %5Cu0026, kho lưu trữ trả AccessDenied dù chưa hết hạn.

document.rejected

Khác document.completed ở chỗ: không có bản ký hoàn chỉnh trong files[] (chỉ file đầu vào và đính kèm), không có signedCount, và có thêm:

Event webhook.test

Payload và cách kiểm thử: xem Tổng quan — webhook.test.