| POST | /document/advance-create |
|---|
import Foundation
import ServiceStack
public class AdvanceCreateDocument : BasicDocument
{
public var partUploadedFile:UploadedFiles
public var compactUploadedFile:UploadedFiles
public var analysisUploadedFile:UploadedFiles
public var fullUploadedFile:UploadedFiles
public var attachFiles:[UploadedFiles] = []
public var basisDocumentId:[Int] = []
public var referenceDocumentId:[Int] = []
public var replacedDocumentId:[Int] = []
public var expiredDocumentId:[Int] = []
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case partUploadedFile
case compactUploadedFile
case analysisUploadedFile
case fullUploadedFile
case attachFiles
case basisDocumentId
case referenceDocumentId
case replacedDocumentId
case expiredDocumentId
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
partUploadedFile = try container.decodeIfPresent(UploadedFiles.self, forKey: .partUploadedFile)
compactUploadedFile = try container.decodeIfPresent(UploadedFiles.self, forKey: .compactUploadedFile)
analysisUploadedFile = try container.decodeIfPresent(UploadedFiles.self, forKey: .analysisUploadedFile)
fullUploadedFile = try container.decodeIfPresent(UploadedFiles.self, forKey: .fullUploadedFile)
attachFiles = try container.decodeIfPresent([UploadedFiles].self, forKey: .attachFiles) ?? []
basisDocumentId = try container.decodeIfPresent([Int].self, forKey: .basisDocumentId) ?? []
referenceDocumentId = try container.decodeIfPresent([Int].self, forKey: .referenceDocumentId) ?? []
replacedDocumentId = try container.decodeIfPresent([Int].self, forKey: .replacedDocumentId) ?? []
expiredDocumentId = try container.decodeIfPresent([Int].self, forKey: .expiredDocumentId) ?? []
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if partUploadedFile != nil { try container.encode(partUploadedFile, forKey: .partUploadedFile) }
if compactUploadedFile != nil { try container.encode(compactUploadedFile, forKey: .compactUploadedFile) }
if analysisUploadedFile != nil { try container.encode(analysisUploadedFile, forKey: .analysisUploadedFile) }
if fullUploadedFile != nil { try container.encode(fullUploadedFile, forKey: .fullUploadedFile) }
if attachFiles.count > 0 { try container.encode(attachFiles, forKey: .attachFiles) }
if basisDocumentId.count > 0 { try container.encode(basisDocumentId, forKey: .basisDocumentId) }
if referenceDocumentId.count > 0 { try container.encode(referenceDocumentId, forKey: .referenceDocumentId) }
if replacedDocumentId.count > 0 { try container.encode(replacedDocumentId, forKey: .replacedDocumentId) }
if expiredDocumentId.count > 0 { try container.encode(expiredDocumentId, forKey: .expiredDocumentId) }
}
}
public class BasicDocument : Codable
{
// @Required()
public var title:String?
// @StringLength(4000)
public var Description:String
// @StringLength(500)
public var owner:String
public var documentPolicyId:Int?
public var updateDocumentId:Int?
public var effectBeginDate:Date?
public var effectEndDate:Date?
public var issuingAgencyId:Int?
public var documentTypeId:Int?
public var documentGroupId:Int?
public var subjectId:Int?
// @StringLength(500)
public var signBy:String
public var signDate:Date?
public var statusId:Int?
public var isInternal:Bool
public var documentNumber:String
public var documentCode:String
public var isUrgent:Bool?
public var scopeType:Int?
public var isActive:Bool?
required public init(){}
}
public class UploadedFiles : BasicUploadedFile
{
public var id:Int?
public var uploadedFile:String
public var subDocumentId:Int?
public var stepId:Int?
public var code:Int
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
case uploadedFile
case subDocumentId
case stepId
case code
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
uploadedFile = try container.decodeIfPresent(String.self, forKey: .uploadedFile)
subDocumentId = try container.decodeIfPresent(Int.self, forKey: .subDocumentId)
stepId = try container.decodeIfPresent(Int.self, forKey: .stepId)
code = try container.decodeIfPresent(Int.self, forKey: .code)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if id != nil { try container.encode(id, forKey: .id) }
if uploadedFile != nil { try container.encode(uploadedFile, forKey: .uploadedFile) }
if subDocumentId != nil { try container.encode(subDocumentId, forKey: .subDocumentId) }
if stepId != nil { try container.encode(stepId, forKey: .stepId) }
if code != nil { try container.encode(code, forKey: .code) }
}
}
public class BasicUploadedFile : Codable
{
public var fileName:String
public var filekey:String
public var fileUrl:String
public var checksum:String
public var eTag:String
public var fileSize:Int
required public init(){}
}
public class DocumentDetailResponse : IResponseRequest, Codable
{
public var data:DocumentDetail
public var code:Int
public var message:String
required public init(){}
}
public class DocumentDetail : DocumentSearchResultItem
{
public var partUploadedFile:UploadedFileAttach
public var compactUploadedFile:UploadedFileAttach
public var analysisUploadedFile:UploadedFileAttach
public var fullUploadedFile:UploadedFileAttach
public var createdAt:Date
public var nextApprover:ApproversProfile
public var currentApprover:CurrentApprover
public var attachFiles:[UploadedFileAttach] = []
public var hasReadPermission:Bool
public var canGrantReadPermission:Bool
public var basisDocument:[SimpleDocumentRelation] = []
public var basisForDocument:[SimpleDocumentRelation] = []
public var mainDocument:SimpleDocumentRelation
public var referenceDocument:[SimpleDocumentRelation] = []
public var referencedByDocument:[SimpleDocumentRelation] = []
public var replacedDocument:[SimpleDocumentRelation] = []
public var replacedByDocument:[SimpleDocumentRelation] = []
public var expiredDocument:[SimpleDocumentRelation] = []
public var expiredByDocument:[SimpleDocumentRelation] = []
public var updateForDocument:SimpleDocumentRelation
public var scopeType:Int?
public var stepOrder:Int
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case partUploadedFile
case compactUploadedFile
case analysisUploadedFile
case fullUploadedFile
case createdAt
case nextApprover
case currentApprover
case attachFiles
case hasReadPermission
case canGrantReadPermission
case basisDocument
case basisForDocument
case mainDocument
case referenceDocument
case referencedByDocument
case replacedDocument
case replacedByDocument
case expiredDocument
case expiredByDocument
case updateForDocument
case scopeType
case stepOrder
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
partUploadedFile = try container.decodeIfPresent(UploadedFileAttach.self, forKey: .partUploadedFile)
compactUploadedFile = try container.decodeIfPresent(UploadedFileAttach.self, forKey: .compactUploadedFile)
analysisUploadedFile = try container.decodeIfPresent(UploadedFileAttach.self, forKey: .analysisUploadedFile)
fullUploadedFile = try container.decodeIfPresent(UploadedFileAttach.self, forKey: .fullUploadedFile)
createdAt = try container.decodeIfPresent(Date.self, forKey: .createdAt)
nextApprover = try container.decodeIfPresent(ApproversProfile.self, forKey: .nextApprover)
currentApprover = try container.decodeIfPresent(CurrentApprover.self, forKey: .currentApprover)
attachFiles = try container.decodeIfPresent([UploadedFileAttach].self, forKey: .attachFiles) ?? []
hasReadPermission = try container.decodeIfPresent(Bool.self, forKey: .hasReadPermission)
canGrantReadPermission = try container.decodeIfPresent(Bool.self, forKey: .canGrantReadPermission)
basisDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .basisDocument) ?? []
basisForDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .basisForDocument) ?? []
mainDocument = try container.decodeIfPresent(SimpleDocumentRelation.self, forKey: .mainDocument)
referenceDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .referenceDocument) ?? []
referencedByDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .referencedByDocument) ?? []
replacedDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .replacedDocument) ?? []
replacedByDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .replacedByDocument) ?? []
expiredDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .expiredDocument) ?? []
expiredByDocument = try container.decodeIfPresent([SimpleDocumentRelation].self, forKey: .expiredByDocument) ?? []
updateForDocument = try container.decodeIfPresent(SimpleDocumentRelation.self, forKey: .updateForDocument)
scopeType = try container.decodeIfPresent(Int.self, forKey: .scopeType)
stepOrder = try container.decodeIfPresent(Int.self, forKey: .stepOrder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if partUploadedFile != nil { try container.encode(partUploadedFile, forKey: .partUploadedFile) }
if compactUploadedFile != nil { try container.encode(compactUploadedFile, forKey: .compactUploadedFile) }
if analysisUploadedFile != nil { try container.encode(analysisUploadedFile, forKey: .analysisUploadedFile) }
if fullUploadedFile != nil { try container.encode(fullUploadedFile, forKey: .fullUploadedFile) }
if createdAt != nil { try container.encode(createdAt, forKey: .createdAt) }
if nextApprover != nil { try container.encode(nextApprover, forKey: .nextApprover) }
if currentApprover != nil { try container.encode(currentApprover, forKey: .currentApprover) }
if attachFiles.count > 0 { try container.encode(attachFiles, forKey: .attachFiles) }
if hasReadPermission != nil { try container.encode(hasReadPermission, forKey: .hasReadPermission) }
if canGrantReadPermission != nil { try container.encode(canGrantReadPermission, forKey: .canGrantReadPermission) }
if basisDocument.count > 0 { try container.encode(basisDocument, forKey: .basisDocument) }
if basisForDocument.count > 0 { try container.encode(basisForDocument, forKey: .basisForDocument) }
if mainDocument != nil { try container.encode(mainDocument, forKey: .mainDocument) }
if referenceDocument.count > 0 { try container.encode(referenceDocument, forKey: .referenceDocument) }
if referencedByDocument.count > 0 { try container.encode(referencedByDocument, forKey: .referencedByDocument) }
if replacedDocument.count > 0 { try container.encode(replacedDocument, forKey: .replacedDocument) }
if replacedByDocument.count > 0 { try container.encode(replacedByDocument, forKey: .replacedByDocument) }
if expiredDocument.count > 0 { try container.encode(expiredDocument, forKey: .expiredDocument) }
if expiredByDocument.count > 0 { try container.encode(expiredByDocument, forKey: .expiredByDocument) }
if updateForDocument != nil { try container.encode(updateForDocument, forKey: .updateForDocument) }
if scopeType != nil { try container.encode(scopeType, forKey: .scopeType) }
if stepOrder != nil { try container.encode(stepOrder, forKey: .stepOrder) }
}
}
public class DocumentSearchResultItem : Codable
{
public var title:String
public var Description:String
public var owner:String
public var documentPolicyId:Int?
public var updateDocumentId:Int?
public var effectBeginDate:Date?
public var effectEndDate:Date?
public var issuingAgencyId:Int?
public var subjectId:Int?
public var signBy:String
public var signDate:Date?
public var updatedAt:Date?
public var statusId:Int?
public var isInternal:Bool
public var documentNumber:String
public var documentCode:String
public var isUrgent:Bool?
public var id:Int
public var reasonReturn:String
public var accountId:Int?
public var approverId:Int?
// @StringLength(500)
public var updatedBy:String
// @StringLength(500)
public var createdBy:String
public var isParty:Bool?
public var isRevisionRequested:Bool?
public var isPrivate:Bool?
public var departmentId:Int?
public var publicationDate:Date?
public var processStatusId:Int
public var documentTypeId:Int?
public var documentGroupId:Int?
public var accountName:String
public var acceptAccountName:String
public var documentGroupText:String
public var processStatusText:String
public var documentTypeText:String
public var departmentText:String
public var statusText:String
public var issuingAgencyText:String
public var subjectText:String
public var comment:String
public var submitComment:String
public var fullFile:String
public var parthFile:String
public var isActive:Bool?
public var stepOrder:Int?
public var stepCount:Int?
required public init(){}
}
public class UploadedFileAttach : UploadedFileModel
{
public var fileType:String
public var subDocumentId:Int?
public var stepId:Int?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case fileType
case subDocumentId
case stepId
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
fileType = try container.decodeIfPresent(String.self, forKey: .fileType)
subDocumentId = try container.decodeIfPresent(Int.self, forKey: .subDocumentId)
stepId = try container.decodeIfPresent(Int.self, forKey: .stepId)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if fileType != nil { try container.encode(fileType, forKey: .fileType) }
if subDocumentId != nil { try container.encode(subDocumentId, forKey: .subDocumentId) }
if stepId != nil { try container.encode(stepId, forKey: .stepId) }
}
}
public class UploadedFileModel : BasicUploadedFile
{
public var id:Int
public var accessType:AccessType
public var createdBy:Int
public var createdDate:Date
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
case accessType
case createdBy
case createdDate
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
accessType = try container.decodeIfPresent(AccessType.self, forKey: .accessType)
createdBy = try container.decodeIfPresent(Int.self, forKey: .createdBy)
createdDate = try container.decodeIfPresent(Date.self, forKey: .createdDate)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if id != nil { try container.encode(id, forKey: .id) }
if accessType != nil { try container.encode(accessType, forKey: .accessType) }
if createdBy != nil { try container.encode(createdBy, forKey: .createdBy) }
if createdDate != nil { try container.encode(createdDate, forKey: .createdDate) }
}
}
public enum AccessType : String, Codable
{
case Public
case Restricted
}
public class ApproversProfile : Codable
{
public var userProfiles:[UserProfile] = []
public var processStatusId:Int
public var processTitle:String
public var actionButtonLabel:String
public var processDescription:String
public var isApprovalRequired:Bool
public var isFinalStep:Bool
public var stepOrder:Int
required public init(){}
}
public class UserProfile : UserLogin
{
public var id:Int
public var fullName:String
public var email:String
public var departmentId:Int?
public var partyGroupId:Int?
public var avatar:String
public var telephone:String
public var birthday:Date?
public var createdAt:Date?
public var updatedAt:Date?
public var failedLoginCount:Int
// @Ignore()
public var roles:[Int] = []
public var lastLoginDate:Date?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
case fullName
case email
case departmentId
case partyGroupId
case avatar
case telephone
case birthday
case createdAt
case updatedAt
case failedLoginCount
case roles
case lastLoginDate
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
fullName = try container.decodeIfPresent(String.self, forKey: .fullName)
email = try container.decodeIfPresent(String.self, forKey: .email)
departmentId = try container.decodeIfPresent(Int.self, forKey: .departmentId)
partyGroupId = try container.decodeIfPresent(Int.self, forKey: .partyGroupId)
avatar = try container.decodeIfPresent(String.self, forKey: .avatar)
telephone = try container.decodeIfPresent(String.self, forKey: .telephone)
birthday = try container.decodeIfPresent(Date.self, forKey: .birthday)
createdAt = try container.decodeIfPresent(Date.self, forKey: .createdAt)
updatedAt = try container.decodeIfPresent(Date.self, forKey: .updatedAt)
failedLoginCount = try container.decodeIfPresent(Int.self, forKey: .failedLoginCount)
roles = try container.decodeIfPresent([Int].self, forKey: .roles) ?? []
lastLoginDate = try container.decodeIfPresent(Date.self, forKey: .lastLoginDate)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if id != nil { try container.encode(id, forKey: .id) }
if fullName != nil { try container.encode(fullName, forKey: .fullName) }
if email != nil { try container.encode(email, forKey: .email) }
if departmentId != nil { try container.encode(departmentId, forKey: .departmentId) }
if partyGroupId != nil { try container.encode(partyGroupId, forKey: .partyGroupId) }
if avatar != nil { try container.encode(avatar, forKey: .avatar) }
if telephone != nil { try container.encode(telephone, forKey: .telephone) }
if birthday != nil { try container.encode(birthday, forKey: .birthday) }
if createdAt != nil { try container.encode(createdAt, forKey: .createdAt) }
if updatedAt != nil { try container.encode(updatedAt, forKey: .updatedAt) }
if failedLoginCount != nil { try container.encode(failedLoginCount, forKey: .failedLoginCount) }
if roles.count > 0 { try container.encode(roles, forKey: .roles) }
if lastLoginDate != nil { try container.encode(lastLoginDate, forKey: .lastLoginDate) }
}
}
public class UserLogin : Codable
{
// @Required()
public var name:String?
required public init(){}
}
public class CurrentApprover : Codable
{
public var approverId:Int?
public var status:String
public var processStatusId:Int
public var processTitle:String
public var actionButtonLabel:String
public var processDescription:String
public var isApprovalRequired:Bool
public var isFinalStep:Bool
public var stepOrder:Int
required public init(){}
}
public class SimpleDocumentRelation : Codable
{
public var id:Int
public var title:String
public var documentCode:String
public var publicationDate:Date?
required public init(){}
}
Swift AdvanceCreateDocument DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /document/advance-create HTTP/1.1
Host: etc-api.vsmlab.vn
Accept: application/json
Content-Type: application/json
Content-Length: length
{"partUploadedFile":{"id":0,"uploadedFile":"String","subDocumentId":0,"stepId":0,"code":0,"fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"compactUploadedFile":{"id":0,"uploadedFile":"String","subDocumentId":0,"stepId":0,"code":0,"fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"analysisUploadedFile":{"id":0,"uploadedFile":"String","subDocumentId":0,"stepId":0,"code":0,"fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"fullUploadedFile":{"id":0,"uploadedFile":"String","subDocumentId":0,"stepId":0,"code":0,"fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"attachFiles":[{"id":0,"uploadedFile":"String","subDocumentId":0,"stepId":0,"code":0,"fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0}],"basisDocumentId":[0],"referenceDocumentId":[0],"replacedDocumentId":[0],"expiredDocumentId":[0],"title":"String","description":"String","owner":"String","documentPolicyId":0,"updateDocumentId":0,"effectBeginDate":"0001-01-01T00:00:00.0000000+07:06","effectEndDate":"0001-01-01T00:00:00.0000000+07:06","issuingAgencyId":0,"documentTypeId":0,"documentGroupId":0,"subjectId":0,"signBy":"String","signDate":"0001-01-01T00:00:00.0000000+07:06","statusId":0,"isInternal":false,"documentNumber":"String","documentCode":"String","isUrgent":false,"scopeType":0,"isActive":false}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"data":{"partUploadedFile":{"fileType":"String","subDocumentId":0,"stepId":0,"id":0,"accessType":"Public","createdBy":0,"createdDate":"0001-01-01T00:00:00.0000000+07:06","fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"compactUploadedFile":{"fileType":"String","subDocumentId":0,"stepId":0,"id":0,"accessType":"Public","createdBy":0,"createdDate":"0001-01-01T00:00:00.0000000+07:06","fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"analysisUploadedFile":{"fileType":"String","subDocumentId":0,"stepId":0,"id":0,"accessType":"Public","createdBy":0,"createdDate":"0001-01-01T00:00:00.0000000+07:06","fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"fullUploadedFile":{"fileType":"String","subDocumentId":0,"stepId":0,"id":0,"accessType":"Public","createdBy":0,"createdDate":"0001-01-01T00:00:00.0000000+07:06","fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0},"createdAt":"0001-01-01T00:00:00.0000000+07:06","nextApprover":{"userProfiles":[{"id":0,"fullName":"String","email":"String","departmentId":0,"partyGroupId":0,"avatar":"String","telephone":"String","birthday":"0001-01-01T00:00:00.0000000+07:06","createdAt":"0001-01-01T00:00:00.0000000+07:06","updatedAt":"0001-01-01T00:00:00.0000000+07:06","failedLoginCount":0,"roles":[0],"lastLoginDate":"0001-01-01T00:00:00.0000000+07:06","name":"String"}],"processStatusId":0,"processTitle":"String","actionButtonLabel":"String","processDescription":"String","isApprovalRequired":false,"isFinalStep":false,"stepOrder":0},"currentApprover":{"approverId":0,"status":"String","processStatusId":0,"processTitle":"String","actionButtonLabel":"String","processDescription":"String","isApprovalRequired":false,"isFinalStep":false,"stepOrder":0},"attachFiles":[{"fileType":"String","subDocumentId":0,"stepId":0,"id":0,"accessType":"Public","createdBy":0,"createdDate":"0001-01-01T00:00:00.0000000+07:06","fileName":"String","filekey":"String","fileUrl":"String","checksum":"String","eTag":"String","fileSize":0}],"hasReadPermission":false,"canGrantReadPermission":false,"basisDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"basisForDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"mainDocument":{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"},"referenceDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"referencedByDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"replacedDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"replacedByDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"expiredDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"expiredByDocument":[{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"}],"updateForDocument":{"id":0,"title":"String","documentCode":"String","publicationDate":"0001-01-01T00:00:00.0000000+07:06"},"scopeType":0,"stepOrder":0,"title":"String","description":"String","owner":"String","documentPolicyId":0,"updateDocumentId":0,"effectBeginDate":"0001-01-01T00:00:00.0000000+07:06","effectEndDate":"0001-01-01T00:00:00.0000000+07:06","issuingAgencyId":0,"subjectId":0,"signBy":"String","signDate":"0001-01-01T00:00:00.0000000+07:06","updatedAt":"0001-01-01T00:00:00.0000000+07:06","statusId":0,"isInternal":false,"documentNumber":"String","documentCode":"String","isUrgent":false,"id":0,"reasonReturn":"String","accountId":0,"approverId":0,"updatedBy":"String","createdBy":"String","isParty":false,"isRevisionRequested":false,"isPrivate":false,"departmentId":0,"publicationDate":"0001-01-01T00:00:00.0000000+07:06","processStatusId":0,"documentTypeId":0,"documentGroupId":0,"accountName":"String","acceptAccountName":"String","documentGroupText":"String","processStatusText":"String","documentTypeText":"String","departmentText":"String","statusText":"String","issuingAgencyText":"String","subjectText":"String","comment":"String","submitComment":"String","fullFile":"String","parthFile":"String","isActive":false,"stepOrder":0,"stepCount":0},"code":0,"message":"String"}