DigiOffice Gateway Web Services

<back to all web services

GenerateDocument

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

Requires Authentication
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


class GenerateDocumentResponse implements IGenerateDocumentResponse, JsonSerializable
{
    public function __construct(
        /** @description 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 string */
        public string $DocumentID=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['DocumentID'])) $this->DocumentID = $o['DocumentID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->DocumentID)) $o['DocumentID'] = $this->DocumentID;
        return empty($o) ? new class(){} : $o;
    }
}

class UserReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $ID=null,
        /** @var string|null */
        public ?string $LoginName=null,
        /** @var string|null */
        public ?string $UserPrincipalName=null,
        /** @var string|null */
        public ?string $FullName=null,
        /** @var string|null */
        public ?string $EmailAddress=null,
        /** @var string|null */
        public ?string $GlobalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['LoginName'])) $this->LoginName = $o['LoginName'];
        if (isset($o['UserPrincipalName'])) $this->UserPrincipalName = $o['UserPrincipalName'];
        if (isset($o['FullName'])) $this->FullName = $o['FullName'];
        if (isset($o['EmailAddress'])) $this->EmailAddress = $o['EmailAddress'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->LoginName)) $o['LoginName'] = $this->LoginName;
        if (isset($this->UserPrincipalName)) $o['UserPrincipalName'] = $this->UserPrincipalName;
        if (isset($this->FullName)) $o['FullName'] = $this->FullName;
        if (isset($this->EmailAddress)) $o['EmailAddress'] = $this->EmailAddress;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        return empty($o) ? new class(){} : $o;
    }
}

class DocumentgeneratorDocumentReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $ID=null,
        /** @var string|null */
        public ?string $Name=null,
        /** @var string|null */
        public ?string $GlobalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        return empty($o) ? new class(){} : $o;
    }
}

class RegistrationProfileReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $ID='',
        /** @var string|null */
        public ?string $GlobalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        return empty($o) ? new class(){} : $o;
    }
}

class DocumentReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $ID=null,
        /** @var string|null */
        public ?string $Code=null,
        /** @var string|null */
        public ?string $VersionCode=null,
        /** @var string|null */
        public ?string $RootDocID=null,
        /** @var string|null */
        public ?string $InternalInvoiceCode=null,
        /** @var int|null */
        public ?int $CompanyNumber=null,
        /** @var string|null */
        public ?string $DocumentTypeID=null,
        /** @var int|null */
        public ?int $InvoiceType=null,
        /** @var int|null */
        public ?int $RegProfCatID=null,
        /** @var string|null */
        public ?string $GlobalID=null,
        /** @var string|null */
        public ?string $ExternalID=null,
        /** @var string|null */
        public ?string $ExternNr=null,
        /** @var string|null */
        public ?string $ExternVersieNr=null,
        /** @var string|null */
        public ?string $InternNummer=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['Code'])) $this->Code = $o['Code'];
        if (isset($o['VersionCode'])) $this->VersionCode = $o['VersionCode'];
        if (isset($o['RootDocID'])) $this->RootDocID = $o['RootDocID'];
        if (isset($o['InternalInvoiceCode'])) $this->InternalInvoiceCode = $o['InternalInvoiceCode'];
        if (isset($o['CompanyNumber'])) $this->CompanyNumber = $o['CompanyNumber'];
        if (isset($o['DocumentTypeID'])) $this->DocumentTypeID = $o['DocumentTypeID'];
        if (isset($o['InvoiceType'])) $this->InvoiceType = $o['InvoiceType'];
        if (isset($o['RegProfCatID'])) $this->RegProfCatID = $o['RegProfCatID'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
        if (isset($o['ExternalID'])) $this->ExternalID = $o['ExternalID'];
        if (isset($o['ExternNr'])) $this->ExternNr = $o['ExternNr'];
        if (isset($o['ExternVersieNr'])) $this->ExternVersieNr = $o['ExternVersieNr'];
        if (isset($o['InternNummer'])) $this->InternNummer = $o['InternNummer'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->Code)) $o['Code'] = $this->Code;
        if (isset($this->VersionCode)) $o['VersionCode'] = $this->VersionCode;
        if (isset($this->RootDocID)) $o['RootDocID'] = $this->RootDocID;
        if (isset($this->InternalInvoiceCode)) $o['InternalInvoiceCode'] = $this->InternalInvoiceCode;
        if (isset($this->CompanyNumber)) $o['CompanyNumber'] = $this->CompanyNumber;
        if (isset($this->DocumentTypeID)) $o['DocumentTypeID'] = $this->DocumentTypeID;
        if (isset($this->InvoiceType)) $o['InvoiceType'] = $this->InvoiceType;
        if (isset($this->RegProfCatID)) $o['RegProfCatID'] = $this->RegProfCatID;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        if (isset($this->ExternalID)) $o['ExternalID'] = $this->ExternalID;
        if (isset($this->ExternNr)) $o['ExternNr'] = $this->ExternNr;
        if (isset($this->ExternVersieNr)) $o['ExternVersieNr'] = $this->ExternVersieNr;
        if (isset($this->InternNummer)) $o['InternNummer'] = $this->InternNummer;
        return empty($o) ? new class(){} : $o;
    }
}

enum DocInfoAction : string
{
    case Create = 'Create';
    case Register = 'Register';
}

enum DocInfoMode : string
{
    case New = 'New';
    case Change = 'Change';
    case NewVersionPrimary = 'NewVersionPrimary';
    case NewVersionSecondary = 'NewVersionSecondary';
    case NewFromExistingDocument = 'NewFromExistingDocument';
}

enum DocInfoSilentMode : string
{
    case Off = 'Off';
    case AllowUserInteraction = 'AllowUserInteraction';
    case DoNotAllowUserInteraction = 'DoNotAllowUserInteraction';
}

class DocumentInfo implements JsonSerializable
{
    public function __construct(
        /** @var DocInfoAction|null */
        public ?DocInfoAction $Action=null,
        /** @var DocInfoMode|null */
        public ?DocInfoMode $Mode=null,
        /** @var string|null */
        public ?string $Version=null,
        /** @var DocInfoSilentMode|null */
        public ?DocInfoSilentMode $SilentMode=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Action'])) $this->Action = JsonConverters::from('DocInfoAction', $o['Action']);
        if (isset($o['Mode'])) $this->Mode = JsonConverters::from('DocInfoMode', $o['Mode']);
        if (isset($o['Version'])) $this->Version = $o['Version'];
        if (isset($o['SilentMode'])) $this->SilentMode = JsonConverters::from('DocInfoSilentMode', $o['SilentMode']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Action)) $o['Action'] = JsonConverters::to('DocInfoAction', $this->Action);
        if (isset($this->Mode)) $o['Mode'] = JsonConverters::to('DocInfoMode', $this->Mode);
        if (isset($this->Version)) $o['Version'] = $this->Version;
        if (isset($this->SilentMode)) $o['SilentMode'] = JsonConverters::to('DocInfoSilentMode', $this->SilentMode);
        return empty($o) ? new class(){} : $o;
    }
}

class MessageQueueReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $ID=null,
        /** @var string|null */
        public ?string $GlobalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        return empty($o) ? new class(){} : $o;
    }
}

class ConfigurationSource implements JsonSerializable
{
    public function __construct(
        /** @description Document genereren op basis van een DocGenDocument. */
        /** @var DocumentgeneratorDocumentReference|null */
        public ?DocumentgeneratorDocumentReference $DocumentgeneratorDocument=null,
        /** @description Document genereren op basis van een RegistratieProfiel. */
        /** @var RegistrationProfileReference|null */
        public ?RegistrationProfileReference $RegistrationProfile=null,
        /** @description Use existing document registration. */
        /** @var DocumentReference|null */
        public ?DocumentReference $RegisteredDocument=null,
        /** @description Use documentInfo. */
        /** @var DocumentInfo|null */
        public ?DocumentInfo $UnRegisteredDocument=null,
        /** @description Use draft document registration. */
        /** @var MessageQueueReference|null */
        public ?MessageQueueReference $DraftDocumentRegistration=null,
        /** @var string|null */
        public ?string $DocumentgeneratorType=null,
        /** @description DocumentgeneratorType voor bijvoorbeeld Word of Email. */
        /** @var string|null */
        public ?string $DocumentgeneratorTypeName=null,
        /** @var string|null */
        public ?string $TemplateExtension=null,
        /** @var string|null */
        public ?string $OutputExtension=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['DocumentgeneratorDocument'])) $this->DocumentgeneratorDocument = JsonConverters::from('DocumentgeneratorDocumentReference', $o['DocumentgeneratorDocument']);
        if (isset($o['RegistrationProfile'])) $this->RegistrationProfile = JsonConverters::from('RegistrationProfileReference', $o['RegistrationProfile']);
        if (isset($o['RegisteredDocument'])) $this->RegisteredDocument = JsonConverters::from('DocumentReference', $o['RegisteredDocument']);
        if (isset($o['UnRegisteredDocument'])) $this->UnRegisteredDocument = JsonConverters::from('DocumentInfo', $o['UnRegisteredDocument']);
        if (isset($o['DraftDocumentRegistration'])) $this->DraftDocumentRegistration = JsonConverters::from('MessageQueueReference', $o['DraftDocumentRegistration']);
        if (isset($o['DocumentgeneratorType'])) $this->DocumentgeneratorType = JsonConverters::from('string', $o['DocumentgeneratorType']);
        if (isset($o['DocumentgeneratorTypeName'])) $this->DocumentgeneratorTypeName = $o['DocumentgeneratorTypeName'];
        if (isset($o['TemplateExtension'])) $this->TemplateExtension = $o['TemplateExtension'];
        if (isset($o['OutputExtension'])) $this->OutputExtension = $o['OutputExtension'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->DocumentgeneratorDocument)) $o['DocumentgeneratorDocument'] = JsonConverters::to('DocumentgeneratorDocumentReference', $this->DocumentgeneratorDocument);
        if (isset($this->RegistrationProfile)) $o['RegistrationProfile'] = JsonConverters::to('RegistrationProfileReference', $this->RegistrationProfile);
        if (isset($this->RegisteredDocument)) $o['RegisteredDocument'] = JsonConverters::to('DocumentReference', $this->RegisteredDocument);
        if (isset($this->UnRegisteredDocument)) $o['UnRegisteredDocument'] = JsonConverters::to('DocumentInfo', $this->UnRegisteredDocument);
        if (isset($this->DraftDocumentRegistration)) $o['DraftDocumentRegistration'] = JsonConverters::to('MessageQueueReference', $this->DraftDocumentRegistration);
        if (isset($this->DocumentgeneratorType)) $o['DocumentgeneratorType'] = JsonConverters::to('string', $this->DocumentgeneratorType);
        if (isset($this->DocumentgeneratorTypeName)) $o['DocumentgeneratorTypeName'] = $this->DocumentgeneratorTypeName;
        if (isset($this->TemplateExtension)) $o['TemplateExtension'] = $this->TemplateExtension;
        if (isset($this->OutputExtension)) $o['OutputExtension'] = $this->OutputExtension;
        return empty($o) ? new class(){} : $o;
    }
}

enum VersioningType : string
{
    case New = 'New';
    case Change = 'Change';
    case Primary = 'Primary';
    case Secondary = 'Secondary';
}

class CompanyReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $ID=null,
        /** @var int|null */
        public ?int $Number=null,
        /** @var string|null */
        public ?string $GlobalID=null,
        /** @var string|null */
        public ?string $ExternalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['Number'])) $this->Number = $o['Number'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
        if (isset($o['ExternalID'])) $this->ExternalID = $o['ExternalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->Number)) $o['Number'] = $this->Number;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        if (isset($this->ExternalID)) $o['ExternalID'] = $this->ExternalID;
        return empty($o) ? new class(){} : $o;
    }
}

class RelationReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $ID=null,
        /** @var int|null */
        public ?int $CreditorNumber=null,
        /** @var int|null */
        public ?int $DebtorNumber=null,
        /** @var string|null */
        public ?string $GlobalLocationNumber=null,
        /** @var string|null */
        public ?string $GlobalID=null,
        /** @var string|null */
        public ?string $ExternalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['CreditorNumber'])) $this->CreditorNumber = $o['CreditorNumber'];
        if (isset($o['DebtorNumber'])) $this->DebtorNumber = $o['DebtorNumber'];
        if (isset($o['GlobalLocationNumber'])) $this->GlobalLocationNumber = $o['GlobalLocationNumber'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
        if (isset($o['ExternalID'])) $this->ExternalID = $o['ExternalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->CreditorNumber)) $o['CreditorNumber'] = $this->CreditorNumber;
        if (isset($this->DebtorNumber)) $o['DebtorNumber'] = $this->DebtorNumber;
        if (isset($this->GlobalLocationNumber)) $o['GlobalLocationNumber'] = $this->GlobalLocationNumber;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        if (isset($this->ExternalID)) $o['ExternalID'] = $this->ExternalID;
        return empty($o) ? new class(){} : $o;
    }
}

class PersonReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $ID=null,
        /** @var int|null */
        public ?int $Number=null,
        /** @var string|null */
        public ?string $GlobalID=null,
        /** @var string|null */
        public ?string $ExternalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['Number'])) $this->Number = $o['Number'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
        if (isset($o['ExternalID'])) $this->ExternalID = $o['ExternalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->Number)) $o['Number'] = $this->Number;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        if (isset($this->ExternalID)) $o['ExternalID'] = $this->ExternalID;
        return empty($o) ? new class(){} : $o;
    }
}

class ProjectReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $ID=null,
        /** @var string|null */
        public ?string $Code=null,
        /** @var string|null */
        public ?string $TypeExternalID=null,
        /** @var int|null */
        public ?int $CompanyNumber=null,
        /** @var string|null */
        public ?string $GlobalID=null,
        /** @var string|null */
        public ?string $ExternalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['Code'])) $this->Code = $o['Code'];
        if (isset($o['TypeExternalID'])) $this->TypeExternalID = $o['TypeExternalID'];
        if (isset($o['CompanyNumber'])) $this->CompanyNumber = $o['CompanyNumber'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
        if (isset($o['ExternalID'])) $this->ExternalID = $o['ExternalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->Code)) $o['Code'] = $this->Code;
        if (isset($this->TypeExternalID)) $o['TypeExternalID'] = $this->TypeExternalID;
        if (isset($this->CompanyNumber)) $o['CompanyNumber'] = $this->CompanyNumber;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        if (isset($this->ExternalID)) $o['ExternalID'] = $this->ExternalID;
        return empty($o) ? new class(){} : $o;
    }
}

class SubProject implements JsonSerializable
{
    public function __construct(
        /** @var ProjectReference|null */
        public ?ProjectReference $Project=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Project'])) $this->Project = JsonConverters::from('ProjectReference', $o['Project']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Project)) $o['Project'] = JsonConverters::to('ProjectReference', $this->Project);
        return empty($o) ? new class(){} : $o;
    }
}

class ContactPersonReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var int|null */
        public ?int $ID=null,
        /** @var string|null */
        public ?string $GlobalID=null,
        /** @var string|null */
        public ?string $ExternalID=null,
        /** @var int|null */
        public ?int $RelationID=null,
        /** @var int|null */
        public ?int $PersonID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
        if (isset($o['ExternalID'])) $this->ExternalID = $o['ExternalID'];
        if (isset($o['RelationID'])) $this->RelationID = $o['RelationID'];
        if (isset($o['PersonID'])) $this->PersonID = $o['PersonID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        if (isset($this->ExternalID)) $o['ExternalID'] = $this->ExternalID;
        if (isset($this->RelationID)) $o['RelationID'] = $this->RelationID;
        if (isset($this->PersonID)) $o['PersonID'] = $this->PersonID;
        return empty($o) ? new class(){} : $o;
    }
}

enum SignerType : string
{
    case MainSigner = 'MainSigner';
    case AdditionalSigner = 'AdditionalSigner';
    case ConfirmationDeclarant = 'ConfirmationDeclarant';
    case AdditionalConfirmationDeclarant = 'AdditionalConfirmationDeclarant';
}

