DigiOffice Gateway Web Services

<back to all web services

GenerateDocument

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

Requires Authentication
namespace IDB.API.Common

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type GenerateDocumentResponse() = 
        ///<summary>
        ///Contains the registration ID of the generated (corporate identity) document
        ///</summary>
        [<ApiMember(Description="Contains the registration ID of the generated (corporate identity) document", IsRequired=true)>]
        member val DocumentID:Guid = new Guid() with get,set

    [<AllowNullLiteral>]
    type UserReference() = 
        member val ID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val LoginName:String = null with get,set
        member val UserPrincipalName:String = null with get,set
        member val FullName:String = null with get,set
        member val EmailAddress:String = null with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set

    [<AllowNullLiteral>]
    type DocumentgeneratorDocumentReference() = 
        member val ID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val Name:String = null with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set

    [<AllowNullLiteral>]
    type RegistrationProfileReference() = 
        member val ID:Guid = new Guid() with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set

    [<AllowNullLiteral>]
    type DocumentReference() = 
        member val ID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val Code:String = null with get,set
        member val VersionCode:String = null with get,set
        member val RootDocID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val InternalInvoiceCode:String = null with get,set
        member val CompanyNumber:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val DocumentTypeID:String = null with get,set
        member val InvoiceType:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val RegProfCatID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val ExternalID:String = null with get,set
        member val ExternNr:String = null with get,set
        member val InternNummer:String = null with get,set

    [<AllowNullLiteral>]
    type MessageQueueReference() = 
        member val ID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set

    [<AllowNullLiteral>]
    type ConfigurationSource() = 
        ///<summary>
        ///Document genereren op basis van een DocGenDocument.
        ///</summary>
        member val DocumentgeneratorDocument:DocumentgeneratorDocumentReference = null with get,set

        ///<summary>
        ///Document genereren op basis van een RegistratieProfiel.
        ///</summary>
        member val RegistrationProfile:RegistrationProfileReference = null with get,set

        ///<summary>
        ///Use existing document registration.
        ///</summary>
        member val RegisteredDocument:DocumentReference = null with get,set

        ///<summary>
        ///Use draft document registration.
        ///</summary>
        member val DraftDocumentRegistration:MessageQueueReference = null with get,set

        member val DocumentgeneratorType:Type = null with get,set
        ///<summary>
        ///DocumentgeneratorType voor bijvoorbeeld Word of Email.
        ///</summary>
        member val DocumentgeneratorTypeName:String = null with get,set

        member val TemplateExtension:String = null with get,set
        member val OutputExtension:String = null with get,set

    type VersioningType =
        | New = 0
        | Change = 1
        | Primary = 2
        | Secondary = 3

    [<AllowNullLiteral>]
    type CompanyReference() = 
        member val ID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Number:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val ExternalID:String = null with get,set

    [<AllowNullLiteral>]
    type RelationReference() = 
        member val ID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val CreditorNumber:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val DebtorNumber:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val GlobalLocationNumber:String = null with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val ExternalID:String = null with get,set

    [<AllowNullLiteral>]
    type PersonReference() = 
        member val ID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Number:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val ExternalID:String = null with get,set

    [<AllowNullLiteral>]
    type ProjectReference() = 
        member val ID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Code:String = null with get,set
        member val TypeExternalID:String = null with get,set
        member val CompanyNumber:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val ExternalID:String = null with get,set

    [<AllowNullLiteral>]
    type SubProject() = 
        member val Project:ProjectReference = null with get,set

    [<AllowNullLiteral>]
    type ContactPersonReference() = 
        member val ID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val ExternalID:String = null with get,set
        member val RelationID:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val PersonID:Nullable<Int32> = new Nullable<Int32>() with get,set

    type SignerType =
        | MainSigner = 0
        | AdditionalSigner = 1
        | ConfirmationDeclarant = 2
        | AdditionalConfirmationDeclarant = 3

    [<AllowNullLiteral>]
    type Signer() = 
        member val User:UserReference = null with get,set
        member val Person:PersonReference = null with get,set
        member val Relation:RelationReference = null with get,set
        member val ContactPerson:ContactPersonReference = null with get,set
        member val RegisteredDocument:DocumentReference = null with get,set
        member val Type:SignerType = new SignerType() with get,set
        member val ClosingSentence:String = null with get,set
        member val Name:String = null with get,set
        member val Subsidiary:String = null with get,set
        member val Function:String = null with get,set
        member val Department:String = null with get,set
        member val PhoneNumber:String = null with get,set
        member val FaxNumber:String = null with get,set
        member val MobileNumber:String = null with get,set
        member val Email:String = null with get,set
        member val CustomText:String = null with get,set
        member val Signature:ResizeArray<String> = new ResizeArray<String>() with get,set
        member val SignatureVisible:Nullable<Boolean> = new Nullable<Boolean>() with get,set
        member val Visible:Nullable<Boolean> = new Nullable<Boolean>() with get,set

    [<AllowNullLiteral>]
    type Field() = 
        member val Name:String = null with get,set
        member val OldValue:String = null with get,set
        member val Value:String = null with get,set
        member val Title:String = null with get,set

    [<AllowNullLiteral>]
    type AttachmentData() = 
        member val ContentType:String = null with get,set
        ///<summary>
        ///Data base64-encoded zonder padding.
        ///</summary>
        member val Data:String = null with get,set

    [<AllowNullLiteral>]
    type Attachment() = 
        member val Name:String = null with get,set
        member val AttachmentData:AttachmentData = null with get,set

    [<AllowNullLiteral>]
    type RegistrationMetaData() = 
        ///<summary>
        ///Hoe moet het versiebeheer worden toegepast?
        ///</summary>
        [<ApiMember(Description="Hoe moet het versiebeheer worden toegepast?")>]
        member val Versioning:Nullable<VersioningType> = new Nullable<VersioningType>() with get,set

        ///<summary>
        ///Previous document will be used for registration of a new version.
        ///</summary>
        [<ApiMember(Description="Previous document will be used for registration of a new version.")>]
        member val PreviousDocument:DocumentReference = null with get,set

        ///<summary>
        ///Company
        ///</summary>
        [<ApiMember(Description="Company")>]
        member val Company:CompanyReference = null with get,set

        ///<summary>
        ///Relation
        ///</summary>
        [<ApiMember(Description="Relation")>]
        member val Relation:RelationReference = null with get,set

        ///<summary>
        ///Person
        ///</summary>
        [<ApiMember(Description="Person")>]
        member val Person:PersonReference = null with get,set

        ///<summary>
        ///Project
        ///</summary>
        [<ApiMember(Description="Project")>]
        member val Project:ProjectReference = null with get,set

        ///<summary>
        ///Sub projects
        ///</summary>
        [<ApiMember(AllowMultiple=true, Description="Sub projects")>]
        member val SubProjects:ResizeArray<SubProject> = new ResizeArray<SubProject>() with get,set

        ///<summary>
        ///Signers
        ///</summary>
        [<ApiMember(AllowMultiple=true, Description="Signers")>]
        member val Signers:ResizeArray<Signer> = new ResizeArray<Signer>() with get,set

        ///<summary>
        ///Bevat velden die gebruikt worden als additionele metadata voor het document, naast de vaste koppelingen zoals gebruiker, project en relatie.
        ///</summary>
        [<ApiMember(AllowMultiple=true, Description="Bevat velden die gebruikt worden als additionele metadata voor het document, naast de vaste koppelingen zoals gebruiker, project en relatie.")>]
        member val Fields:ResizeArray<Field> = new ResizeArray<Field>() with get,set

        ///<summary>
        ///Attachments die aan de documentregistratie gekoppeld moet worden.
        ///</summary>
        [<ApiMember(AllowMultiple=true, Description="Attachments die aan de documentregistratie gekoppeld moet worden.")>]
        member val Attachments:ResizeArray<Attachment> = new ResizeArray<Attachment>() with get,set

    [<AllowNullLiteral>]
    type CommonEntityBaseReference() = 
        member val ID:String = null with get,set
        member val ExternalID:String = null with get,set
        member val GlobalID:Nullable<Guid> = new Nullable<Guid>() with get,set

    type Direction =
        | Left2Right = 0
        | UpLeft2DownRight = 45
        | Up2Down = 90
        | UpRight2DownLeft = 135
        | Right2Left = 180
        | DownRight2UpLeft = 225
        | Down2Up = 270
        | DownLeft2UpRight = 315

    [<AllowNullLiteral>]
    type Watermark() = 
        member val Text:String = null with get,set
        member val FontFamilyText:String = null with get,set
        member val FontFamily:FontFamily = null with get,set
        member val Direction:Nullable<Direction> = new Nullable<Direction>() with get,set
        member val StrokeColorText:String = null with get,set
        member val StrokeColor:Color = new Color() with get,set
        member val FillColorText:String = null with get,set
        member val FillColor:Color = new Color() with get,set

    ///<summary>
    ///Generate custom Document (Don't use from inside VSTO's)
    ///</summary>
    [<Api(Description="Generate custom Document (Don't use from inside VSTO's)")>]
    [<AllowNullLiteral>]
    type GenerateDocument() = 
        ///<summary>
        ///DigiOffice user
        ///</summary>
        [<ApiMember(Description="DigiOffice user")>]
        member val User:UserReference = null with get,set

        ///<summary>
        ///Send the generated e-mail via the e-mail queue.
        ///</summary>
        [<ApiMember(Description="Send the generated e-mail via the e-mail queue.")>]
        member val SendMail:Boolean = new Boolean() with get,set

        ///<summary>
        ///ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.
        ///</summary>
        [<ApiMember(Description="ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.", IsRequired=true)>]
        member val ConfigurationSource:ConfigurationSource = null with get,set

        ///<summary>
        ///Set references to bind with Registration profile
        ///</summary>
        [<ApiMember(Description="Set references to bind with Registration profile", IsRequired=true)>]
        member val RegistrationMetaData:RegistrationMetaData = null with get,set

        ///<summary>
        ///Entity instance used as data source parent, if not exists default is Document registration instance.
        ///</summary>
        [<ApiMember(Description="Entity instance used as data source parent, if not exists default is Document registration instance.")>]
        member val DataSourceEntity:CommonEntityBaseReference = null with get,set

        ///<summary>
        ///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.
        ///</summary>
        [<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.")>]
        member val CustomData:String = null with get,set

        ///<summary>
        ///Insert a watermark into the document.
        ///</summary>
        [<ApiMember(Description="Insert a watermark into the document.")>]
        member val Watermark:Watermark = null with get,set

        ///<summary>
        ///Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.
        ///</summary>
        [<ApiMember(Description="Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.")>]
        member val OutputType:String = null with get,set

        ///<summary>
        ///Should update the document file.
        ///</summary>
        [<ApiMember(Description="Should update the document file.")>]
        member val ShouldUpdateDocumentFile:Boolean = new Boolean() with get,set

F# 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

{
	
}