/* Options:
Date: 2025-04-16 15:00:29
Version: 8.60
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://reportfiling.staging.pwc.de

//Package: 
//GlobalNamespace: dtos
//AddPropertyAccessors: True
//SettersReturnThis: True
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddDescriptionAsComments: True
//AddImplicitVersion: 
IncludeTypes: BatchFormatReportFiles.*
//ExcludeTypes: 
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.*
*/

import java.math.*;
import java.util.*;
import java.io.InputStream;
import net.servicestack.client.*;

public class dtos
{

    /**
    * Represents a request to format the headers of report files.
    */
    @Route(Path="/sync/elma/files/reports/batch/format", Verbs="POST")
    @Api(Description="Represents a request to format the headers of report files.")
    public static class BatchFormatReportFiles extends BatchFormatReportFilesBase
    {
        
    }

    /**
    * 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 static class ElmaCredential implements 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 String id = null;

        /**
        * 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(MaximumLength=2147483647)
        public PemCertificate certificate = null;

        /**
        * 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(MaximumLength=11)
        public String authSteuernummer = null;

        /**
        * 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(MaximumLength=10)
        public String accountId = null;

        /**
        * 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 String password = null;
        
        public String getId() { return id; }
        public ElmaCredential setId(String value) { this.id = value; return this; }
        public PemCertificate getCertificate() { return certificate; }
        public ElmaCredential setCertificate(PemCertificate value) { this.certificate = value; return this; }
        public String getAuthSteuernummer() { return authSteuernummer; }
        public ElmaCredential setAuthSteuernummer(String value) { this.authSteuernummer = value; return this; }
        public String getAccountId() { return accountId; }
        public ElmaCredential setAccountId(String value) { this.accountId = value; return this; }
        public String getPassword() { return password; }
        public ElmaCredential setPassword(String value) { this.password = value; return this; }
    }

    public static interface IAuthenticateRequest
    {
        public ElmaCredential credential = null;
    }

    /**
    * Specifies a request to format headers of report files.
    */
    @Api(Description="Specifies a request to format headers of report files.")
    public static class BatchFormatReportFilesBase implements IPost, IAuthenticateRequest
    {
        /**
        * Provides credential information to the header.
        */
        @ApiMember(Description="Provides credential information to the header.", IsRequired=true)
        public ElmaCredential credential = null;
        
        public ElmaCredential getCredential() { return credential; }
        public BatchFormatReportFilesBase setCredential(ElmaCredential value) { this.credential = value; return this; }
    }

    /**
    * Represents a PEM-encoded certificate.
    */
    @Api(Description="Represents a PEM-encoded certificate.")
    public static 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 String id = null;

        /**
        * The PEM-encoded content of the certificate.
        */
        @ApiMember(Description="The PEM-encoded content of the certificate.", IsRequired=true, Name="Content")
        public String content = null;

        /**
        * The description of the certificate.
        */
        @ApiMember(Description="The description of the certificate.", Name="Description")
        public String description = null;

        /**
        * Tags to label or identify the certificate.
        */
        @ApiMember(Description="Tags to label or identify the certificate.", Name="Tags")
        public ArrayList<String> tags = null;
        
        public String getId() { return id; }
        public PemCertificate setId(String value) { this.id = value; return this; }
        public String getContent() { return content; }
        public PemCertificate setContent(String value) { this.content = value; return this; }
        public String getDescription() { return description; }
        public PemCertificate setDescription(String value) { this.description = value; return this; }
        public ArrayList<String> getTags() { return tags; }
        public PemCertificate setTags(ArrayList<String> value) { this.tags = value; return this; }
    }

    public static interface IElmaCredential
    {
        public PemCertificate certificate = null;
        public String authSteuernummer = null;
        public String accountId = null;
        public String password = null;
    }

}