class Signer implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $MainSignerPostFix=null,
        /** @var UserReference|null */
        public ?UserReference $User=null,
        /** @var PersonReference|null */
        public ?PersonReference $Person=null,
        /** @var RelationReference|null */
        public ?RelationReference $Relation=null,
        /** @var ContactPersonReference|null */
        public ?ContactPersonReference $ContactPerson=null,
        /** @var DocumentReference|null */
        public ?DocumentReference $RegisteredDocument=null,
        /** @var SignerType|null */
        public ?SignerType $Type=null,
        /** @var string|null */
        public ?string $ClosingSentence=null,
        /** @var string|null */
        public ?string $Name=null,
        /** @var string|null */
        public ?string $Subsidiary=null,
        /** @var string|null */
        public ?string $Function=null,
        /** @var string|null */
        public ?string $Department=null,
        /** @var string|null */
        public ?string $PhoneNumber=null,
        /** @var string|null */
        public ?string $FaxNumber=null,
        /** @var string|null */
        public ?string $MobileNumber=null,
        /** @var string|null */
        public ?string $Email=null,
        /** @var string|null */
        public ?string $CustomText=null,
        /** @var array<string>|null */
        public ?array $Signature=null,
        /** @var array<string>|null */
        public ?array $Initials=null,
        /** @var bool|null */
        public ?bool $SignatureVisible=null,
        /** @var bool|null */
        public ?bool $InitialsVisible=null,
        /** @var bool|null */
        public ?bool $Visible=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['MainSignerPostFix'])) $this->MainSignerPostFix = $o['MainSignerPostFix'];
        if (isset($o['User'])) $this->User = JsonConverters::from('UserReference', $o['User']);
        if (isset($o['Person'])) $this->Person = JsonConverters::from('PersonReference', $o['Person']);
        if (isset($o['Relation'])) $this->Relation = JsonConverters::from('RelationReference', $o['Relation']);
        if (isset($o['ContactPerson'])) $this->ContactPerson = JsonConverters::from('ContactPersonReference', $o['ContactPerson']);
        if (isset($o['RegisteredDocument'])) $this->RegisteredDocument = JsonConverters::from('DocumentReference', $o['RegisteredDocument']);
        if (isset($o['Type'])) $this->Type = JsonConverters::from('SignerType', $o['Type']);
        if (isset($o['ClosingSentence'])) $this->ClosingSentence = $o['ClosingSentence'];
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['Subsidiary'])) $this->Subsidiary = $o['Subsidiary'];
        if (isset($o['Function'])) $this->Function = $o['Function'];
        if (isset($o['Department'])) $this->Department = $o['Department'];
        if (isset($o['PhoneNumber'])) $this->PhoneNumber = $o['PhoneNumber'];
        if (isset($o['FaxNumber'])) $this->FaxNumber = $o['FaxNumber'];
        if (isset($o['MobileNumber'])) $this->MobileNumber = $o['MobileNumber'];
        if (isset($o['Email'])) $this->Email = $o['Email'];
        if (isset($o['CustomText'])) $this->CustomText = $o['CustomText'];
        if (isset($o['Signature'])) $this->Signature = JsonConverters::fromArray('string', $o['Signature']);
        if (isset($o['Initials'])) $this->Initials = JsonConverters::fromArray('string', $o['Initials']);
        if (isset($o['SignatureVisible'])) $this->SignatureVisible = $o['SignatureVisible'];
        if (isset($o['InitialsVisible'])) $this->InitialsVisible = $o['InitialsVisible'];
        if (isset($o['Visible'])) $this->Visible = $o['Visible'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->MainSignerPostFix)) $o['MainSignerPostFix'] = $this->MainSignerPostFix;
        if (isset($this->User)) $o['User'] = JsonConverters::to('UserReference', $this->User);
        if (isset($this->Person)) $o['Person'] = JsonConverters::to('PersonReference', $this->Person);
        if (isset($this->Relation)) $o['Relation'] = JsonConverters::to('RelationReference', $this->Relation);
        if (isset($this->ContactPerson)) $o['ContactPerson'] = JsonConverters::to('ContactPersonReference', $this->ContactPerson);
        if (isset($this->RegisteredDocument)) $o['RegisteredDocument'] = JsonConverters::to('DocumentReference', $this->RegisteredDocument);
        if (isset($this->Type)) $o['Type'] = JsonConverters::to('SignerType', $this->Type);
        if (isset($this->ClosingSentence)) $o['ClosingSentence'] = $this->ClosingSentence;
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->Subsidiary)) $o['Subsidiary'] = $this->Subsidiary;
        if (isset($this->Function)) $o['Function'] = $this->Function;
        if (isset($this->Department)) $o['Department'] = $this->Department;
        if (isset($this->PhoneNumber)) $o['PhoneNumber'] = $this->PhoneNumber;
        if (isset($this->FaxNumber)) $o['FaxNumber'] = $this->FaxNumber;
        if (isset($this->MobileNumber)) $o['MobileNumber'] = $this->MobileNumber;
        if (isset($this->Email)) $o['Email'] = $this->Email;
        if (isset($this->CustomText)) $o['CustomText'] = $this->CustomText;
        if (isset($this->Signature)) $o['Signature'] = JsonConverters::toArray('string', $this->Signature);
        if (isset($this->Initials)) $o['Initials'] = JsonConverters::toArray('string', $this->Initials);
        if (isset($this->SignatureVisible)) $o['SignatureVisible'] = $this->SignatureVisible;
        if (isset($this->InitialsVisible)) $o['InitialsVisible'] = $this->InitialsVisible;
        if (isset($this->Visible)) $o['Visible'] = $this->Visible;
        return empty($o) ? new class(){} : $o;
    }
}

