DigiOffice Gateway Web Services

<back to all web services

GenerateDocument

Generate custom Document (Don't use from inside VSTO's)

Requires Authentication
import java.math.*
import java.util.*
import net.servicestack.client.*


/**
* Generate custom Document (Don't use from inside VSTO's)
*/
@Api(Description="Generate custom Document (Don't use from inside VSTO's)")
open class GenerateDocument : IGenerateDocument
{
    /**
    * DigiOffice user
    */
    @ApiMember(Description="DigiOffice user")
    var User:UserReference? = null

    /**
    * Send the generated e-mail via the e-mail queue.
    */
    @ApiMember(Description="Send the generated e-mail via the e-mail queue.")
    var SendMail:Boolean? = null

    /**
    * ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.
    */
    @ApiMember(Description="ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.", IsRequired=true)
    var ConfigurationSource:ConfigurationSource? = null

    /**
    * Set references to bind with Registration profile
    */
    @ApiMember(Description="Set references to bind with Registration profile", IsRequired=true)
    var RegistrationMetaData:RegistrationMetaData? = null

    /**
    * 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.")
    var DataSourceEntity:CommonEntityBaseReference? = null

    /**
    * 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.")
    var CustomData:String? = null

    /**
    * Insert a watermark into the document.
    */
    @ApiMember(Description="Insert a watermark into the document.")
    var Watermark:Watermark? = null

    /**
    * Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.
    */
    @ApiMember(Description="Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.")
    var OutputType:String? = null

    /**
    * Should update the document file.
    */
    @ApiMember(Description="Should update the document file.")
    var ShouldUpdateDocumentFile:Boolean? = null
}

open class UserReference : IEntityReference
{
    var ID:Int? = null
    var LoginName:String? = null
    var UserPrincipalName:String? = null
    var FullName:String? = null
    var EmailAddress:String? = null
    var GlobalID:UUID? = null
}

open class ConfigurationSource
{
    /**
    * Document genereren op basis van een DocGenDocument.
    */
    var DocumentgeneratorDocument:DocumentgeneratorDocumentReference? = null
    /**
    * Document genereren op basis van een RegistratieProfiel.
    */
    var RegistrationProfile:RegistrationProfileReference? = null
    /**
    * Use existing document registration.
    */
    var RegisteredDocument:DocumentReference? = null
    /**
    * Use draft document registration.
    */
    var DraftDocumentRegistration:MessageQueueReference? = null
    var DocumentgeneratorType:Class? = null
    /**
    * DocumentgeneratorType voor bijvoorbeeld Word of Email.
    */
    var DocumentgeneratorTypeName:String? = null
    var TemplateExtension:String? = null
    var OutputExtension:String? = null
}

open class DocumentgeneratorDocumentReference : IEntityReference
{
    var ID:UUID? = null
    var Name:String? = null
    var GlobalID:UUID? = null
}

open class RegistrationProfileReference : IEntityReference
{
    var ID:UUID? = null
    var GlobalID:UUID? = null
}

open class DocumentReference : IEntityReference
{
    var ID:UUID? = null
    var Code:String? = null
    var VersionCode:String? = null
    var RootDocID:UUID? = null
    var InternalInvoiceCode:String? = null
    var CompanyNumber:Int? = null
    var DocumentTypeID:String? = null
    var InvoiceType:Int? = null
    var RegProfCatID:Int? = null
    var GlobalID:UUID? = null
    var ExternalID:String? = null
    var ExternNr:String? = null
    var InternNummer:String? = null
}

open class MessageQueueReference : IEntityReference
{
    var ID:Int? = null
    var GlobalID:UUID? = null
}

open class RegistrationMetaData
{
    /**
    * Hoe moet het versiebeheer worden toegepast?
    */
    @ApiMember(Description="Hoe moet het versiebeheer worden toegepast?")
    var Versioning:VersioningType? = null

    /**
    * Previous document will be used for registration of a new version.
    */
    @ApiMember(Description="Previous document will be used for registration of a new version.")
    var PreviousDocument:DocumentReference? = null

    /**
    * Company
    */
    @ApiMember(Description="Company")
    var Company:CompanyReference? = null

    /**
    * Relation
    */
    @ApiMember(Description="Relation")
    var Relation:RelationReference? = null

    /**
    * Person
    */
    @ApiMember(Description="Person")
    var Person:PersonReference? = null

    /**
    * Project
    */
    @ApiMember(Description="Project")
    var Project:ProjectReference? = null

    /**
    * Sub projects
    */
    @ApiMember(AllowMultiple=true, Description="Sub projects")
    var SubProjects:ArrayList<SubProject> = ArrayList<SubProject>()

