I. Giới thiệu
Tài liệu hướng dẫn tích hợp ứng dụng với dịch vụ chữ ký số từ xa MISA eSign remoteSigning.
1.1. Các khái niệm
| Thông tin | Diễn giải |
| MISA-CA | Nhà cung cấp dịch vụ chữ ký số công cộng |
| Ứng dụng tích hợp (ERP) | Là ứng dụng muốn tích hợp giải pháp ký số điện tử của MISA-CA. |
| Ứng dụng xác thực ký | MISA eSign App (AppStore / CH Play) – là ứng dụng mobile app của MISA-CA dành cho người dùng cuối xác thực các yêu cầu ký do Ứng dụng tích hợp gửi |
| MISA eSign RemoteSigning (hoặc MISA eSign) | là server xử lý các nghiệp vụ liên quan đến ký số điện tử của MISA-CA |
| Access token | Mã kết nối sau khi thực hiện luồng đăng nhập MISA eSign |
| CTS | Chứng thư số |
| CKS | Chữ ký số |
1.2. Thông tin cần trước khi kết nối
| Thông tin | Giá trị | Diễn giải |
| Đối tác/KH phải sử dụng dịch vụ MISA eSign | Liên hệ KD MISA. | |
| Đăng ký sử dụng dịch vụ API | Nhận về key clientId và clientKey và tài liệu mô tả về API | |
| Đăng ký nhận kết quả (webhook) | Nếu cần | |
| x-clientid | ClientId | Id được MISA cung cấp |
| x-clientkey | ClientKey | Key được MISA cung cấp |
| APIUrl | https://esignapp.misa.vn/ | Đường dẫn API của eSign |
| userName | userName | Tài khoản MISAID |
| password | password | Mật khẩu tài khoản |
1.3. Thông tin chi tiết để kết nối
| Thông tin | Diễn giải |
| APIUrl | Product: https://esignapp.misa.vn/ |
| Token url (lấy access token) | api/auth/api/v1/auth/login-api |
| Xác thực 2 lớp | api/auth/api/v1/auth/two-factor-auth |
| Gửi lại OTP | api/auth/api/v1/auth/resend-otp-auth |
| Làm mới token | api/auth/api/v1/auth/refreshtoken |
| Lấy danh sách CTS | external/esrm/service/general/api/v1/Certificates/by-userId |
| Lấy chi tiết CTS theo key | external/esrm/service/general/api/v1/Certificates/by-certId |
| Hash file tài liệu trước khi ký | external/esrm/service/document/api/v1/documents/hash |
| Ký file tài liệu đã hash | external/esrm/service/signing/api/v1/Signing/hash |
| Lấy trạng thái ký của tài liệu | external/esrm/service/signing/api/v1/Signing/status |
| Găn cks vào file | external/esrm/service/document/api/v1/documents/attachment |
1.4. Mô tả cấu trúc của API Esign
| Thông tin | Diễn giải |
| Url | Theo từng API cụ thể |
| Method | Get/Post (Theo từng API cụ thể) |
| Params | Theo từng API cụ thể |
| Header | x-clientId: {clientId}
x-clientKey: {clientKey} AuthorizationRM: {access token} |
| Body | Content-Type: application/json (Đối tượng theo từng API cụ thể) |
| Response | Content-Type: application/json (Đối tượng theo từng API cụ thể) |
1.5. Hướng dẫn xử lý kết quả của API (Response)
| Response thành công | Được mô tả ở mỗi API |
| Response lỗi | Trả về cùng 1 định dạng là ResponseError
{ “error“: “thông tin lỗi“, “errorCode“: “mã lỗi“, “devMsg“: “mô tả thông tin lỗi cho người phát triển“, “userMsg“: “mô tả thông tin lỗi cho người dùng“ } |
1.6. Các bước thực hiện
| Đăng ký sử dụng dịch vụ | |
| Đăng ký sử dụng API | Đăng ký sử dụng API, liên hệ NVKD của MISA
Nhận về clientId và clientKey (dùng cho cả sandbox và product). Nếu đối tác chưa có CTS thì có thể đăng ký CTS test và nhận về
Khi thực hiện golive, lấy các thông tin từ đơn vị Tích hợp ký số chỉ sử dụng được với các CTS từ xa của MISA eSign (không hỗ trợ CTS dạng USB token) |
| Thực hiện tải ứng dụng xác thực MISA eSign | Tải ứng dụng từ app store/CH Play |
| Đăng nhập thông tin ký | Thực hiện đăng nhập thông tin ký trên ứng dụng mới tải về
(nếu ở site test, giữ logo eSign khoảng 5s để đổi môi trường) |
| Thao thác với API | |
| Bước 1: Thực hiện gọi API lấy access token | – Xem mô tả
Lưu ý: – Token có hạn được trả về qua thông tin data.expiresIn (dữ liệu trả về kiểu long) |
| Bước 2: Thực hiện xác thực nếu cần | – Xem mô tả |
| Bước 3: Lấy thông tin CTS | – Xem mô tả |
| Bước 4: Tạo hash file | – Xem mô tả |
| Bước 5: Ký hash file (gửi trình ký) | – Xem mô tả |
| Bước 6: Lấy trạng thái ký của tài liệu | – Xem mô tả |
| Bước 7: Gắn cks | – Xem mô tả |
| Postman tham khảo | – Tải về |
II. Workflow
2.1. Luồng đăng nhập
Mô tả luồng:
- Bước 1: Khi người dùng nhập tên đăng nhập và mật khẩu, ứng dụng tích hợp gọi đến API đăng nhập của eSign lấy token.
- Bước 2. Kiểm tra response trả về.
- Nếu có mã lỗi 122 chuyển bước 3 (xác thực 2 lớp – 2FA).
- Ngược lại chuyển bước 5.
- Bước 3. Gọi API xác thực hai lớp lấy token.
- Bước 4. Nếu quá hạn dùng mã OTP hoặc người dùng nhập sai mã OTP. Người dùng chọn “Gửi lại mã” thì ứng dụng tích hợp gọi API Gửi lại mã OTP.
- Bước 5. Sử dụng mã remoteSigningAccessToken trong response của API đăng nhập hoặc API xác thực hai lớp để làm điều kiện xác thực cho các API sau.
- Bước 6: Ngay sau khi KH thực hiện đăng nhập xong. Ứng dụng tích hợp thực hiện gọi API lấy danh sách chứng thư số theo tài khoản của người dùng vừa đăng nhập (Xử lý theo flow kết nối chứng thư số)
2.1. Luồng refresh token
Thực hiện:
Khi gọi API mà response trả về mã HTTP StatusCode là 401 (hết hạn JWT Token). Thì ứng dụng tích hợp gọi đến API refresh token để lấy lại mã remoteSigningAccessToken.
Nếu có lỗi xảy ra trong API này, ứng dụng tích hợp gọi lại API đăng nhập.
2.3. Luồng ký
Các bước thực hiện:
- Bước 1: Lấy content của file ký (dạng base64)/xml .
- Bước 2. Hash dữ liệu.
- Bước 3. Ký số từ xa dữ liệu đã hash thông qua MISA eSign.
- Bước 4. Ứng dụng tích hợp gọi API lấy trạng thái ký theo transactionId
- Bước 5. Gắn chữ ký số.
- Bước 6: Thông báo kết quả
2.4. Luồng kết nối chứng thư số
Các bước thực hiện:
- Bước 1: Ứng dụng tích hợp gọi API lấy danh sách CTS theo người dùng.
- Bước 2. MISA eSign trả về danh sách CTS .
- Bước 3. Ứng dụng tích hợp thực hiện kiểm tra danh sách CTS với trạng thái đang hoạt động (keyStatus = ACTIVE)
- Nếu không có: Vui lòng thông báo là người dùng chưa có chứng thư số, cần liên hệ quản trị để được cấp CTS mới hoặc mua mới CKS trên https://esign.misa.vn/
- Nếu có 1 CTS: thực hiện lưu trữ thông tin CTS đó để phục vụ cho việc gọi ký.
- Nếu có từ 2 CTS: Hiển thị giao diện danh sách CTS để người dùng lựa chọn kết nối.
III. Mô tả về API
3.1. Đăng nhập
3.1.1. Lấy access token
| Thông tin | Diễn giải |
| URL | {APIUrl}/api/auth/api/v1/auth/login-api |
| Method | Post |
| Body request | {
“userName“: “userName“, “password“: “password“ } |
| Response | {
“status“: { “type“: “type“, “code“: 200, “message“: “message“, “error“: response_error, “errorCode“: error_status_code, “devMsg“: “dev_msg“, “userMsg“: “user_msg“ }, “data“: { “accessToken“: “access_token“, “remoteSigningAccessToken“: “eSign_access_token“, “tokenType“: “Bearer“, “expiresIn“: 3600, “refreshToken“: “refresh_token“, “user“: { “id“: “user_id“, “email“: “user_email“, “phoneNumber“: “user_phone_number“, “firstName“: “user_first_name“, “lastName“: “user_last_name“, “username“: “user_username“ }, “default“: { “email“: false, “phoneNumber“: false, “appAuthenticator“: true }, “verifyUser“: { “emailsVerify“: false, “phoneNumberIsVerify“: true, “isChangePassword“: true }, } } |
| Mô tả đối tượng | Tham số đầu ra (eSign-login) |
| Lưu ý | Những thông tin này sẽ dùng trong suốt quá trình call API
Token_eSign = {tokenType} {eSign_access_token} (có khoảng trắng giữa 2 key). Ví dụ: Bearer eyJhbGciOiJSUzI1NiItpZCI6… Token_eSign_refresh = refresh_token RefreshToken = refresh_token UserID = user_id |
3.1.2. Làm mới mã AccessToken
| Thông tin | Diễn giải |
| URL | {APIUrl}/webdev/api/auth/api/v1/auth/refreshtoken |
| Method | Post |
| Body request | {
“refreshToken“: “RefreshToken“, } RefreshToken được lấy ở bước 4.3. Đăng nhập tài khoản |
| Response | {
“remoteSigningAccessToken“: “eSign_access_token“, “accessToken“: “access_token“, “refreshToken“: “refresh_token“, “expiresIn“: 3600 } |
| Mô tả đầu ra | Tham số đầu ra (eSign-login) |
| Lưu ý | Lưu lại các thông tin tương tự mục 4.3. Đăng nhập tài khoản |
3.2. Xác thực tài khoản
3.2.1. Xác thực hai lớp
| Thông tin | Diễn giải |
| URL | {APIUrl}/api/auth/api/v1/auth/two-factor-auth |
| Method | Post |
| Header | clientId: ClientId
clientKey: ClientKey |
| Body request | {
“userName“: “userName“, “code“: “otp_code“, //mã otp “otpType“: 1, //1: nhận từ SDT/Email; 2: nhận từ ứng dụng “remember“: true/false, //ghi nhớ thiết bị } |
| Response | {
“status“: { “type“: “response_type“, “code“: 200, “message“: “message“, “error“: response_error, “errorCode“: error_status_code, “devMsg“: “dev_msg“, “userMsg“: “user_msg“ }, “data“: { “accessToken“: “access_token“, “remoteSigningAccessToken“: “eSign_access_token“, “tokenType“: “Bearer“, “expiresIn“: 3600, “refreshToken“: “refresh_token“, “user“: { “id“: “user_id“, “email“: “user_email“, “phoneNumber“: “user_phone_number“, “firstName“: “user_first_name“, “lastName“: “user_last_name“, “username“: “user_username“ }, “default“: { “email“: false, “phoneNumber“: false, “appAuthenticator“: true } } } |
| Mô tả đầu ra | Tham số đầu ra (eSign-login) |
| Lưu ý | Lưu lại các thông tin tương tự mục 4.3. Đăng nhập tài khoản |
3.2.2. Gửi lại mã OTP
| Thông tin | Diễn giải |
| URL | {APIUrl}/webdev/api/auth/api/v1/auth/resend-otp-auth |
| Method | Post |
| Body request | {
“userName“: “userName“, “language“: “language” //ngôn ngữ gửi thông báo: en-US } |
| Response | {
“status“: { “type“: “response_type“, “code“: 200, “message“: “message“, “error“: response_error, “errorCode“: error_status_code }, “data“: { “user“: { “username“: “user_username“ } } } |
| Mô tả đầu ra | Tham số đầu ra (eSign-login) |
3.3. Lấy thông tin CTS
3.3.1. Lấy danh sách chứng thư số
| Thông tin | Diễn giải |
| URL | {APIUrl}/external/esrm/service/general/api/v1/Certificates/by-userId |
| Method | Get |
| Header | x-clientId: ClientId
x-clientKey: ClientKey AuthorizationRM: Token_eSign |
| Response | [{
“userId“: “user_id“, “keyAlias“: “cert_id“, “appName“: “app_name“, “keyStatus“: “key_status“, “certificate“: “cert_data“, “certiticateChain“: [ “chain_data_1“, “chain_data_2“, “chain_data_3“, }] chain_data_1: là chứng thư ký chain_data_2: là intermediate cert của MISA CA, chain_data_3: là cert root do NEAC cấp. |
| Mô tả đầu ra | Tham số đầu ra (Cert) |
| Lưu ý | Lưu lại đối tượng Cert để sử dụng cho việc ký |
3.3.2. Lấy thông tin chi tiết của một CTS
| Thông tin | Diễn giải |
| URL | {APIUrl}/external/esrm/service/general/api/v1/Certificates/by-certId |
| Method | Get |
| Header | x-clientId: ClientId
x-clientKey: ClientKey AuthorizationRM: Token_eSign |
| Params | certAlias: keyAlias
keyAlias lấy ở bước 4.7. Lấy danh sách chứng thư của người dùng |
| Response | {
“userId“: “user_id“, “keyAlias“: “cert_id“, “appName“: “app_name“, “keyStatus“: “key_status“, “certificate“: “cert_data“, “certiticateChain“: [ “chain_data_1“, “chain_data_2“, “chain_data_3“, } chain_data_1: là chứng thư ký chain_data_2: là intermediate cert của MISA CA, chain_data_3: là cert root do NEAC cấp. |
| Mô tả đầu ra | Tham số đầu ra (Cert) |
| Lưu ý | Lưu lại đối tượng Cert để sử dụng cho việc ký |
3.4. Tạo hash của file
(Dùng khi ngôn ngữ của đối tác không hỗ trợ băm file như PHP, NodeJS,…)
HashAlgorithm = SHA256
| Thông tin | Diễn giải |
| URL | {APIUrl}/external/esrm/service/document/api/v1/documents/hash |
| Method | POST |
| Header | x-clientId: ClientId
x-clientKey: ClientKey |
| Body | {
“certificate“: “{certificate}“, “certificateChain“: “{certiticateChain}“, “pdfDocs“: [PDF hash file], “xmlDocs“: [XML hash file], “wordDocs“: [Docs hash file], “excelDocs“: [Excel hash file] } |
| Response | {
“pdfDocs“: [pdfDocs], “xmlDocs“: [xmlDocs], “wordDocs“: [wordDocs], “excelDocs“: [excelDocs] } |
| Mô tả tham số | Xem tại Sheet: Tham số đầu vào của từng đối tượng
Xem tại Sheet: Tham số đầu ra của từng đối tượng |
| Lưu ý |
|
3.5. Ký hash
| Thông tin | Diễn giải |
| URL | {APIUrl}/external/esrm/service/signing/api/v1/Signing/hash |
| Method | Post |
| Header | x-clientId: ClientId
x-clientKey: ClientKey AuthorizationRM: Token_eSign |
| Body | {
“DataToBeDisplayed“: “Lời nhắn ký số“, “UserId“: “UserID“, //thông tin lấy ở api access_token “CertAlias“: “cert_id“, “Documents“: [ “DocumentId“: “document_id“, “FileToSign“: “digest”, //thông tin lấy ở bước Hash file “DocumentName“: “document_name“, } |
| Response | {
“transactionId“: “transaction_id” //id của lượt ký } |
| Lưu ý |
Lưu lại Response để thực hiện việc lấy trạng thái ký |
3.6. Lấy trạng thái ký tài liệu
| Thông tin | Diễn giải |
| URL | {APIUrl}/external/esrm/service/signing/api/v1/Signing/status/transaction_id
transaction_id: id lượt ký ở bước Ký hash |
| Method | Get |
| Header | x-clientId: ClientId
x-clientKey: ClientKey AuthorizationRM: Token_eSign |
| Response | {
“status“: “status_sign“, “errorCode“: “error_code“, “errorDescription“: “error_description“, “signatures“: [ { “signature“: “signature_data“ } ] } |
| Mô tả đầu ra | Tham số đầu ra (Sign_status) |
| Lưu ý |
|
3.7. Gắn chữ ký vào file
| Thông tin | Diễn giải |
| URL | {APIUrl}/external/esrm/service/document/api/v1/documents/attachment |
| Method | POST |
| Header | x-clientId: ClientId
x-clientKey: ClientKey AuthorizationRM: Token_eSign |
| Body | {
“certificate“: “{certificate}”, “certificateChain“: “{certiticateChain}”, “pdfDocs“: [Attachment], “xmlDocs“: [Attachment], “wordDocs“: [Attachment], “excelDocs“: [Attachment] } |
| Response | {
“pdfDocs“: [Attachmented], “xmlDocs“: [Attachmented], “wordDocs“: [Attachmented], “excelDocs“: [Attachmented] } |
| Mô tả tham số | Xem tại Sheet: Tham số đầu vào (Attachment)
Xem tại Sheet: Tham số đầu ra (Attachmented) |
| Lưu ý |
|
3.8. Webhook nhận trạng thái ký số
Đối tác xây dựng cổng nhận webhook theo cấu trúc
| Thông tin | Diễn giải |
| URL | URL mà KH đăng ký nhận thông tin từ MISA |
| Method | Post |
| Body | {
“messageId“: “message_id”, “clientId“: “client_id”, “extraData“: {}, “status“: “status”, “errorCode“: “error_code”, “transactionId“: “transaction_id”, “signatures“: [ { “documentId“: “document_id”, “signature“: “signature”, } ] } |
| Response | {
“errorCode“: “status_sign”, “devMsg“: “error_code”, “userMsg“: “error_description” } |
| Lưu ý |
|
IV. Mô tả đối tượng của eSign
4.1. Thông tin has file
4.1.1. Thông tin Pdf, Docs, Excel hash file
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| DocumentId | String | x | ID của tài liệu ký |
| FileToSign | String | x | Content của file đã được base64 |
| SignatureInfo | SignatureInfo | x | Thông tin chữ số trên file |
4.1.2. Thông tin XML hash file
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| DocumentId | String | x | ID của tài liệu ký |
| FileToSign | String | x | Content của file XML |
| SignatureInfo | SignatureInfo | x | Thông tin chữ số trên file |
4.2. Thông tin SignatureInfo
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| TextColor | Integer | Mã màu của văn bản | |
| PositionX | Integer | Tọa độ X | |
| PositionY | Integer | Tọa độ Y | |
| Width | Integer | Độ rộng | |
| Height | Integer | Độ cao | |
| FontSize | Integer | Kích thước văn bản | |
| SignatureImage | String | Ảnh chữ ký của tài khoản, dạng base64 (sẽ được resize fit theo khung ký, người dùng tự tạo ảnh này) | |
| Page | Integer | Trang hiển thị chữ ký | |
| SignatureName | String | x | Tên người ký |
| HashAlgorithm | String | x | Thuật toán băm file: SHA256 |
| LogoImage | String | x | Ảnh logo, dang base64 |
| SignatureDescription | SignatureDescription | x | Diễn giải ký số |
| RenderingMode | Integer | x | Chế độ hiển thị (logo và ảnh ký) khi hash
0: Chỉ hiện thị diễn giải 1: Hiển thị cả diễn giải và ảnh 2: Chỉ hiển thị ảnh |
| SignaturePosInfos | List<SignaturePosInfos> | Danh sách chữ ký hiển thị ở trang khác |
4.3. Thông tin SignatureDescription
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| SignedBy | String | x | Ký bởi |
| ShowSignedDate | Boolean | Hiển thị ngày ký | |
| Location | String | x | Vị trí, nơi ký, VD: Hà Nội |
| Reason | String | x | Lý do/diễn giải việc ký |
| Contact | String | x | Liên hệ ký |
4.4. Thông tin Sign hash
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| DataToBeDisplayed | String | x | Dữ liệu hiển thị trên app mobile khi xác thực ký (có thể truyền lên dạng HTML) |
| UserId | String | x | Id người dùng, lấy ở Cert.userId |
| CertAlias | String | x | Id chứng thư số, lấy ở Cert.keyAlias |
| Documents | Document | x | Danh sách tài liệu muốn hash |
4.5. Thông tin Document
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| DocumentId | String | x | Id tài liệu – lấy từ bước hash file |
| FileToSign | String | x | Content của file đã được hash, là digest ở API Hash file |
| DocumentName | String | x | Tên văn bản |
4.6. Thông tin Attachment
Thực hiện ký loại tài liệu nào thì loại đó bắt buộc
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| PdfDocs | List<Doc_Attackment> | Thông tin ký số của loại văn bản PDF | |
| XmlDocs | List<Doc_Attackment> | Thông tin ký số của loại văn bản XML | |
| ExcelDocs | List<Doc_Attackment> | Thông tin ký số của loại văn bản Excel | |
| WordDocs | List<Doc_Attackment> | Thông tin ký số của loại văn bản Word |
4.7. Thông tin Doc_Attackment
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| signature | String | x | Lấy từ API Status (signatures.signature) |
| documentId | String | x | Lấy từ API hash file (documentId) |
| documentBytes | String | x | Lấy từ API hash file (documentBytes) |
| digest | String | x | Lấy từ API hash file (digest) |
| mainDom | String | x | Lấy từ API hash file (documentId) (bắt buộc với Excel và Word) |
| signatureName | String | x | Lấy từ API hash file (SignatureName) |
| sh | String | x | Lấy từ API hash file (sh) |
| signatureId | String | x | Lấy từ API hash file (signatureId) (trừ pdf) |
| documentHash | String | x | Lấy từ API hash file (documentHash) |
4.8. Thông tin SignaturePosInfos
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
| positionX | Integer | x | Tọa độ X |
| positionY | Integer | x | Tọa độ Y |
| width | Integer | x | Độ rộng |
| height | Integer | x | Độ cao |
| page | Integer | x | Trang hiển thị chữ ký |
4.9. Thông tin eSign-login
| Tên trường | Kiểu dữ liệu | Mô tả |
| status | status | Trạng thái kết quả của việc call API |
| data | data_token | Dữ liệu của dữ liệu trả về khi đăng nhập thành công |
4.10. Thông tin Status
| Tên trường | Kiểu dữ liệu | Mô tả |
| type | String | Trạng thái response (success/ fail) |
| code | Integer | Status code của Request |
| message | String | Thông báo |
| error | Boolean | Đánh dấu có lỗi |
| errorCode | Integer | Mã lỗi (xảy ra khi error = true) |
4.11. Thông tin data_token
| Tên trường | Kiểu dữ liệu | Mô tả |
| accessToken | String | Mã accessToken của hệ thống MISAID |
| remoteSigningAccessToken | String | Mã accessToken của ứng dụng eSign (hạn dùng 60p) |
| tokenType | String | Kiểu của token |
| expiresIn | Integer | Thời hạn của token |
| refreshToken | String | Mã làm mới Token, dùng khi remoteSigningAccessToken hết hạn |
| user | User | Thông tin tài khoản |
4.12. Thông tin User
| Tên trường | Kiểu dữ liệu | Mô tả |
| id | String | ID người dùng (ID đăng nhập) |
| String | Email người dùng | |
| phoneNumber | String | Số điện thoại người dùng |
| firstName | String | Họ đệm |
| lastName | String | Tên người dùng |
| username | String | Tên đăng nhập tài khoản |
4.13. Thông tin ResponseError
| Tên trường | Kiểu dữ liệu | Mô tả |
| error | String | Mô tả lỗi |
| errorCode | String | Mã lỗi |
| devMsg | String | Thông tin lỗi cho dev |
| userMsg | String | Thông tin lỗi cho người dùng |
4.14. Thông tin Cert
| Tên trường | Kiểu dữ liệu | Mô tả |
| userId | Guid | Id người dùng |
| keyAlias | Guid | Id chữ ký số (là CertAlias của api Ký, là SignatureId của api attack) |
| appName | String | Tên ứng dụng |
| keyStatus | String | Mã trạng thái (ACTIVE, INACTIVE) |
| certificate | String | Raw data của chứng thư (dạng base64) |
| certiticateChain | List<String> | Chuỗi chứng thư, gồm 3 chuỗi ký tự
chain_data_1: là chứng thư ký chain_data_2: là intermediate cert của MISA CA, chain_data_3: là cert root do NEAC cấp. |
| certStatus | String | Mã trạng thái (ACTIVE, INACTIVE) |
| effectiveDate | DateTime | Ngày bắt đầu sử dụng |
| expirationDate | DateTime | Ngày kết thúc sử dụng |
| emailName | String | email tài khoản |
| isAutoSign | Boolean | Tự động ký |
4.15. Thông tin đầu ra của API hash file
4.15.1. Thông tin PdfDocs
| Tên trường | Kiểu dữ liệu | Mô tả |
| documentId | String | ID của tài liệu ký |
| documentBytes | String | Dữ liệu của file dạng byte |
| documentHash | String | Dữ liệu của file được Hash |
| sh | String | Dữ liệu của tài liệu được Hash, sử dụng làm đầu vào của API gắn CTS |
| signatureName | String | Tên người ký |
| digest | String | Dữ liệu của tài liệu được Hash, sử dụng làm đầu vào của API ký Hash |
4.15.2. Thông tin XmlDocs
| Tên trường | Kiểu dữ liệu | Mô tả |
| documentId | String | ID của tài liệu ký |
| document | String | Dữ liệu của file dạng text |
| signatureId | String | Id người ký |
| digest | String | Dữ liệu của tài liệu được Hash, sử dụng làm đầu vào của API ký Hash |
| sh | String | Dữ liệu của tài liệu được Hash, sử dụng làm đầu vào của API gắn CTS |
4.15.3. Thông tin ExcelDocs
| Tên trường | Kiểu dữ liệu | Mô tả |
| documentId | String | ID của tài liệu ký |
| documentBytes | String | Dữ liệu của file dạng byte |
| signatureId | String | Id người ký |
| digest | String | Dữ liệu của tài liệu được Hash, sử dụng làm đầu vào của API ký Hash |
| mainDom | String | Dữ liệu mainDon của tài liệu, sử dụng làm đầu vào của API gắn CTS |
4.15.4. Thông tin WordDocs
| Tên trường | Kiểu dữ liệu | Mô tả |
| documentId | String | ID của tài liệu ký |
| documentBytes | String | Dữ liệu của file dạng byte |
| signatureId | String | Id người ký |
| digest | String | Dữ liệu của tài liệu được Hash, sử dụng làm đầu vào của API ký Hash |
| mainDom | String | Dữ liệu mainDon của tài liệu, sử dụng làm đầu vào của API gắn CTS |
4.16. Thông tin Sign_status
| Tên trường | Kiểu dữ liệu | Mô tả |
| status | String | – Trạng thái ký (PENDING, SUCCESS, FAILED).
– Trong trường hợp ký bó, ký lô. Trạng thái SUCCESS sẽ được trả về khi tất cả các file đã được ký thành công. |
| errorCode | String | Mã lỗi |
| errorDescription | String | Mô tả chi tiết lỗi |
| transactionId | String | Id lượt ký |
| signatures | List<signature> | Danh sách thông tin ký số |
4.17. Thông tin Signature
| Tên trường | Kiểu dữ liệu | Mô tả |
| documentId | String | Id của file ký |
| signature | String | Dữ liệu chữ ký trên tài liệu |
4.18. Thông tin Attachmented
| Tên trường | Kiểu dữ liệu | Mô tả |
| documentId | String | ID của tài liệu ký đã được ký |
| document | String | File đã được gắn CKS (dạng base64 string) |