class Field implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $Name=null,
        /** @var string|null */
        public ?string $OldValue=null,
        /** @var string|null */
        public ?string $Value=null,
        /** @var string|null */
        public ?string $Title=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['OldValue'])) $this->OldValue = $o['OldValue'];
        if (isset($o['Value'])) $this->Value = $o['Value'];
        if (isset($o['Title'])) $this->Title = $o['Title'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->OldValue)) $o['OldValue'] = $this->OldValue;
        if (isset($this->Value)) $o['Value'] = $this->Value;
        if (isset($this->Title)) $o['Title'] = $this->Title;
        return empty($o) ? new class(){} : $o;
    }
}

class AttachmentData implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $ContentType=null,
        /** @description Data base64-encoded zonder padding. */
        /** @var string|null */
        public ?string $Data=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ContentType'])) $this->ContentType = $o['ContentType'];
        if (isset($o['Data'])) $this->Data = $o['Data'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ContentType)) $o['ContentType'] = $this->ContentType;
        if (isset($this->Data)) $o['Data'] = $this->Data;
        return empty($o) ? new class(){} : $o;
    }
}

class Attachment implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $Name=null,
        /** @var AttachmentData|null */
        public ?AttachmentData $AttachmentData=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['AttachmentData'])) $this->AttachmentData = JsonConverters::from('AttachmentData', $o['AttachmentData']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->AttachmentData)) $o['AttachmentData'] = JsonConverters::to('AttachmentData', $this->AttachmentData);
        return empty($o) ? new class(){} : $o;
    }
}

