import Foundation
import ServiceStack
/**
* Generate custom Document (Don't use from inside VSTO's)
*/
// @Api(Description="Generate custom Document (Don't use from inside VSTO's)")
public class GenerateDocument : IGenerateDocument, Codable
{
/**
* DigiOffice user
*/
// @ApiMember(Description="DigiOffice user")
public var user:UserReference
/**
* Send the generated e-mail via the e-mail queue.
*/
// @ApiMember(Description="Send the generated e-mail via the e-mail queue.")
public var sendMail:Bool
/**
* ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.
*/
// @ApiMember(Description="ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.", IsRequired=true)
public var configurationSource:ConfigurationSource
/**
* Set references to bind with Registration profile
*/
// @ApiMember(Description="Set references to bind with Registration profile", IsRequired=true)
public var registrationMetaData:RegistrationMetaData
/**
* Entity instance used as data source parent, if not exists default is Document registration instance.
*/
// @ApiMember(Description="Entity instance used as data source parent, if not exists default is Document registration instance.")
public var dataSourceEntity:CommonEntityBaseReference
/**
* Hier kan de (dynamische) data voor het document geplaatst worden, de data kan middels tekstblokken en placeholders worden geplaatst.Het formaat binnen CustomData staat vrij maar vereist een 'root' element.
*/
// @ApiMember(Description="Hier kan de (dynamische) data voor het document geplaatst worden, de data kan middels tekstblokken en placeholders worden geplaatst.Het formaat binnen CustomData staat vrij maar vereist een 'root' element.")
public var customData:String
/**
* Insert a watermark into the document.
*/
// @ApiMember(Description="Insert a watermark into the document.")
public var watermark:Watermark
/**
* Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.
*/
// @ApiMember(Description="Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.")
public var outputType:String
/**
* Should update the document file.
*/
// @ApiMember(Description="Should update the document file.")
public var shouldUpdateDocumentFile:Bool
required public init(){}
}
public class UserReference : IEntityReference, Codable
{
public var id:Int?
public var loginName:String
public var userPrincipalName:String
public var fullName:String
public var emailAddress:String
public var globalID:String?
required public init(){}
}
public class ConfigurationSource : Codable
{
/**
* Document genereren op basis van een DocGenDocument.
*/
public var documentgeneratorDocument:DocumentgeneratorDocumentReference
/**
* Document genereren op basis van een RegistratieProfiel.
*/
public var registrationProfile:RegistrationProfileReference
/**
* Use existing document registration.
*/
public var registeredDocument:DocumentReference
/**
* Use documentInfo.
*/
public var unRegisteredDocument:DocumentInfo
/**
* Use draft document registration.
*/
public var draftDocumentRegistration:MessageQueueReference
public var documentgeneratorType:String
/**
* DocumentgeneratorType voor bijvoorbeeld Word of Email.
*/
public var documentgeneratorTypeName:String
public var templateExtension:String
public var outputExtension:String
required public init(){}
}
public class DocumentgeneratorDocumentReference : IEntityReference, Codable
{
public var id:String?
public var name:String
public var globalID:String?
required public init(){}
}
public class RegistrationProfileReference : IEntityReference, Codable
{
public var id:String
public var globalID:String?
required public init(){}
}
public class DocumentReference : IEntityReference, Codable
{
public var id:String?
public var code:String
public var versionCode:String
public var rootDocID:String?
public var internalInvoiceCode:String
public var companyNumber:Int?
public var documentTypeID:String
public var invoiceType:Int?
public var regProfCatID:Int?
public var globalID:String?
public var externalID:String
public var externNr:String
public var externVersieNr:String
public var internNummer:String
required public init(){}
}
public class DocumentInfo : Codable
{
public var action:DocInfoAction
public var mode:DocInfoMode
public var version:String
public var silentMode:DocInfoSilentMode
required public init(){}
}
public enum DocInfoAction : String, Codable
{
case Create
case Register
}
public enum DocInfoMode : String, Codable
{
case New
case Change
case NewVersionPrimary
case NewVersionSecondary
case NewFromExistingDocument
}
public enum DocInfoSilentMode : String, Codable
{
case Off
case AllowUserInteraction
case DoNotAllowUserInteraction
}
public class MessageQueueReference : IEntityReference, Codable
{
public var id:Int?
public var globalID:String?
required public init(){}
}
public class RegistrationMetaData : Codable
{
/**
* Hoe moet het versiebeheer worden toegepast?
*/
// @ApiMember(Description="Hoe moet het versiebeheer worden toegepast?")
public var versioning:VersioningType?
/**
* Previous document will be used for registration of a new version.
*/
// @ApiMember(Description="Previous document will be used for registration of a new version.")
public var previousDocument:DocumentReference
/**
* Company
*/
// @ApiMember(Description="Company")
public var company:CompanyReference
/**
* Relation
*/
// @ApiMember(Description="Relation")
public var relation:RelationReference
/**
* Person
*/
// @ApiMember(Description="Person")
public var person:PersonReference
/**
* Project
*/
// @ApiMember(Description="Project")
public var project:ProjectReference
/**
* Sub projects
*/
// @ApiMember(AllowMultiple=true, Description="Sub projects")
public var subProjects:[SubProject] = []
/**
* Signers
*/
// @ApiMember(AllowMultiple=true, Description="Signers")
public var signers:[Signer] = []
/**
* Bevat velden die gebruikt worden als additionele metadata voor het document, naast de vaste koppelingen zoals gebruiker, project en relatie.
*/
// @ApiMember(AllowMultiple=true, Description="Bevat velden die gebruikt worden als additionele metadata voor het document, naast de vaste koppelingen zoals gebruiker, project en relatie.")
public var fields:[Field] = []
/**
* Attachments die aan de documentregistratie gekoppeld moet worden.
*/
// @ApiMember(AllowMultiple=true, Description="Attachments die aan de documentregistratie gekoppeld moet worden.")
public var attachments:[Attachment] = []
required public init(){}
}
public enum VersioningType : String, Codable
{
case New
case Change
case Primary
case Secondary
}
public class CompanyReference : IEntityReference, Codable
{
public var id:Int?
public var number:Int?
public var globalID:String?
public var externalID:String
required public init(){}
}
public class RelationReference : IEntityReference, Codable
{
public var id:Int?
public var creditorNumber:Int?
public var debtorNumber:Int?
public var globalLocationNumber:String
public var globalID:String?
public var externalID:String
required public init(){}
}
public class PersonReference : IEntityReference, Codable
{
public var id:Int?
public var number:Int?
public var globalID:String?
public var externalID:String
required public init(){}
}
public class ProjectReference : IEntityReference, Codable
{
public var id:Int?
public var code:String
public var typeExternalID:String
public var companyNumber:Int?
public var globalID:String?
public var externalID:String
required public init(){}
}
public class SubProject : Codable
{
public var project:ProjectReference
required public init(){}
}
public class Signer : Codable
{
public var mainSignerPostFix:String
public var user:UserReference
public var person:PersonReference
public var relation:RelationReference
public var contactPerson:ContactPersonReference
public var registeredDocument:DocumentReference
public var type:SignerType
public var closingSentence:String
public var name:String
public var subsidiary:String
public var function:String
public var department:String
public var phoneNumber:String
public var faxNumber:String
public var mobileNumber:String
public var email:String
public var customText:String
public var signature:[String] = []
public var initials:[String] = []
public var signatureVisible:Bool?
public var initialsVisible:Bool?
public var visible:Bool?
required public init(){}
}
public class ContactPersonReference : IEntityReference, Codable
{
public var id:Int?
public var globalID:String?
public var externalID:String
public var relationID:Int?
public var personID:Int?
required public init(){}
}
public enum SignerType : String, Codable
{
case MainSigner
case AdditionalSigner
case ConfirmationDeclarant
case AdditionalConfirmationDeclarant
}
public class Field : Codable
{
public var name:String
public var oldValue:String
public var value:String
public var title:String
required public init(){}
}
public class Attachment : Codable
{
public var name:String
public var attachmentData:AttachmentData
required public init(){}
}
public class AttachmentData : Codable
{
public var contentType:String
/**
* Data base64-encoded zonder padding.
*/
public var data:String
required public init(){}
}
public class CommonEntityBaseReference : IEntityReference, Codable
{
public var id:String
public var externalID:String
public var globalID:String?
required public init(){}
}
public class Watermark : Codable
{
public var text:String
public var fontFamilyText:String
public var fontFamily:FontFamily
public var direction:Direction?
public var strokeColorText:String
public var strokeColor:Color
public var fillColorText:String
public var fillColor:Color
required public init(){}
}
public enum Direction : Int, Codable
{
case Left2Right = 0
case UpLeft2DownRight = 45
case Up2Down = 90
case UpRight2DownLeft = 135
case Right2Left = 180
case DownRight2UpLeft = 225
case Down2Up = 270
case DownLeft2UpRight = 315
}
public class GenerateDocumentResponse : IGenerateDocumentResponse, Codable
{
/**
* Contains the registration ID of the generated (corporate identity) document
*/
// @ApiMember(Description="Contains the registration ID of the generated (corporate identity) document", IsRequired=true)
public var documentID:String
required public init(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /jsv/reply/GenerateDocument HTTP/1.1
Host: doapigw.baasbv.nl
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
User:
{
ID: 0,
LoginName: String,
UserPrincipalName: String,
FullName: String,
EmailAddress: String,
GlobalID: 00000000-0000-0000-0000-000000000000
},
SendMail: False,
ConfigurationSource:
{
DocumentgeneratorDocument:
{
ID: 00000000-0000-0000-0000-000000000000,
Name: String
},
RegistrationProfile: {},
RegisteredDocument:
{
ID: 00000000-0000-0000-0000-000000000000,
Code: String,
VersionCode: String,
RootDocID: 00000000-0000-0000-0000-000000000000,
InternalInvoiceCode: String,
CompanyNumber: 0,
DocumentTypeID: String,
InvoiceType: 0,
RegProfCatID: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String,
ExternVersieNr: String
},
UnRegisteredDocument:
{
Action: Create,
Mode: New,
Version: String,
SilentMode: Off
},
DraftDocumentRegistration:
{
ID: 0
},
TemplateExtension: String,
OutputExtension: String
},
RegistrationMetaData:
{
Versioning: New,
PreviousDocument:
{
ID: 00000000-0000-0000-0000-000000000000,
Code: String,
VersionCode: String,
RootDocID: 00000000-0000-0000-0000-000000000000,
InternalInvoiceCode: String,
CompanyNumber: 0,
DocumentTypeID: String,
InvoiceType: 0,
RegProfCatID: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String,
ExternVersieNr: String
},
Company:
{
ID: 0,
Number: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String
},
Relation:
{
ID: 0,
CreditorNumber: 0,
DebtorNumber: 0,
GlobalLocationNumber: String,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String
},
Person:
{
ID: 0,
Number: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String
},
Project:
{
ID: 0,
Code: String,
TypeExternalID: String,
CompanyNumber: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String
},
SubProjects:
[
{
Project:
{
ID: 0,
Code: String,
TypeExternalID: String,
CompanyNumber: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String
}
}
],
Signers:
[
{
MainSignerPostFix: String,
User:
{
ID: 0,
LoginName: String,
UserPrincipalName: String,
FullName: String,
EmailAddress: String,
GlobalID: 00000000-0000-0000-0000-000000000000
},
Person:
{
ID: 0,
Number: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String
},
Relation:
{
ID: 0,
CreditorNumber: 0,
DebtorNumber: 0,
GlobalLocationNumber: String,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String
},
ContactPerson:
{
ID: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String,
RelationID: 0,
PersonID: 0
},
RegisteredDocument:
{
ID: 00000000-0000-0000-0000-000000000000,
Code: String,
VersionCode: String,
RootDocID: 00000000-0000-0000-0000-000000000000,
InternalInvoiceCode: String,
CompanyNumber: 0,
DocumentTypeID: String,
InvoiceType: 0,
RegProfCatID: 0,
GlobalID: 00000000-0000-0000-0000-000000000000,
ExternalID: String,
ExternVersieNr: String
},
Type: MainSigner,
ClosingSentence: String,
Name: String,
Subsidiary: String,
Function: String,
Department: String,
PhoneNumber: String,
FaxNumber: String,
MobileNumber: String,
Email: String,
CustomText: String,
Signature:
[
String
],
Initials:
[
String
],
SignatureVisible: False,
InitialsVisible: False,
Visible: False
}
],
Fields:
[
{
Name: String,
OldValue: String,
Value: String,
Title: String = String -> String
}
],
Attachments:
[
{
Name: String,
AttachmentData:
{
ContentType: String,
Data: String
}
}
]
},
DataSourceEntity:
{
ID: String,
ExternalID: String,
GlobalID: 00000000-0000-0000-0000-000000000000
},
CustomData: String,
Watermark:
{
Text: String,
Direction: Left2Right
},
OutputType: String,
ShouldUpdateDocumentFile: False
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { }