Tài liệu Open API tích hợp Chữ ký số MISA eSign

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ề

  • Tài khoản eSgin
  • Mật khẩu eSgin

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 ý
  • Dùng trường digest trả ra bởi api để gọi lên api ký hash.
  • Lưu lưu lại response để gọi lên api gắn chữ ký vào file khi có chữ ký

 

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 ý
  • Để gọi được api ký hash này, người dùng cần phải được thiết lập kết nối tài khoản CKS từ xa MISA eSign trước. 
  • Nếu người dùng chưa thực hiện kết nối, ứng dụng tích hợp cần phải có thông báo và hướng dẫn để người dùng thực hiện. Thiết lập tại đây

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 ý
  • Danh sách dữ liệu chữ ký signature_data sẽ trả về theo đúng thứ tự mà danh sách file ký truyền lên tại API ký hash
  • Chỉ trả về dữ liệu chữ ký khi tài liệu được ký thành công (status = SUCCESS)
  • Ứng dụng tích hợp sẽ sử dụng dữ liệu chữ ký (signatures.signature) và gắn vào file để trả về cho người dùng cuối 

 

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 ý
  • Danh sách dữ liệu chữ ký signature sẽ trả về theo đúng thứ tự mà danh sách file ký truyền lên tại API ký hash.
  • Chỉ trả về dữ liệu chữ ký signatures khi tất cả tài liệu được ký thành công.
  • Ứng dụng tích hợp sẽ sử dụng dữ liệu chữ ký này và gắn vào file để trả về cho người dùng cuối

 

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)
email 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)