class RegistrationMetaData implements JsonSerializable
{
    public function __construct(
        /** @description Hoe moet het versiebeheer worden toegepast? */
        // @ApiMember(Description="Hoe moet het versiebeheer worden toegepast?")
        /** @var VersioningType|null */
        public ?VersioningType $Versioning=null,

        /** @description 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 DocumentReference|null */
        public ?DocumentReference $PreviousDocument=null,

        /** @description Company */
        // @ApiMember(Description="Company")
        /** @var CompanyReference|null */
        public ?CompanyReference $Company=null,

        /** @description Relation */
        // @ApiMember(Description="Relation")
        /** @var RelationReference|null */
        public ?RelationReference $Relation=null,

        /** @description Person */
        // @ApiMember(Description="Person")
        /** @var PersonReference|null */
        public ?PersonReference $Person=null,

        /** @description Project */
        // @ApiMember(Description="Project")
        /** @var ProjectReference|null */
        public ?ProjectReference $Project=null,

        /** @description Sub projects */
        // @ApiMember(AllowMultiple=true, Description="Sub projects")
        /** @var array<SubProject>|null */
        public ?array $SubProjects=null,

        /** @description Signers */
        // @ApiMember(AllowMultiple=true, Description="Signers")
        /** @var array<Signer>|null */
        public ?array $Signers=null,

        /** @description 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 array<Field>|null */
        public ?array $Fields=null,

        /** @description Attachments die aan de documentregistratie gekoppeld moet worden. */
        // @ApiMember(AllowMultiple=true, Description="Attachments die aan de documentregistratie gekoppeld moet worden.")
        /** @var array<Attachment>|null */
        public ?array $Attachments=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Versioning'])) $this->Versioning = JsonConverters::from('VersioningType', $o['Versioning']);
        if (isset($o['PreviousDocument'])) $this->PreviousDocument = JsonConverters::from('DocumentReference', $o['PreviousDocument']);
        if (isset($o['Company'])) $this->Company = JsonConverters::from('CompanyReference', $o['Company']);
        if (isset($o['Relation'])) $this->Relation = JsonConverters::from('RelationReference', $o['Relation']);
        if (isset($o['Person'])) $this->Person = JsonConverters::from('PersonReference', $o['Person']);
        if (isset($o['Project'])) $this->Project = JsonConverters::from('ProjectReference', $o['Project']);
        if (isset($o['SubProjects'])) $this->SubProjects = JsonConverters::fromArray('SubProject', $o['SubProjects']);
        if (isset($o['Signers'])) $this->Signers = JsonConverters::fromArray('Signer', $o['Signers']);
        if (isset($o['Fields'])) $this->Fields = JsonConverters::fromArray('Field', $o['Fields']);
        if (isset($o['Attachments'])) $this->Attachments = JsonConverters::fromArray('Attachment', $o['Attachments']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Versioning)) $o['Versioning'] = JsonConverters::to('VersioningType', $this->Versioning);
        if (isset($this->PreviousDocument)) $o['PreviousDocument'] = JsonConverters::to('DocumentReference', $this->PreviousDocument);
        if (isset($this->Company)) $o['Company'] = JsonConverters::to('CompanyReference', $this->Company);
        if (isset($this->Relation)) $o['Relation'] = JsonConverters::to('RelationReference', $this->Relation);
        if (isset($this->Person)) $o['Person'] = JsonConverters::to('PersonReference', $this->Person);
        if (isset($this->Project)) $o['Project'] = JsonConverters::to('ProjectReference', $this->Project);
        if (isset($this->SubProjects)) $o['SubProjects'] = JsonConverters::toArray('SubProject', $this->SubProjects);
        if (isset($this->Signers)) $o['Signers'] = JsonConverters::toArray('Signer', $this->Signers);
        if (isset($this->Fields)) $o['Fields'] = JsonConverters::toArray('Field', $this->Fields);
        if (isset($this->Attachments)) $o['Attachments'] = JsonConverters::toArray('Attachment', $this->Attachments);
        return empty($o) ? new class(){} : $o;
    }
}

class CommonEntityBaseReference implements IEntityReference, JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $ID=null,
        /** @var string|null */
        public ?string $ExternalID=null,
        /** @var string|null */
        public ?string $GlobalID=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['ExternalID'])) $this->ExternalID = $o['ExternalID'];
        if (isset($o['GlobalID'])) $this->GlobalID = $o['GlobalID'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->ExternalID)) $o['ExternalID'] = $this->ExternalID;
        if (isset($this->GlobalID)) $o['GlobalID'] = $this->GlobalID;
        return empty($o) ? new class(){} : $o;
    }
}

enum Direction : int
{
    case Left2Right = 0;
    case UpLeft2DownRight = 45;
    case Up2Down = 90;
    case UpRight2DownLeft = 135;
    case Right2Left = 180;
    case DownRight2UpLeft = 225;
    case Down2Up = 270;
    case DownLeft2UpRight = 315;
}

class Watermark implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $Text=null,
        /** @var string|null */
        public ?string $FontFamilyName=null,
        /** @var Direction|null */
        public ?Direction $Direction=null,
        /** @var string|null */
        public ?string $StrokeColorText=null,
        /** @var Color|null */
        public ?Color $StrokeColor=null,
        /** @var string|null */
        public ?string $FillColorText=null,
        /** @var Color|null */
        public ?Color $FillColor=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Text'])) $this->Text = $o['Text'];
        if (isset($o['FontFamilyName'])) $this->FontFamilyName = $o['FontFamilyName'];
        if (isset($o['Direction'])) $this->Direction = JsonConverters::from('Direction', $o['Direction']);
        if (isset($o['StrokeColorText'])) $this->StrokeColorText = $o['StrokeColorText'];
        if (isset($o['StrokeColor'])) $this->StrokeColor = $o['StrokeColor'];
        if (isset($o['FillColorText'])) $this->FillColorText = $o['FillColorText'];
        if (isset($o['FillColor'])) $this->FillColor = $o['FillColor'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Text)) $o['Text'] = $this->Text;
        if (isset($this->FontFamilyName)) $o['FontFamilyName'] = $this->FontFamilyName;
        if (isset($this->Direction)) $o['Direction'] = JsonConverters::to('Direction', $this->Direction);
        if (isset($this->StrokeColorText)) $o['StrokeColorText'] = $this->StrokeColorText;
        if (isset($this->StrokeColor)) $o['StrokeColor'] = $this->StrokeColor;
        if (isset($this->FillColorText)) $o['FillColorText'] = $this->FillColorText;
        if (isset($this->FillColor)) $o['FillColor'] = $this->FillColor;
        return empty($o) ? new class(){} : $o;
    }
}