    /**
    * Signers
    */
    @ApiMember(AllowMultiple=true, Description="Signers")
    var Signers:ArrayList<Signer> = ArrayList<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.")
    var Fields:ArrayList<Field> = ArrayList<Field>()

    /**
    * Attachments die aan de documentregistratie gekoppeld moet worden.
    */
    @ApiMember(AllowMultiple=true, Description="Attachments die aan de documentregistratie gekoppeld moet worden.")
    var Attachments:ArrayList<Attachment> = ArrayList<Attachment>()
}

enum class VersioningType
{
    New,
    Change,
    Primary,
    Secondary,
}

open class CompanyReference : IEntityReference
{
    var ID:Int? = null
    var Number:Int? = null
    var GlobalID:UUID? = null
    var ExternalID:String? = null
}

open class RelationReference : IEntityReference
{
    var ID:Int? = null
    var CreditorNumber:Int? = null
    var DebtorNumber:Int? = null
    var GlobalLocationNumber:String? = null
    var GlobalID:UUID? = null
    var ExternalID:String? = null
}

open class PersonReference : IEntityReference
{
    var ID:Int? = null
    var Number:Int? = null
    var GlobalID:UUID? = null
    var ExternalID:String? = null
}

open class ProjectReference : IEntityReference
{
    var ID:Int? = null
    var Code:String? = null
    var TypeExternalID:String? = null
    var CompanyNumber:Int? = null
    var GlobalID:UUID? = null
    var ExternalID:String? = null
}

open class SubProject
{
    var Project:ProjectReference? = null
}

open class Signer
{
    var User:UserReference? = null
    var Person:PersonReference? = null
    var Relation:RelationReference? = null
    var ContactPerson:ContactPersonReference? = null
    var RegisteredDocument:DocumentReference? = null
    var Type:SignerType? = null
    var ClosingSentence:String? = null
    var Name:String? = null
    var Subsidiary:String? = null
    var Function:String? = null
    var Department:String? = null
    var PhoneNumber:String? = null
    var FaxNumber:String? = null
    var MobileNumber:String? = null
    var Email:String? = null
    var CustomText:String? = null
    var Signature:ArrayList<String> = ArrayList<String>()
    var SignatureVisible:Boolean? = null
    var Visible:Boolean? = null
}

open class ContactPersonReference : IEntityReference
{
    var ID:Int? = null
    var GlobalID:UUID? = null
    var ExternalID:String? = null
    var RelationID:Int? = null
    var PersonID:Int? = null
}

enum class SignerType
{
    MainSigner,
    AdditionalSigner,
    ConfirmationDeclarant,
    AdditionalConfirmationDeclarant,
}

open class Field
{
    var Name:String? = null
    var OldValue:String? = null
    var Value:String? = null
    var Title:String? = null
}

open class Attachment
{
    var Name:String? = null
    var AttachmentData:AttachmentData? = null
}

open class AttachmentData
{
    var ContentType:String? = null
    /**
    * Data base64-encoded zonder padding.
    */
    var Data:String? = null
}

open class CommonEntityBaseReference : IEntityReference
{
    var ID:String? = null
    var ExternalID:String? = null
    var GlobalID:UUID? = null
}

open class Watermark
{
    var Text:String? = null
    var FontFamilyText:String? = null
    var FontFamily:FontFamily? = null
    var Direction:Direction? = null
    var StrokeColorText:String? = null
    var StrokeColor:Color? = null
    var FillColorText:String? = null
    var FillColor:Color? = null
}

enum class Direction(val value:Int)
{
    Left2Right(0),
    UpLeft2DownRight(45),
    Up2Down(90),
    UpRight2DownLeft(135),
    Right2Left(180),
    DownRight2UpLeft(225),
    Down2Up(270),
    DownLeft2UpRight(315),
}

open class GenerateDocumentResponse : IGenerateDocumentResponse
{
    /**
    * Contains the registration ID of the generated (corporate identity) document
    */
    @ApiMember(Description="Contains the registration ID of the generated (corporate identity) document", IsRequired=true)
    var DocumentID:UUID? = null
}

Kotlin GenerateDocument DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + 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: digiofficeapigateway.deltares.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
		},
		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
		},
		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: 
		[
			{
				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
				},
				Type: MainSigner,
				ClosingSentence: String,
				Name: String,
				Subsidiary: String,
				Function: String,
				Department: String,
				PhoneNumber: String,
				FaxNumber: String,
				MobileNumber: String,
				Email: String,
				CustomText: String,
				Signature: 
				[
					String
				],
				SignatureVisible: 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

{
	
}