/* Options:
Date: 2025-11-04 03:40:30
Version: 8.60
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://reportfiling.staging.pwc.de
//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: False
//ExportValueTypes: False
IncludeTypes: UpdateElmaCredentialAsync.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using System.Xml.Schema;
using PwC.Elmaas.Core.Domain.Concretes.Models;
using PwC.Elmaas.Core.Domain.Contracts.Models;
using PwC.Elmaas.Core.Services.Contracts.Credentials.Requests;
using PwC.Elmaas.Core.Services.Contracts.Credentials.Responses;
namespace PwC.Elmaas.Core.Domain.Concretes.Models
{
    ///
    ///Represents the credentials of a user to authenticate the access of an ELMA server.
    ///
    [Api(Description="Represents the credentials of a user to authenticate the access of an ELMA server.")]
    public partial class ElmaCredential
        : IElmaCredential
    {
        ///
        ///The unique identifier of this instance.  This identifer is only relevant in the context of data storage and retrieval.
        ///
        [ApiMember(Description="The unique identifier of this instance.  This identifer is only relevant in the context of data storage and retrieval.", IsRequired=true, Name="Id")]
        public virtual string Id { get; set; }
        ///
        ///The security certificate to authenticate the user and grant access to the ELMA server.  This certificate is generated from the BZSt-issued *.pfx BOP certificate. More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)
        ///
        [ApiMember(Description="The security certificate to authenticate the user and grant access to the ELMA server.  This certificate is generated from the BZSt-issued *.pfx BOP certificate. More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)", IsRequired=true, Name="Certificate")]
        [Required]
        [StringLength(int.MaxValue)]
        public virtual PemCertificate Certificate { get; set; }
        ///
        ///The BZSt (Bundeszentralamt für Steuern) - tax number of the user. 11-character text field that may only consist of two capital letters and 9 digits (0-9).  The fiscal authority BZSt provides this number during registration at the BOP (BZSt-Online Portal - https://www.elster.de/bportal/start).  The number is available in the private area of the BOP user account under "My BOP" under the "Registration Information"
        ///
        [ApiMember(Description="The BZSt (Bundeszentralamt für Steuern) - tax number of the user. 11-character text field that may only consist of two capital letters and 9 digits (0-9).  The fiscal authority BZSt provides this number during registration at the BOP (BZSt-Online Portal - https://www.elster.de/bportal/start).  The number is available in the private area of the BOP user account under \"My BOP\" under the \"Registration Information\"", IsRequired=true, Name="AuthSteuernummer")]
        [Required]
        [StringLength(11)]
        public virtual string AuthSteuernummer { get; set; }
        ///
        ///The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9).
        ///
        [ApiMember(Description="The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9).", IsRequired=true, Name="AccountId")]
        [Required]
        [StringLength(10)]
        public virtual string AccountId { get; set; }
        ///
        ///The password to protect the certificate from unauthorized access.
        ///
        [ApiMember(Description="The password to protect the certificate from unauthorized access.", IsRequired=true, Name="Password")]
        public virtual string Password { get; set; }
    }
}
namespace PwC.Elmaas.Core.Domain.Contracts.Models
{
    public partial interface IElmaCredential
    {
        PemCertificate Certificate { get; set; }
        string AuthSteuernummer { get; set; }
        string AccountId { get; set; }
        string Password { get; set; }
    }
    ///
    ///Represents a PEM-encoded certificate.
    ///
    [Api(Description="Represents a PEM-encoded certificate.")]
    public partial class PemCertificate
    {
        ///
        ///The unique identifier (e.g. the file name) of the certificate.
        ///
        [ApiMember(Description="The unique identifier (e.g. the file name) of the certificate.", IsRequired=true, Name="Id")]
        public virtual string Id { get; set; }
        ///
        ///The PEM-encoded content of the certificate.
        ///
        [ApiMember(Description="The PEM-encoded content of the certificate.", IsRequired=true, Name="Content")]
        public virtual string Content { get; set; }
        ///
        ///The description of the certificate.
        ///
        [ApiMember(Description="The description of the certificate.", Name="Description")]
        public virtual string Description { get; set; }
        ///
        ///Tags to label or identify the certificate.
        ///
        [ApiMember(Description="Tags to label or identify the certificate.", Name="Tags")]
        public virtual List Tags { get; set; }
    }
}
namespace PwC.Elmaas.Core.Services.Contracts.Credentials.Requests
{
    ///
    ///Represents a service to update an ELMA credential.
    ///
    [Route("/sync/elma/credentials/update", "POST")]
    [Api(Description="Represents a service to update an ELMA credential.")]
    public partial class UpdateElmaCredentialAsync
        : UpdateElmaCredentialBase, IReturn
    {
    }
    ///
    ///Specfies a service to update an ELMA credential.
    ///
    [Api(Description="Specfies a service to update an ELMA credential.")]
    public partial class UpdateElmaCredentialBase
        : IPost
    {
        ///
        ///The encrypted password-protected certificate to authenticate the user and grant access to the ELMA server. This certificate is generated from the BZSt-issued *.pfx BOP certificate.More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)
        ///
        [ApiMember(Description="The encrypted password-protected certificate to authenticate the user and grant access to the ELMA server. This certificate is generated from the BZSt-issued *.pfx BOP certificate.More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)", Name="Certificate")]
        public virtual PemCertificate Certificate { get; set; }
        ///
        ///The BZSt (Bundeszentralamt für Steuern) - tax number of the user. 11-character text field that may only consist of two capital letters and 9 digits (0-9). The fiscal authority BZSt provides this number during registration at the BOP (BZSt-Online Portal - https://www.elster.de/bportal/start). The number is available in the private area of the BOP user account under "My BOP" under the "Registration Information"
        ///
        [ApiMember(Description="The BZSt (Bundeszentralamt für Steuern) - tax number of the user. 11-character text field that may only consist of two capital letters and 9 digits (0-9). The fiscal authority BZSt provides this number during registration at the BOP (BZSt-Online Portal - https://www.elster.de/bportal/start). The number is available in the private area of the BOP user account under \"My BOP\" under the \"Registration Information\"", IsRequired=true, Name="AuthSteuernummer")]
        public virtual string AuthSteuernummer { get; set; }
        ///
        ///The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9).
        ///
        [ApiMember(Description="The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9).", IsRequired=true, Name="AccountId")]
        public virtual string AccountId { get; set; }
        ///
        ///The current password that protects the certificate from unauthorized access.
        ///
        [ApiMember(Description="The current password that protects the certificate from unauthorized access.", IsRequired=true, Name="CurrentPassword")]
        public virtual string CurrentPassword { get; set; }
        ///
        ///The new password to protect the certificate from unauthorized access.
        ///
        [ApiMember(Description="The new password to protect the certificate from unauthorized access.", Name="NewPassword")]
        public virtual string NewPassword { get; set; }
        ///
        ///The XML-encoded RSA public key to encrypt the password of the credential. Note: Only the owner of the key pair (public and private encryption keys) can decrypt the encrypted password with the private key! Encryption algorithm: RSA with OAEP-SHA256 padding.
        ///
        [ApiMember(Description="The XML-encoded RSA public key to encrypt the password of the credential. Note: Only the owner of the key pair (public and private encryption keys) can decrypt the encrypted password with the private key! Encryption algorithm: RSA with OAEP-SHA256 padding.", IsRequired=true, Name="PublicKeyXml")]
        public virtual string PublicKeyXml { get; set; }
    }
}
namespace PwC.Elmaas.Core.Services.Contracts.Credentials.Responses
{
    ///
    ///Represents a service response that encapsulates an ELMA credential. The password of the ELMA credential in this response is encrypted and can only be decrypted by the owner of the private key.
    ///
    [Api(Description="Represents a service response that encapsulates an ELMA credential. The password of the ELMA credential in this response is encrypted and can only be decrypted by the owner of the private key.")]
    public partial class ElmaCredentialResponse
    {
        ///
        ///The unique identifier of the response.
        ///
        [ApiMember(Description="The unique identifier of the response.", Name="Id")]
        public virtual string Id { get; set; }
        ///
        ///The encapsulated ELMA credential.
        ///
        [ApiMember(Description="The encapsulated ELMA credential.", Name="Credential")]
        public virtual ElmaCredential Credential { get; set; }
        ///
        ///The status of the response.
        ///
        [ApiMember(Description="The status of the response.", Name="ResponseStatus")]
        public virtual ResponseStatus ResponseStatus { get; set; }
    }
}