/** @description Generate custom Document (Don't use from inside VSTO's) */
// @Api(Description="Generate custom Document (Don't use from inside VSTO's)")
class GenerateDocument implements IGenerateDocument, JsonSerializable
{
    public function __construct(
        /** @description DigiOffice user */
        // @ApiMember(Description="DigiOffice user")
        /** @var UserReference|null */
        public ?UserReference $User=null,

        /** @description Send the generated e-mail via the e-mail queue. */
        // @ApiMember(Description="Send the generated e-mail via the e-mail queue.")
        /** @var bool|null */
        public ?bool $SendMail=null,

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

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

        /** @description 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 CommonEntityBaseReference|null */
        public ?CommonEntityBaseReference $DataSourceEntity=null,

        /** @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. */
        // @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 string|null */
        public ?string $CustomData=null,

        /** @description Insert a watermark into the document. */
        // @ApiMember(Description="Insert a watermark into the document.")
        /** @var Watermark|null */
        public ?Watermark $Watermark=null,

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

        /** @description Should update the document file. */
        // @ApiMember(Description="Should update the document file.")
        /** @var bool|null */
        public ?bool $ShouldUpdateDocumentFile=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['User'])) $this->User = JsonConverters::from('UserReference', $o['User']);
        if (isset($o['SendMail'])) $this->SendMail = $o['SendMail'];
        if (isset($o['ConfigurationSource'])) $this->ConfigurationSource = JsonConverters::from('ConfigurationSource', $o['ConfigurationSource']);
        if (isset($o['RegistrationMetaData'])) $this->RegistrationMetaData = JsonConverters::from('RegistrationMetaData', $o['RegistrationMetaData']);
        if (isset($o['DataSourceEntity'])) $this->DataSourceEntity = JsonConverters::from('CommonEntityBaseReference', $o['DataSourceEntity']);
        if (isset($o['CustomData'])) $this->CustomData = $o['CustomData'];
        if (isset($o['Watermark'])) $this->Watermark = JsonConverters::from('Watermark', $o['Watermark']);
        if (isset($o['OutputType'])) $this->OutputType = $o['OutputType'];
        if (isset($o['ShouldUpdateDocumentFile'])) $this->ShouldUpdateDocumentFile = $o['ShouldUpdateDocumentFile'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->User)) $o['User'] = JsonConverters::to('UserReference', $this->User);
        if (isset($this->SendMail)) $o['SendMail'] = $this->SendMail;
        if (isset($this->ConfigurationSource)) $o['ConfigurationSource'] = JsonConverters::to('ConfigurationSource', $this->ConfigurationSource);
        if (isset($this->RegistrationMetaData)) $o['RegistrationMetaData'] = JsonConverters::to('RegistrationMetaData', $this->RegistrationMetaData);
        if (isset($this->DataSourceEntity)) $o['DataSourceEntity'] = JsonConverters::to('CommonEntityBaseReference', $this->DataSourceEntity);
        if (isset($this->CustomData)) $o['CustomData'] = $this->CustomData;
        if (isset($this->Watermark)) $o['Watermark'] = JsonConverters::to('Watermark', $this->Watermark);
        if (isset($this->OutputType)) $o['OutputType'] = $this->OutputType;
        if (isset($this->ShouldUpdateDocumentFile)) $o['ShouldUpdateDocumentFile'] = $this->ShouldUpdateDocumentFile;
        return empty($o) ? new class(){} : $o;
    }
}

PHP 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: dogw.klokgroep.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,
		FontFamilyName: String,
		Direction: Left2Right
	},
	OutputType: String,
	ShouldUpdateDocumentFile: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	
}