/* Options:
Date: 2025-10-31 07:12:50
Version: 6.110
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://doapigw.baasbv.nl/api
//GlobalNamespace: 
//MakePartial: True
//MakeVirtual: True
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: True
//ExportValueTypes: False
IncludeTypes: GenerateDocument.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using System.Drawing;
using IDB.API.Entities;
using IDB.API.DocumentGenerator;
using IDB.DocumentGenerator.SDK.DTO;
using IDB.DocumentGenerator.SDK.Operations.General;
using IDB.API.DMS;
using IDB.DocumentGenerator.SDK.DTO.General;
using IDB.API.Common;
namespace IDB.API.Common
{
    public partial class Field
    {
        public virtual string Name { get; set; }
        public virtual string OldValue { get; set; }
        public virtual string Value { get; set; }
        public virtual string Title { get; set; }
    }
}
namespace IDB.API.DMS
{
    public enum DocInfoAction
    {
        Create,
        Register,
    }
    public enum DocInfoMode
    {
        New,
        Change,
        NewVersionPrimary,
        NewVersionSecondary,
        NewFromExistingDocument,
    }
    public enum DocInfoSilentMode
    {
        Off,
        AllowUserInteraction,
        DoNotAllowUserInteraction,
    }
    public partial class DocumentInfo
    {
        public virtual DocInfoAction Action { get; set; }
        public virtual DocInfoMode Mode { get; set; }
        public virtual string Version { get; set; }
        public virtual DocInfoSilentMode SilentMode { get; set; }
    }
}
namespace IDB.API.DocumentGenerator
{
    public partial class Attachment
    {
        public virtual string Name { get; set; }
        public virtual AttachmentData AttachmentData { get; set; }
    }
    public partial class AttachmentData
    {
        public virtual string ContentType { get; set; }
        ///
        ///Data base64-encoded zonder padding.
        ///
        public virtual string Data { get; set; }
    }
    public partial class ConfigurationSource
    {
        ///
        ///Document genereren op basis van een DocGenDocument.
        ///
        public virtual DocumentgeneratorDocumentReference DocumentgeneratorDocument { get; set; }
        ///
        ///Document genereren op basis van een RegistratieProfiel.
        ///
        public virtual RegistrationProfileReference RegistrationProfile { get; set; }
        ///
        ///Use existing document registration.
        ///
        public virtual DocumentReference RegisteredDocument { get; set; }
        ///
        ///Use documentInfo.
        ///
        public virtual DocumentInfo UnRegisteredDocument { get; set; }
        ///
        ///Use draft document registration.
        ///
        public virtual MessageQueueReference DraftDocumentRegistration { get; set; }
        public virtual Type DocumentgeneratorType { get; set; }
        ///
        ///DocumentgeneratorType voor bijvoorbeeld Word of Email.
        ///
        public virtual string DocumentgeneratorTypeName { get; set; }
        public virtual string TemplateExtension { get; set; }
        public virtual string OutputExtension { get; set; }
    }
    public enum Direction
    {
        Left2Right = 0,
        UpLeft2DownRight = 45,
        Up2Down = 90,
        UpRight2DownLeft = 135,
        Right2Left = 180,
        DownRight2UpLeft = 225,
        Down2Up = 270,
        DownLeft2UpRight = 315,
    }
    public partial class Signer
    {
        public Signer()
        {
            Signature = new List{};
            Initials = new List{};
        }
        public virtual string MainSignerPostFix { get; set; }
        public virtual UserReference User { get; set; }
        public virtual PersonReference Person { get; set; }
        public virtual RelationReference Relation { get; set; }
        public virtual ContactPersonReference ContactPerson { get; set; }
        public virtual DocumentReference RegisteredDocument { get; set; }
        public virtual SignerType Type { get; set; }
        public virtual string ClosingSentence { get; set; }
        public virtual string Name { get; set; }
        public virtual string Subsidiary { get; set; }
        public virtual string Function { get; set; }
        public virtual string Department { get; set; }
        public virtual string PhoneNumber { get; set; }
        public virtual string FaxNumber { get; set; }
        public virtual string MobileNumber { get; set; }
        public virtual string Email { get; set; }
        public virtual string CustomText { get; set; }
        public virtual List Signature { get; set; }
        public virtual List Initials { get; set; }
        public virtual bool? SignatureVisible { get; set; }
        public virtual bool? InitialsVisible { get; set; }
        public virtual bool? Visible { get; set; }
    }
    public enum SignerType
    {
        MainSigner,
        AdditionalSigner,
        ConfirmationDeclarant,
        AdditionalConfirmationDeclarant,
    }
    public partial class SubProject
    {
        public virtual ProjectReference Project { get; set; }
    }
    public enum VersioningType
    {
        New,
        Change,
        Primary,
        Secondary,
    }
    public partial class Watermark
    {
        public virtual string Text { get; set; }
        public virtual string FontFamilyText { get; set; }
        public virtual FontFamily FontFamily { get; set; }
        public virtual Direction? Direction { get; set; }
        public virtual string StrokeColorText { get; set; }
        public virtual Color StrokeColor { get; set; }
        public virtual string FillColorText { get; set; }
        public virtual Color FillColor { get; set; }
    }
}
namespace IDB.API.Entities
{
    public partial class CommonEntityBaseReference
        : IEntityReference
    {
        public virtual string ID { get; set; }
        public virtual string ExternalID { get; set; }
        public virtual Guid? GlobalID { get; set; }
    }
    public partial class CompanyReference
        : IEntityReference
    {
        public virtual int? ID { get; set; }
        public virtual int? Number { get; set; }
        public virtual Guid? GlobalID { get; set; }
        public virtual string ExternalID { get; set; }
    }
    public partial class ContactPersonReference
        : IEntityReference
    {
        public virtual int? ID { get; set; }
        public virtual Guid? GlobalID { get; set; }
        public virtual string ExternalID { get; set; }
        public virtual int? RelationID { get; set; }
        public virtual int? PersonID { get; set; }
    }
    public partial class DocumentgeneratorDocumentReference
        : IEntityReference
    {
        public virtual Guid? ID { get; set; }
        public virtual string Name { get; set; }
        public virtual Guid? GlobalID { get; set; }
    }
    public partial class DocumentReference
        : IEntityReference
    {
        public virtual Guid? ID { get; set; }
        public virtual string Code { get; set; }
        public virtual string VersionCode { get; set; }
        public virtual Guid? RootDocID { get; set; }
        public virtual string InternalInvoiceCode { get; set; }
        public virtual int? CompanyNumber { get; set; }
        public virtual string DocumentTypeID { get; set; }
        public virtual int? InvoiceType { get; set; }
        public virtual int? RegProfCatID { get; set; }
        public virtual Guid? GlobalID { get; set; }
        public virtual string ExternalID { get; set; }
        public virtual string ExternNr { get; set; }
        public virtual string ExternVersieNr { get; set; }
        public virtual string InternNummer { get; set; }
    }
    public partial interface IEntityReference
    {
        Guid? GlobalID { get; set; }
    }
    public partial class MessageQueueReference
        : IEntityReference
    {
        public virtual int? ID { get; set; }
        public virtual Guid? GlobalID { get; set; }
    }
    public partial class PersonReference
        : IEntityReference
    {
        public virtual int? ID { get; set; }
        public virtual int? Number { get; set; }
        public virtual Guid? GlobalID { get; set; }
        public virtual string ExternalID { get; set; }
    }
    public partial class ProjectReference
        : IEntityReference
    {
        public virtual int? ID { get; set; }
        public virtual string Code { get; set; }
        public virtual string TypeExternalID { get; set; }
        public virtual int? CompanyNumber { get; set; }
        public virtual Guid? GlobalID { get; set; }
        public virtual string ExternalID { get; set; }
    }
    public partial class RegistrationProfileReference
        : IEntityReference
    {
        public virtual Guid ID { get; set; }
        public virtual Guid? GlobalID { get; set; }
    }
    public partial class RelationReference
        : IEntityReference
    {
        public virtual int? ID { get; set; }
        public virtual int? CreditorNumber { get; set; }
        public virtual int? DebtorNumber { get; set; }
        public virtual string GlobalLocationNumber { get; set; }
        public virtual Guid? GlobalID { get; set; }
        public virtual string ExternalID { get; set; }
    }
    public partial class UserReference
        : IEntityReference
    {
        public virtual int? ID { get; set; }
        public virtual string LoginName { get; set; }
        public virtual string UserPrincipalName { get; set; }
        public virtual string FullName { get; set; }
        public virtual string EmailAddress { get; set; }
        public virtual Guid? GlobalID { get; set; }
    }
}
namespace IDB.DocumentGenerator.SDK.DTO
{
    public partial interface IDocument
    {
        ConfigurationSource ConfigurationSource { get; set; }
        CommonEntityBaseReference DataSourceEntity { get; set; }
        RegistrationMetaData RegistrationMetaData { get; set; }
        string CustomData { get; set; }
        Watermark Watermark { get; set; }
        string OutputType { get; set; }
    }
    public partial class RegistrationMetaData
    {
        public RegistrationMetaData()
        {
            SubProjects = new List{};
            Signers = new List{};
            Fields = new List{};
            Attachments = new List{};
        }
        ///
        ///Hoe moet het versiebeheer worden toegepast?
        ///
        [ApiMember(Description="Hoe moet het versiebeheer worden toegepast?")]
        public virtual VersioningType? Versioning { get; set; }
        ///
        ///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 virtual DocumentReference PreviousDocument { get; set; }
        ///
        ///Company
        ///
        [ApiMember(Description="Company")]
        public virtual CompanyReference Company { get; set; }
        ///
        ///Relation
        ///
        [ApiMember(Description="Relation")]
        public virtual RelationReference Relation { get; set; }
        ///
        ///Person
        ///
        [ApiMember(Description="Person")]
        public virtual PersonReference Person { get; set; }
        ///
        ///Project
        ///
        [ApiMember(Description="Project")]
        public virtual ProjectReference Project { get; set; }
        ///
        ///Sub projects
        ///
        [ApiMember(AllowMultiple=true, Description="Sub projects")]
        public virtual List SubProjects { get; set; }
        ///
        ///Signers
        ///
        [ApiMember(AllowMultiple=true, Description="Signers")]
        public virtual List Signers { get; set; }
        ///
        ///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 virtual List Fields { get; set; }
        ///
        ///Attachments die aan de documentregistratie gekoppeld moet worden.
        ///
        [ApiMember(AllowMultiple=true, Description="Attachments die aan de documentregistratie gekoppeld moet worden.")]
        public virtual List Attachments { get; set; }
    }
}
namespace IDB.DocumentGenerator.SDK.DTO.General
{
    public partial 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)]
        public virtual Guid DocumentID { get; set; }
    }
    public partial interface IGenerateDocumentResponse
    {
        Guid DocumentID { get; set; }
    }
}
namespace IDB.DocumentGenerator.SDK.Operations.General
{
    ///
    ///Generate custom Document (Don't use from inside VSTO's)
    ///
    [Api(Description="Generate custom Document (Don't use from inside VSTO's)")]
    public partial class GenerateDocument
        : IReturn, IGenerateDocument
    {
        ///
        ///DigiOffice user
        ///
        [ApiMember(Description="DigiOffice user")]
        public virtual UserReference User { get; set; }
        ///
        ///Send the generated e-mail via the e-mail queue.
        ///
        [ApiMember(Description="Send the generated e-mail via the e-mail queue.")]
        public virtual bool SendMail { get; set; }
        ///
        ///ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.
        ///
        [ApiMember(Description="ConfigurationSource: DocumentgeneratorDocument of RegistratieProfiel.", IsRequired=true)]
        public virtual ConfigurationSource ConfigurationSource { get; set; }
        ///
        ///Set references to bind with Registration profile
        ///
        [ApiMember(Description="Set references to bind with Registration profile", IsRequired=true)]
        public virtual RegistrationMetaData RegistrationMetaData { get; set; }
        ///
        ///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 virtual CommonEntityBaseReference DataSourceEntity { get; set; }
        ///
        ///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 virtual string CustomData { get; set; }
        ///
        ///Insert a watermark into the document.
        ///
        [ApiMember(Description="Insert a watermark into the document.")]
        public virtual Watermark Watermark { get; set; }
        ///
        ///Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.
        ///
        [ApiMember(Description="Type van het gegenereerde document, bijvoorbeeld: Doc, Docx, Pdf.")]
        public virtual string OutputType { get; set; }
        ///
        ///Should update the document file.
        ///
        [ApiMember(Description="Should update the document file.")]
        public virtual bool ShouldUpdateDocumentFile { get; set; }
    }
    public partial interface IGenerateDocument
        : IDocument
    {
        UserReference User { get; set; }
        bool SendMail { get; set; }
        bool ShouldUpdateDocumentFile { get; set; }
    }
}