Report Filing Service

<back to all web services

CreateDac6XmlFileAsync

Generate XML FileDAC6Async

Represents a request to generate an ELMA-compatible XML file from a DAC6 data model in an asynchronous operation.

Requires Authentication
The following routes are available for this service:
POST/async/elma/dac6/xml/file
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


class LanguageCode(str, Enum):
    AA = 'AA'
    AB = 'AB'
    AF = 'AF'
    AK = 'AK'
    SQ = 'SQ'
    AM = 'AM'
    AR = 'AR'
    AN = 'AN'
    HY = 'HY'
    AS_ = 'AS'
    AV = 'AV'
    AE = 'AE'
    AY = 'AY'
    AZ = 'AZ'
    BA = 'BA'
    BM = 'BM'
    EU = 'EU'
    BE = 'BE'
    BN = 'BN'
    BH = 'BH'
    BI = 'BI'
    BS = 'BS'
    BR = 'BR'
    BG = 'BG'
    MY = 'MY'
    CA = 'CA'
    CH = 'CH'
    CE = 'CE'
    ZH = 'ZH'
    CU = 'CU'
    CV = 'CV'
    KW = 'KW'
    CO = 'CO'
    CR = 'CR'
    CS = 'CS'
    DA = 'DA'
    DV = 'DV'
    NL = 'NL'
    DZ = 'DZ'
    EN = 'EN'
    EO = 'EO'
    ET = 'ET'
    EE = 'EE'
    FO = 'FO'
    FJ = 'FJ'
    FI = 'FI'
    FR = 'FR'
    FY = 'FY'
    FF = 'FF'
    KA = 'KA'
    DE = 'DE'
    GD = 'GD'
    GA = 'GA'
    GL = 'GL'
    GV = 'GV'
    EL = 'EL'
    GN = 'GN'
    GU = 'GU'
    HT = 'HT'
    HA = 'HA'
    HE = 'HE'
    HZ = 'HZ'
    HI = 'HI'
    HO = 'HO'
    HR = 'HR'
    HU = 'HU'
    IG = 'IG'
    IS_ = 'IS'
    IO = 'IO'
    II = 'II'
    IU = 'IU'
    IE = 'IE'
    IA = 'IA'
    ID = 'ID'
    IK = 'IK'
    IT = 'IT'
    JV = 'JV'
    JA = 'JA'
    KL = 'KL'
    KN = 'KN'
    KS = 'KS'
    KR = 'KR'
    KK = 'KK'
    KM = 'KM'
    KI = 'KI'
    RW = 'RW'
    KY = 'KY'
    KV = 'KV'
    KG = 'KG'
    KO = 'KO'
    KJ = 'KJ'
    KU = 'KU'
    LO = 'LO'
    LA = 'LA'
    LV = 'LV'
    LI = 'LI'
    LN = 'LN'
    LT = 'LT'
    LB = 'LB'
    LU = 'LU'
    LG = 'LG'
    MK = 'MK'
    MH = 'MH'
    ML = 'ML'
    MI = 'MI'
    MR = 'MR'
    MS = 'MS'
    MG = 'MG'
    MT = 'MT'
    MN = 'MN'
    NA = 'NA'
    NV = 'NV'
    NR = 'NR'
    ND = 'ND'
    NG = 'NG'
    NE = 'NE'
    NN = 'NN'
    NB = 'NB'
    NO = 'NO'
    NY = 'NY'
    OC = 'OC'
    OJ = 'OJ'
    OR_ = 'OR'
    OM = 'OM'
    OS = 'OS'
    PA = 'PA'
    FA = 'FA'
    PI = 'PI'
    PL = 'PL'
    PT = 'PT'
    PS = 'PS'
    QU = 'QU'
    RM = 'RM'
    RO = 'RO'
    RN = 'RN'
    RU = 'RU'
    SG = 'SG'
    SA = 'SA'
    SI = 'SI'
    SK = 'SK'
    SL = 'SL'
    SE = 'SE'
    SM = 'SM'
    SN = 'SN'
    SD = 'SD'
    SO = 'SO'
    ST = 'ST'
    ES = 'ES'
    SC = 'SC'
    SR = 'SR'
    SS = 'SS'
    SU = 'SU'
    SW = 'SW'
    SV = 'SV'
    TY = 'TY'
    TA = 'TA'
    TT = 'TT'
    TE = 'TE'
    TG = 'TG'
    TL = 'TL'
    TH = 'TH'
    BO = 'BO'
    TI = 'TI'
    TO = 'TO'
    TN = 'TN'
    TS = 'TS'
    TK = 'TK'
    TR = 'TR'
    TW = 'TW'
    UG = 'UG'
    UK = 'UK'
    UR = 'UR'
    UZ = 'UZ'
    VE = 'VE'
    VI = 'VI'
    VO = 'VO'
    CY = 'CY'
    WA = 'WA'
    WO = 'WO'
    XH = 'XH'
    YI = 'YI'
    YO = 'YO'
    ZA = 'ZA'
    ZU = 'ZU'


# @Api(Description="Angaben zu den Kopfdaten")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Header:
    """
    Angaben zu den Kopfdaten
    """

    # @ApiMember(Description="Empfängerstaaten", Name="ReceivingCountries")
    receiving_countries: Optional[List[CountryCode]] = None
    """
    Empfängerstaaten
    """


    # @ApiMember(Description="MessageRefID Angabe im Format  DEMYYYYMMDDXXXXXX...XXX  <DE><M><Datum><Bezeichner><Kombination>  DE beinhaltet den ISO country code \"DE\"  M besteht aus dem Buchstaben \"M\" für MessageRefID  Datum an dem die MessageRefID ausgestellt wurde im Format YYYYMMDD  Bezeichner beinhaltet EOP/BOP-Nummer  eine Kombination aus Ziffern (0-9) und Großbuchstaben (AZ).  Der Bezeichner ist die EOP/BOP-Nummer, die übrigen Felder sind so zu befüllen, dass bei mehreren Lieferungen zu einem Datum jede MessageRefID eines Melders einzigartig ist.  Die Länge der MessageRefID ist durch eine Geschäftsregel auf 40 Zeichen beschränkt.", IsRequired=true, Name="MessageRefId")
    message_ref_id: Optional[str] = None
    """
    MessageRefID Angabe im Format  DEMYYYYMMDDXXXXXX...XXX  <DE><M><Datum><Bezeichner><Kombination>  DE beinhaltet den ISO country code "DE"  M besteht aus dem Buchstaben "M" für MessageRefID  Datum an dem die MessageRefID ausgestellt wurde im Format YYYYMMDD  Bezeichner beinhaltet EOP/BOP-Nummer  eine Kombination aus Ziffern (0-9) und Großbuchstaben (AZ).  Der Bezeichner ist die EOP/BOP-Nummer, die übrigen Felder sind so zu befüllen, dass bei mehreren Lieferungen zu einem Datum jede MessageRefID eines Melders einzigartig ist.  Die Länge der MessageRefID ist durch eine Geschäftsregel auf 40 Zeichen beschränkt.
    """


    # @ApiMember(Description="Zeitstempel Dieses Feld gibt das Datum und die Uhrzeit der Erstellung der Nachricht im XML DateTime Format (YYYY MM DD'Dac6RelevantTaxPayer'hh:mm:ss.mmm) gemäß CET an Sollte die Meldung aus einer abweichenden Zeitzone erfolgen, so ist eine Umrechnung auf CET vorzunehmen.", IsRequired=true, Name="Timestamp")
    timestamp: Optional[datetime.datetime] = None
    """
    Zeitstempel Dieses Feld gibt das Datum und die Uhrzeit der Erstellung der Nachricht im XML DateTime Format (YYYY MM DD'Dac6RelevantTaxPayer'hh:mm:ss.mmm) gemäß CET an Sollte die Meldung aus einer abweichenden Zeitzone erfolgen, so ist eine Umrechnung auf CET vorzunehmen.
    """


# @Api(Description="Stellt die Namensangaben dar.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6NamePerson:
    """
    Stellt die Namensangaben dar.
    """

    # @ApiMember(Description="Vorangestellter Titel", IsRequired=true, Name="PrecedingTitle")
    preceding_title: Optional[str] = None
    """
    Vorangestellter Titel
    """


    # @ApiMember(Description="Titel", Name="Title")
    title: Optional[str] = None
    """
    Titel
    """


    # @ApiMember(Description="Vorname", IsRequired=true, Name="FirstName")
    first_name: Optional[str] = None
    """
    Vorname
    """


    # @ApiMember(Description="Zweitname (weitere Namen)", Name="MiddleName")
    middle_name: Optional[str] = None
    """
    Zweitname (weitere Namen)
    """


    # @ApiMember(Description="Namenszusatz", Name="NamePrefix")
    name_prefix: Optional[str] = None
    """
    Namenszusatz
    """


    # @ApiMember(Description="Nachname", IsRequired=true, Name="LastName")
    last_name: Optional[str] = None
    """
    Nachname
    """


    # @ApiMember(Description="Generationszusatz", Name="GenerationIdentifier")
    generation_identifier: Optional[str] = None
    """
    Generationszusatz
    """


    # @ApiMember(Description="Titelzusatz", Name="Suffix")
    suffix: Optional[str] = None
    """
    Titelzusatz
    """


    # @ApiMember(Description="Allgemeiner Zusatz", Name="GeneralSuffix")
    general_suffix: Optional[str] = None
    """
    Allgemeiner Zusatz
    """


class CountryCode(str, Enum):
    AF = 'AF'
    AX = 'AX'
    AL = 'AL'
    DZ = 'DZ'
    AS_ = 'AS'
    AD = 'AD'
    AO = 'AO'
    AI = 'AI'
    AQ = 'AQ'
    AG = 'AG'
    AR = 'AR'
    AM = 'AM'
    AW = 'AW'
    AU = 'AU'
    AT = 'AT'
    AZ = 'AZ'
    BS = 'BS'
    BH = 'BH'
    BD = 'BD'
    BB = 'BB'
    BY = 'BY'
    BE = 'BE'
    BZ = 'BZ'
    BJ = 'BJ'
    BM = 'BM'
    BT = 'BT'
    BO = 'BO'
    BQ = 'BQ'
    BA = 'BA'
    BW = 'BW'
    BV = 'BV'
    BR = 'BR'
    IO = 'IO'
    BN = 'BN'
    BG = 'BG'
    BF = 'BF'
    BI = 'BI'
    KH = 'KH'
    CM = 'CM'
    CA = 'CA'
    CV = 'CV'
    KY = 'KY'
    CF = 'CF'
    TD = 'TD'
    CL = 'CL'
    CN = 'CN'
    CX = 'CX'
    CC = 'CC'
    CO = 'CO'
    KM = 'KM'
    CG = 'CG'
    CD = 'CD'
    CK = 'CK'
    CR = 'CR'
    CI = 'CI'
    HR = 'HR'
    CU = 'CU'
    CW = 'CW'
    CY = 'CY'
    CZ = 'CZ'
    DK = 'DK'
    DJ = 'DJ'
    DM = 'DM'
    DO = 'DO'
    EC = 'EC'
    EG = 'EG'
    SV = 'SV'
    GQ = 'GQ'
    ER = 'ER'
    EE = 'EE'
    ET = 'ET'
    FK = 'FK'
    FO = 'FO'
    FJ = 'FJ'
    FI = 'FI'
    FR = 'FR'
    GF = 'GF'
    PF = 'PF'
    TF = 'TF'
    GA = 'GA'
    GM = 'GM'
    GE = 'GE'
    DE = 'DE'
    GH = 'GH'
    GI = 'GI'
    GR = 'GR'
    GL = 'GL'
    GD = 'GD'
    GP = 'GP'
    GU = 'GU'
    GT = 'GT'
    GG = 'GG'
    GN = 'GN'
    GW = 'GW'
    GY = 'GY'
    HT = 'HT'
    HM = 'HM'
    VA = 'VA'
    HN = 'HN'
    HK = 'HK'
    HU = 'HU'
    IS_ = 'IS'
    IN_ = 'IN'
    ID = 'ID'
    IR = 'IR'
    IQ = 'IQ'
    IE = 'IE'
    IM = 'IM'
    IL = 'IL'
    IT = 'IT'
    JM = 'JM'
    JP = 'JP'
    JE = 'JE'
    JO = 'JO'
    KZ = 'KZ'
    KE = 'KE'
    KI = 'KI'
    KP = 'KP'
    KR = 'KR'
    KW = 'KW'
    KG = 'KG'
    LA = 'LA'
    LV = 'LV'
    LB = 'LB'
    LS = 'LS'
    LR = 'LR'
    LY = 'LY'
    LI = 'LI'
    LT = 'LT'
    LU = 'LU'
    MO = 'MO'
    MK = 'MK'
    MG = 'MG'
    MW = 'MW'
    MY = 'MY'
    MV = 'MV'
    ML = 'ML'
    MT = 'MT'
    MH = 'MH'
    MQ = 'MQ'
    MR = 'MR'
    MU = 'MU'
    YT = 'YT'
    MX = 'MX'
    FM = 'FM'
    MD = 'MD'
    MC = 'MC'
    MN = 'MN'
    ME = 'ME'
    MS = 'MS'
    MA = 'MA'
    MZ = 'MZ'
    MM = 'MM'
    NA = 'NA'
    NR = 'NR'
    NP = 'NP'
    NL = 'NL'
    NC = 'NC'
    NZ = 'NZ'
    NI = 'NI'
    NE = 'NE'
    NG = 'NG'
    NU = 'NU'
    NF = 'NF'
    MP = 'MP'
    NO = 'NO'
    OM = 'OM'
    PK = 'PK'
    PW = 'PW'
    PS = 'PS'
    PA = 'PA'
    PG = 'PG'
    PY = 'PY'
    PE = 'PE'
    PH = 'PH'
    PN = 'PN'
    PL = 'PL'
    PT = 'PT'
    PR = 'PR'
    QA = 'QA'
    RE = 'RE'
    RO = 'RO'
    RU = 'RU'
    RW = 'RW'
    BL = 'BL'
    SH = 'SH'
    KN = 'KN'
    LC = 'LC'
    MF = 'MF'
    PM = 'PM'
    VC = 'VC'
    WS = 'WS'
    SM = 'SM'
    ST = 'ST'
    SA = 'SA'
    SN = 'SN'
    RS = 'RS'
    SC = 'SC'
    SL = 'SL'
    SG = 'SG'
    SX = 'SX'
    SK = 'SK'
    SI = 'SI'
    SB = 'SB'
    SO = 'SO'
    ZA = 'ZA'
    GS = 'GS'
    SS = 'SS'
    ES = 'ES'
    LK = 'LK'
    SD = 'SD'
    SR = 'SR'
    SJ = 'SJ'
    SZ = 'SZ'
    SE = 'SE'
    CH = 'CH'
    SY = 'SY'
    TW = 'TW'
    TJ = 'TJ'
    TZ = 'TZ'
    TH = 'TH'
    TL = 'TL'
    TG = 'TG'
    TK = 'TK'
    TO = 'TO'
    TT = 'TT'
    TN = 'TN'
    TR = 'TR'
    TM = 'TM'
    TC = 'TC'
    TV = 'TV'
    UG = 'UG'
    UA = 'UA'
    AE = 'AE'
    GB = 'GB'
    US = 'US'
    UM = 'UM'
    UY = 'UY'
    UZ = 'UZ'
    VU = 'VU'
    VE = 'VE'
    VN = 'VN'
    VG = 'VG'
    VI = 'VI'
    WF = 'WF'
    EH = 'EH'
    YE = 'YE'
    ZM = 'ZM'
    ZW = 'ZW'
    XK = 'XK'
    XX = 'XX'


# @Api(Description="Steueridentifikationsmerkmal Stellt die Angabe der Steuernummer dar.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6TIN:
    """
    Steueridentifikationsmerkmal Stellt die Angabe der Steuernummer dar.
    """

    # @ApiMember(Description="Ausstellender Staat", Name="IssuedBy")
    issued_by: Optional[CountryCode] = None
    """
    Ausstellender Staat
    """


    # @ApiMember(Description="Steuernummer", IsRequired=true, Name="Value")
    value: Optional[str] = None
    """
    Steuernummer
    """


# @Api(Description="Stellt die Andressangaben dar.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Address:
    """
    Stellt die Andressangaben dar.
    """

    # @ApiMember(Description="Straße", Name="Street")
    street: Optional[str] = None
    """
    Straße
    """


    # @ApiMember(Description="Hausnummer", Name="BuildingIdentifier")
    building_identifier: Optional[str] = None
    """
    Hausnummer
    """


    # @ApiMember(Description="Wohnungsbezeichnung", Name="SuiteIdentifier")
    suite_identifier: Optional[str] = None
    """
    Wohnungsbezeichnung
    """


    # @ApiMember(Description="Etagenbezeichnung", Name="FloorIdentifier")
    floor_identifier: Optional[str] = None
    """
    Etagenbezeichnung
    """


    # @ApiMember(Description="Verwaltungsbezirk", Name="DistrictName")
    district_name: Optional[str] = None
    """
    Verwaltungsbezirk
    """


    # @ApiMember(Description="Postfach", Name="POB")
    pob: Optional[str] = None
    """
    Postfach
    """


    # @ApiMember(Description="Postleitzahl", Name="PostCode")
    post_code: Optional[str] = None
    """
    Postleitzahl
    """


    # @ApiMember(Description="Ort", IsRequired=true, Name="City")
    city: Optional[str] = None
    """
    Ort
    """


    # @ApiMember(Description="Staat Zweibuchstabiges Länderkürzel nach ISO Norm 3166-1 Alpha 2", IsRequired=true, Name="Country")
    country: Optional[CountryCode] = None
    """
    Staat Zweibuchstabiges Länderkürzel nach ISO Norm 3166-1 Alpha 2
    """


# @Api(Description="Natürliche Person")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Person:
    """
    Natürliche Person
    """

    # @ApiMember(Description="Namensangaben", IsRequired=true, Name="IndividualName")
    individual_name: Optional[Dac6NamePerson] = None
    """
    Namensangaben
    """


    # @ApiMember(Description="GeburtsdatumFormat: YYYY-MM-DD", IsRequired=true, Name="BirthDate")
    birth_date: datetime.datetime = datetime.datetime(1, 1, 1)
    """
    GeburtsdatumFormat: YYYY-MM-DD
    """


    # @ApiMember(Description="Geburtsort", IsRequired=true, Name="BirthPlace")
    birth_place: Optional[str] = None
    """
    Geburtsort
    """


    # @ApiMember(Description="Steueridentifikationsmerkmale", IsRequired=true, Name="TINs")
    ti_ns: Optional[List[Dac6TIN]] = None
    """
    Steueridentifikationsmerkmale
    """


    # @ApiMember(Description="Adressangaben", IsRequired=true, Name="Address")
    address: Optional[Dac6Address] = None
    """
    Adressangaben
    """


    # @ApiMember(Description="E-Mailadresse", Name="EmailAddress")
    email_address: Optional[str] = None
    """
    E-Mailadresse
    """


    # @ApiMember(Description="Ansässigkeitsstaaten", IsRequired=true, Name="ResCountryCodes")
    res_country_codes: Optional[List[CountryCode]] = None
    """
    Ansässigkeitsstaaten
    """


# @Api(Description="Stellt den Name der Organisation dar")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6NameOrganisation:
    """
    Stellt den Name der Organisation dar
    """

    # @ApiMember(Description="Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur \"DE\" oder \"EN\" gewählt werden.", IsRequired=true, Name="Language")
    language: Optional[LanguageCode] = None
    """
    Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur "DE" oder "EN" gewählt werden.
    """


    # @ApiMember(Description="Namenswert der Organisation", IsRequired=true, Name="Value")
    value: Optional[str] = None
    """
    Namenswert der Organisation
    """


# @Api(Description="Organisation")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Organisation:
    """
    Organisation
    """

    # @ApiMember(Description="Die Name der Organisation", IsRequired=true, Name="OrganisationNames")
    organisation_names: Optional[List[Dac6NameOrganisation]] = None
    """
    Die Name der Organisation
    """


    # @ApiMember(Description="Steueridentifikationsmerkmale", IsRequired=true, Name="TINs")
    ti_ns: Optional[List[Dac6TIN]] = None
    """
    Steueridentifikationsmerkmale
    """


    # @ApiMember(Description="Adressangaben", IsRequired=true, Name="Address")
    address: Optional[Dac6Address] = None
    """
    Adressangaben
    """


    # @ApiMember(Description="E-Mailadresse", Name="EmailAddress")
    email_address: Optional[str] = None
    """
    E-Mailadresse
    """


    # @ApiMember(Description="Ansässigkeitsstaaten", IsRequired=true, Name="ResCountryCodes")
    res_country_codes: Optional[List[CountryCode]] = None
    """
    Ansässigkeitsstaaten
    """


# @Api(Description="Entweder Angabe von Individual oder Angabe von Organisation")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6PersonOrganisation:
    """
    Entweder Angabe von Individual oder Angabe von Organisation
    """

    # @ApiMember(Description="Natürliche Person Zwingend anzugeben, wenn PersonOrganisation keine Organisation ist. Die Folgeeintragungen sind abhängig von dieser Auswahl.", IsRequired=true, Name="Individual")
    individual: Optional[Dac6Person] = None
    """
    Natürliche Person Zwingend anzugeben, wenn PersonOrganisation keine Organisation ist. Die Folgeeintragungen sind abhängig von dieser Auswahl.
    """


    # @ApiMember(Description="Organisation Zwingend anzugeben, PersonOrganisation keine Person ist. Die Folgeeintragungen sind abhängig von dieser Auswahl.", IsRequired=true, Name="Individual")
    organisation: Optional[Dac6Organisation] = None
    """
    Organisation Zwingend anzugeben, PersonOrganisation keine Person ist. Die Folgeeintragungen sind abhängig von dieser Auswahl.
    """


class Dac6IntermediaryNexus(str, Enum):
    INE_XA = 'INEXa'
    INE_XB = 'INEXb'
    INE_XC = 'INEXc'
    INE_XD = 'INEXd'


class Dac6IntermediaryCapacity(str, Enum):
    DA_C61101 = 'DAC61101'
    DA_C61102 = 'DAC61102'


# @Api(Description="Meldepflichtiger Intermediär")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6IntermediaryDiscloser:
    """
    Meldepflichtiger Intermediär
    """

    # @ApiMember(Description="Verbindung des Intermediärs zu Deutschland INEXa - Der Intermediär ist in Deutschland steuerlich ansässig. INEXb - Der Intermediär hat in Deutschland eine Betriebstätte, durch die die Dienstleistungen im Zusammenhang mit der grenzüberschreitenden Steuergestaltung erbracht werden. INEXc - Der Intermediär ist in Deutschland in das Handelsregister oder ein öffentliches berufsrechtliches Register eingetragen. INEXd - Der Intermediär ist in Deutschland bei einem Berufsverband für juristische, steuerliche oder beratende Dienstleistungen registriert", IsRequired=true, Name="IntermediaryNexus")
    intermediary_nexus: Optional[Dac6IntermediaryNexus] = None
    """
    Verbindung des Intermediärs zu Deutschland INEXa - Der Intermediär ist in Deutschland steuerlich ansässig. INEXb - Der Intermediär hat in Deutschland eine Betriebstätte, durch die die Dienstleistungen im Zusammenhang mit der grenzüberschreitenden Steuergestaltung erbracht werden. INEXc - Der Intermediär ist in Deutschland in das Handelsregister oder ein öffentliches berufsrechtliches Register eingetragen. INEXd - Der Intermediär ist in Deutschland bei einem Berufsverband für juristische, steuerliche oder beratende Dienstleistungen registriert
    """


    # @ApiMember(Description="Rolle des Intermediärs DAC61101 – Entwicklung / Vertrieb /Umsetzungsunterstützung DAC61102 – Dienstleister (organisierende / verwaltendeTätigkeit", IsRequired=true, Name="IntermediaryNexus")
    capacity: Optional[Dac6IntermediaryCapacity] = None
    """
    Rolle des Intermediärs DAC61101 – Entwicklung / Vertrieb /Umsetzungsunterstützung DAC61102 – Dienstleister (organisierende / verwaltendeTätigkeit
    """


class Dac6RelevantTaxpayerNexus(str, Enum):
    RTNE_XA = 'RTNEXa'
    RTNE_XB = 'RTNEXb'
    RTNE_XC = 'RTNEXc'
    RTNE_XD = 'RTNEXd'


class Dac6TaxpayerCapacity(str, Enum):
    DA_C61104 = 'DAC61104'
    DA_C61105 = 'DAC61105'
    DA_C61106 = 'DAC61106'


# @Api(Description="Meldepflichtiger Nutzer")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6RelevantTaxpayerDiscloser:
    """
    Meldepflichtiger Nutzer
    """

    # @ApiMember(Description="Verbindung des Intermediärs zu Deutschland RTNEXa - Der Nutzer ist in Deutschland steuerlich ansässig. RTNEXb - Der Nutzer hat in Deutschland eine Betriebstätte, der durch die grenzüberschreitende Gestaltung ein Vorteilentsteht. RTNEXc - Der Nutzer erzielt Einkünfte oder Gewinne in Deutschland, obwohl er in keinem Mitgliedstaat steuerlichansässig ist oder eine Betriebstätte hat. RTNEXd - Der Nutzer übt in Deutschland eine Tätigkeit aus obwohl er in keinem Mitgliedstaat ansässig ist oder eine Betriebstätte hat.", IsRequired=true, Name="RelevantTaxpayerNexus")
    relevant_taxpayer_nexus: Optional[Dac6RelevantTaxpayerNexus] = None
    """
    Verbindung des Intermediärs zu Deutschland RTNEXa - Der Nutzer ist in Deutschland steuerlich ansässig. RTNEXb - Der Nutzer hat in Deutschland eine Betriebstätte, der durch die grenzüberschreitende Gestaltung ein Vorteilentsteht. RTNEXc - Der Nutzer erzielt Einkünfte oder Gewinne in Deutschland, obwohl er in keinem Mitgliedstaat steuerlichansässig ist oder eine Betriebstätte hat. RTNEXd - Der Nutzer übt in Deutschland eine Tätigkeit aus obwohl er in keinem Mitgliedstaat ansässig ist oder eine Betriebstätte hat.
    """


    # @ApiMember(Description="Rolle des Intermediärs DAC61104 - Verschwiegenheitspflicht des Intermediärs DAC61105 - Intermediär aus Nicht-EU-Staat DAC61106 - Selbst konzipierte Gestaltung", IsRequired=true, Name="Capacity")
    capacity: Optional[Dac6TaxpayerCapacity] = None
    """
    Rolle des Intermediärs DAC61104 - Verschwiegenheitspflicht des Intermediärs DAC61105 - Intermediär aus Nicht-EU-Staat DAC61106 - Selbst konzipierte Gestaltung
    """


# @Api(Description="Angabe der Verbindung des Intermediärs zu Deutschland und des Meldegrunds. Die Angaben zum Meldepflichtigen sind durch eine Geschäftsregel verpflichtend vorzunehmen.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Liability:
    """
    Angabe der Verbindung des Intermediärs zu Deutschland und des Meldegrunds. Die Angaben zum Meldepflichtigen sind durch eine Geschäftsregel verpflichtend vorzunehmen.
    """

    # @ApiMember(Description="Meldepflichtiger Intermediär Dieses Feld ist verpflichtend anzugeben, wenn Liability kein RelevantTaxpayerDiscloser ist.", IsRequired=true, Name="IntermediaryDiscloser")
    intermediary_discloser: Optional[Dac6IntermediaryDiscloser] = None
    """
    Meldepflichtiger Intermediär Dieses Feld ist verpflichtend anzugeben, wenn Liability kein RelevantTaxpayerDiscloser ist.
    """


    # @ApiMember(Description="Meldepflichtiger Nutzer Dieses Feld ist verpflichtend anzugeben, wenn Liability kein IntermediaryDiscloser ist.", IsRequired=true, Name="RelevantTaxpayerDiscloser")
    relevant_taxpayer_discloser: Optional[Dac6RelevantTaxpayerDiscloser] = None
    """
    Meldepflichtiger Nutzer Dieses Feld ist verpflichtend anzugeben, wenn Liability kein IntermediaryDiscloser ist.
    """


# @Api(Description="Angaben zum Meldepflichtigen")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Discloser:
    """
    Angaben zum Meldepflichtigen
    """

    # @ApiMember(Description="Identifikationsdaten zum Meldepflichtigen", IsRequired=true, Name="ID")
    id: Optional[Dac6PersonOrganisation] = None
    """
    Identifikationsdaten zum Meldepflichtigen
    """


    # @ApiMember(Description="Meldepflichtiger Angabe der Verbindung des Intermediärs zu Deutschland und des Meldegrunds. Die Angaben zum Meldepflichtigen sind durch eine Geschäftsregel verpflichtend vorzunehmen.", Name="Liability")
    liability: Optional[Dac6Liability] = None
    """
    Meldepflichtiger Angabe der Verbindung des Intermediärs zu Deutschland und des Meldegrunds. Die Angaben zum Meldepflichtigen sind durch eine Geschäftsregel verpflichtend vorzunehmen.
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6RelevantTaxPayers:
    """
    Angabe aller bekannten Nutzer
    """

    pass


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Intermediaries:
    """
    Angabe zum jeweiligen Intermediär
    """

    pass


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6AffectedPersons:
    """
    Angaben zu allen in einem Mitgliedstaat der Europäischen Union ansässigen Personen,die von der grenzüberschreitenden Steuergestaltung wahrscheinlich unmittelbar betroffen sind,einschließlich Angaben darüber, zu welchen Mitgliedstaaten der Europäischen Union sie in Beziehung stehen.
    """

    pass


class Dac6DisclosurerReason(str, Enum):
    DA_C6701 = 'DAC6701'
    DA_C6702 = 'DAC6702'
    DA_C6703 = 'DAC6703'


# @Api(Description="Beschreibung der Gestaltung")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Disclosure_Description:
    """
    Beschreibung der Gestaltung
    """

    # @ApiMember(Description="Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur \"DE\" oder \"EN\" gewählt werden.", IsRequired=true, Name="Language")
    language: Optional[LanguageCode] = None
    """
    Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur "DE" oder "EN" gewählt werden.
    """


    # @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    value: Optional[str] = None
    """
    Beschreibung
    """


# @Api(Description="Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Summary:
    """
    Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung
    """

    # @ApiMember(Description="Name der Gestaltung", IsRequired=true, Name="Disclosure_Name")
    disclosure__name: Optional[str] = None
    """
    Name der Gestaltung
    """


    # @ApiMember(Description="Beschreibung der Gestaltung Zusammenfassung des Inhalts der grenzüberschreitendenSteuergestaltung einschließlich einer abstrakt gehaltenenBeschreibung der relevanten Geschäftstätigkeit oder Gestaltung des Nutzers, soweit dies nicht zur Offenlegung eines Handels-, Gewerbe- oder Berufsgeheimnisses odereines Geschäftsverfahrens oder von Informationen führt, deren Offenlegung die öffentliche Ordnung verletzen würde.", IsRequired=true, Name="Disclosure_Descriptions")
    disclosure__descriptions: Optional[List[Dac6Disclosure_Description]] = None
    """
    Beschreibung der Gestaltung Zusammenfassung des Inhalts der grenzüberschreitendenSteuergestaltung einschließlich einer abstrakt gehaltenenBeschreibung der relevanten Geschäftstätigkeit oder Gestaltung des Nutzers, soweit dies nicht zur Offenlegung eines Handels-, Gewerbe- oder Berufsgeheimnisses odereines Geschäftsverfahrens oder von Informationen führt, deren Offenlegung die öffentliche Ordnung verletzen würde.
    """


# @Api(Description="Angabe der Rechtsvorschrift")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Text:
    """
    Angabe der Rechtsvorschrift
    """

    # @ApiMember(Description="Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur \"DE\" oder \"EN\" gewählt werden.", IsRequired=true, Name="Language")
    language: Optional[LanguageCode] = None
    """
    Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur "DE" oder "EN" gewählt werden.
    """


    # @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    value: Optional[str] = None
    """
    Beschreibung
    """


# @Api(Description="Rechtsvorschrift")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6NationalProvision:
    """
    Rechtsvorschrift
    """

    # @ApiMember(Description="Angabe der Rechtsvorschrift", IsRequired=true, Name="Texts")
    texts: Optional[List[Dac6Text]] = None
    """
    Angabe der Rechtsvorschrift
    """


    # @ApiMember(Description="Staat zur Rechtsvorschrift Angabe des Staates, der die angegebene Rechtsvorschrift erlassen hat.", IsRequired=true, Name="Country")
    country: Optional[CountryCode] = None
    """
    Staat zur Rechtsvorschrift Angabe des Staates, der die angegebene Rechtsvorschrift erlassen hat.
    """


class CurrencyCode(str, Enum):
    AED = 'AED'
    AFN = 'AFN'
    ALL = 'ALL'
    AMD = 'AMD'
    ANG = 'ANG'
    AOA = 'AOA'
    ARS = 'ARS'
    AUD = 'AUD'
    AWG = 'AWG'
    AZN = 'AZN'
    BAM = 'BAM'
    BBD = 'BBD'
    BDT = 'BDT'
    BGN = 'BGN'
    BHD = 'BHD'
    BIF = 'BIF'
    BMD = 'BMD'
    BND = 'BND'
    BOB = 'BOB'
    BOV = 'BOV'
    BRL = 'BRL'
    BSD = 'BSD'
    BTN = 'BTN'
    BWP = 'BWP'
    BYN = 'BYN'
    BZD = 'BZD'
    CAD = 'CAD'
    CDF = 'CDF'
    CHE = 'CHE'
    CHF = 'CHF'
    CHW = 'CHW'
    CLF = 'CLF'
    CLP = 'CLP'
    CNY = 'CNY'
    COP = 'COP'
    COU = 'COU'
    CRC = 'CRC'
    CUC = 'CUC'
    CUP = 'CUP'
    CVE = 'CVE'
    CZK = 'CZK'
    DJF = 'DJF'
    DKK = 'DKK'
    DOP = 'DOP'
    DZD = 'DZD'
    EGP = 'EGP'
    ERN = 'ERN'
    ETB = 'ETB'
    EUR = 'EUR'
    FJD = 'FJD'
    FKP = 'FKP'
    GBP = 'GBP'
    GEL = 'GEL'
    GHS = 'GHS'
    GIP = 'GIP'
    GMD = 'GMD'
    GNF = 'GNF'
    GTQ = 'GTQ'
    GYD = 'GYD'
    HKD = 'HKD'
    HNL = 'HNL'
    HRK = 'HRK'
    HTG = 'HTG'
    HUF = 'HUF'
    IDR = 'IDR'
    ILS = 'ILS'
    INR = 'INR'
    IQD = 'IQD'
    IRR = 'IRR'
    ISK = 'ISK'
    JMD = 'JMD'
    JOD = 'JOD'
    JPY = 'JPY'
    KES = 'KES'
    KGS = 'KGS'
    KHR = 'KHR'
    KMF = 'KMF'
    KPW = 'KPW'
    KRW = 'KRW'
    KWD = 'KWD'
    KYD = 'KYD'
    KZT = 'KZT'
    LAK = 'LAK'
    LBP = 'LBP'
    LKR = 'LKR'
    LRD = 'LRD'
    LSL = 'LSL'
    LYD = 'LYD'
    MAD = 'MAD'
    MDL = 'MDL'
    MGA = 'MGA'
    MKD = 'MKD'
    MMK = 'MMK'
    MNT = 'MNT'
    MOP = 'MOP'
    MRU = 'MRU'
    MUR = 'MUR'
    MVR = 'MVR'
    MWK = 'MWK'
    MXN = 'MXN'
    MXV = 'MXV'
    MYR = 'MYR'
    MZN = 'MZN'
    NAD = 'NAD'
    NGN = 'NGN'
    NIO = 'NIO'
    NOK = 'NOK'
    NPR = 'NPR'
    NZD = 'NZD'
    OMR = 'OMR'
    PAB = 'PAB'
    PEN = 'PEN'
    PGK = 'PGK'
    PHP = 'PHP'
    PKR = 'PKR'
    PLN = 'PLN'
    PYG = 'PYG'
    QAR = 'QAR'
    RON = 'RON'
    RSD = 'RSD'
    RUB = 'RUB'
    RWF = 'RWF'
    SAR = 'SAR'
    SBD = 'SBD'
    SCR = 'SCR'
    SDG = 'SDG'
    SEK = 'SEK'
    SGD = 'SGD'
    SHP = 'SHP'
    SLL = 'SLL'
    SOS = 'SOS'
    SRD = 'SRD'
    SSP = 'SSP'
    STN = 'STN'
    SVC = 'SVC'
    SYP = 'SYP'
    SZL = 'SZL'
    THB = 'THB'
    TJS = 'TJS'
    TMT = 'TMT'
    TND = 'TND'
    TOP = 'TOP'
    TRY_ = 'TRY'
    TTD = 'TTD'
    TWD = 'TWD'
    TZS = 'TZS'
    UAH = 'UAH'
    UGX = 'UGX'
    USD = 'USD'
    USN = 'USN'
    UYI = 'UYI'
    UYU = 'UYU'
    UYW = 'UYW'
    UZS = 'UZS'
    VES = 'VES'
    VND = 'VND'
    VUV = 'VUV'
    WST = 'WST'
    XAF = 'XAF'
    XAG = 'XAG'
    XAU = 'XAU'
    XBA = 'XBA'
    XBB = 'XBB'
    XBC = 'XBC'
    XBD = 'XBD'
    XCD = 'XCD'
    XDR = 'XDR'
    XOF = 'XOF'
    XPD = 'XPD'
    XPF = 'XPF'
    XPT = 'XPT'
    XSU = 'XSU'
    XUA = 'XUA'
    XXX = 'XXX'
    YER = 'YER'
    ZAR = 'ZAR'
    ZMW = 'ZMW'
    ZWL = 'ZWL'


# @Api(Description="Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Amount:
    """
    Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.
    """

    # @ApiMember(Description="WährungAngabe des ISO-Währungscodes der Währung, in dem der Wert angegeben wurde.", IsRequired=true, Name="CurrCode")
    curr_code: Optional[CurrencyCode] = None
    """
    WährungAngabe des ISO-Währungscodes der Währung, in dem der Wert angegeben wurde.
    """


    # @ApiMember(Description="Wirtschaftlicher Wert der Gestaltung", IsRequired=true, Name="Value")
    value: Optional[int] = None
    """
    Wirtschaftlicher Wert der Gestaltung
    """


# @Api(Description="Beteiligungsangaben Angabe der Rechts- und Vertragsbeziehungen zwischen den Unternehmen/natürlichen Personen. Darüber hinaus ist auch eine Angabe z.B. des Cash Flows oder die Verbindung derbeiden (z.B. Beteiligter o.Ä.) möglich.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6OtherInfo:
    """
    Beteiligungsangaben Angabe der Rechts- und Vertragsbeziehungen zwischen den Unternehmen/natürlichen Personen. Darüber hinaus ist auch eine Angabe z.B. des Cash Flows oder die Verbindung derbeiden (z.B. Beteiligter o.Ä.) möglich.
    """

    # @ApiMember(Description="Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur \"DE\" oder \"EN\" gewählt werden.", IsRequired=true, Name="Language")
    language: Optional[LanguageCode] = None
    """
    Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur "DE" oder "EN" gewählt werden.
    """


    # @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    value: Optional[str] = None
    """
    Beschreibung
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6ListChilds:
    """
    Nächste Ebene Erfassung einer weiteren Ebene im Unternehmenschart
    """

    pass


# @Api(Description="Unternehmensstruktur Erstellung eines Unternehmenscharts über mehrere Ebenen.Durch die Erfassung einer/s Muttergesellschaft/er und die jeweiligen Untergesellschaften/er ist somit der Aufbau eines Unternehmschart möglich.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6ArrangementChart:
    """
    Unternehmensstruktur Erstellung eines Unternehmenscharts über mehrere Ebenen.Durch die Erfassung einer/s Muttergesellschaft/er und die jeweiligen Untergesellschaften/er ist somit der Aufbau eines Unternehmschart möglich.
    """

    # @ApiMember(Description="Identifikationsdaten", IsRequired=true, Name="ID")
    id: Optional[Dac6PersonOrganisation] = None
    """
    Identifikationsdaten
    """


    # @ApiMember(Description="Die Beteiligungshöhe in Prozent Angabe der Beteiligungshöhe in Prozent. Der angegebene Wert muss mindestens 0 und darf maximal 100 sein.", Name="ID")
    ownership: Optional[int] = None
    """
    Die Beteiligungshöhe in Prozent Angabe der Beteiligungshöhe in Prozent. Der angegebene Wert muss mindestens 0 und darf maximal 100 sein.
    """


    # @ApiMember(Description="Die wertmäßige Beteiligungshöhe", Name="InvestAmount")
    invest_amount: Optional[Dac6Amount] = None
    """
    Die wertmäßige Beteiligungshöhe
    """


    # @ApiMember(Description="Beteiligungsangaben", Name="OtherInfos")
    other_infos: Optional[List[Dac6OtherInfo]] = None
    """
    Beteiligungsangaben
    """


    # @ApiMember(Description="Nächste Ebene Erfassung einer weiteren Ebene im Unternehmenschart", Name="ListChilds")
    list_childs: Optional[Dac6ListChilds] = None
    """
    Nächste Ebene Erfassung einer weiteren Ebene im Unternehmenschart
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6ConcernedMSs:
    """
    Liste der betroffenen Mitgliedstaaten Angabe der Mitgliedstaaten der Europäischen Union, die wahrscheinlich von der grenzüberschreitenden Steuergestaltung betroffen sind.
    """

    pass


class Dac6Hallmark(str, Enum):
    DA_C6_A1 = 'DAC6A1'
    DA_C6_A2A = 'DAC6A2a'
    DA_C6_A2B = 'DAC6A2b'
    DA_C6_A3 = 'DAC6A3'
    DA_C6_B1 = 'DAC6B1'
    DA_C6_B2 = 'DAC6B2'
    DA_C6_B3 = 'DAC6B3'
    DA_C6_C1A = 'DAC6C1a'
    DA_C6_C1BI = 'DAC6C1bi'
    DA_C6_C1BII = 'DAC6C1bii'
    DA_C6_C1C = 'DAC6C1c'
    DA_C6_C1D = 'DAC6C1d'
    DA_C6_C2 = 'DAC6C2'
    DA_C6_C3 = 'DAC6C3'
    DA_C6_C4 = 'DAC6C4'
    DA_C6_D1_OTHER = 'DAC6D1Other'
    DA_C6_D1A = 'DAC6D1a'
    DA_C6_D1B = 'DAC6D1b'
    DA_C6_D1C = 'DAC6D1c'
    DA_C6_D1D = 'DAC6D1d'
    DA_C6_D1E = 'DAC6D1e'
    DA_C6_D1F = 'DAC6D1f'
    DA_C6_D2 = 'DAC6D2'
    DA_C6_E1 = 'DAC6E1'
    DA_C6_E2 = 'DAC6E2'
    DA_C6_E3 = 'DAC6E3'


# @Api(Description="Angabe der Kennzeiche Angabe der Einzelheiten zu den nach § 138e zur Mitteilung verpflichtenden Kennzeichen")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6ListHallmarks:
    """
    Angabe der Kennzeiche Angabe der Einzelheiten zu den nach § 138e zur Mitteilung verpflichtenden Kennzeichen
    """

    # @ApiMember(Description="Betroffene Kennzeichen", IsRequired=true, Name="Hallmarks")
    hallmarks: Optional[List[Dac6Hallmark]] = None
    """
    Betroffene Kennzeichen
    """


# @Api(Description="Beschreibung des Kennzeichens Bei Auswahl des Kennzeichens \"DAC6D1Other\" muss über das freie Textfeld \"OtherInfo\" eine nähere Beschreibung des Kennzeichens erfolgen. Die beiden Elemente dürfen ausschließlich in Verbindung angegeben werden.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DAC6D1OtherInfo:
    """
    Beschreibung des Kennzeichens Bei Auswahl des Kennzeichens "DAC6D1Other" muss über das freie Textfeld "OtherInfo" eine nähere Beschreibung des Kennzeichens erfolgen. Die beiden Elemente dürfen ausschließlich in Verbindung angegeben werden.
    """

    # @ApiMember(Description="Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur \"DE\" oder \"EN\" gewählt werden.", IsRequired=true, Name="Language")
    language: Optional[LanguageCode] = None
    """
    Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt.Hier kann nur "DE" oder "EN" gewählt werden.
    """


    # @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    value: Optional[str] = None
    """
    Beschreibung
    """


# @Api(Description="Liste der Kennzeichen Auswahl der Kennzeichen der meldepflichtigen Gestaltung. Bestimmte Kennzeichen können nur ausgewählt werden, wenn der MainBenefitTest1 mit „true“ angegeben wird. Zusätzlich kann hier beim Kennzeichen \"DAC6D1Other\" über ein Freitextfeld eine Beschreibung des zusätzlichen")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Hallmarks:
    """
    Liste der Kennzeichen Auswahl der Kennzeichen der meldepflichtigen Gestaltung. Bestimmte Kennzeichen können nur ausgewählt werden, wenn der MainBenefitTest1 mit „true“ angegeben wird. Zusätzlich kann hier beim Kennzeichen "DAC6D1Other" über ein Freitextfeld eine Beschreibung des zusätzlichen
    """

    # @ApiMember(Description="Angabe der Kennzeichen", IsRequired=true, Name="ListHallmarks")
    list_hallmarks: Optional[Dac6ListHallmarks] = None
    """
    Angabe der Kennzeichen
    """


    # @ApiMember(Description="Beschreibung des Kennzeichens", IsRequired=true, Name="DAC6D1OtherInfos")
    da_c6_d1_other_infos: Optional[List[DAC6D1OtherInfo]] = None
    """
    Beschreibung des Kennzeichens
    """


# @Api(Description="Angabe der Informationen zur Steuergestaltung")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6DisclosureInformation:
    """
    Angabe der Informationen zur Steuergestaltung
    """

    # @ApiMember(Description="Datum der Umsetzung Format: YYYY-MM-DD Angabe des Datums, an dem der erste Schritt in der Umsetzung der mitteilungspflichtigen Gestaltung gemacht wurde oder wird.", Name="ImplementingDate")
    implementing_date: Optional[datetime.datetime] = None
    """
    Datum der Umsetzung Format: YYYY-MM-DD Angabe des Datums, an dem der erste Schritt in der Umsetzung der mitteilungspflichtigen Gestaltung gemacht wurde oder wird.
    """


    # @ApiMember(Description="Stand der Gestaltung DAC6701 – Die grenzüberschreitende Steuergestaltung wird zur Umsetzung bereitgestellt. DAC6702 – Der Nutzer ist zur Umsetzung der grenzüberschreitenden Steuergestaltung bereit. DAC6703 – Mindestens ein Nutzer hat den ersten Schritt der Umsetzung der grenzüberschreitenden Steuergestaltung", Name="Reason")
    reason: Optional[Dac6DisclosurerReason] = None
    """
    Stand der Gestaltung DAC6701 – Die grenzüberschreitende Steuergestaltung wird zur Umsetzung bereitgestellt. DAC6702 – Der Nutzer ist zur Umsetzung der grenzüberschreitenden Steuergestaltung bereit. DAC6703 – Mindestens ein Nutzer hat den ersten Schritt der Umsetzung der grenzüberschreitenden Steuergestaltung
    """


    # @ApiMember(Description="Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung.", Name="Summary")
    summary: Optional[Dac6Summary] = None
    """
    Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung.
    """


    # @ApiMember(Description="Rechtsvorschrift", Name="NationalProvision")
    national_provision: Optional[Dac6NationalProvision] = None
    """
    Rechtsvorschrift
    """


    # @ApiMember(Description="Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.", Name="Amount")
    amount: Optional[Dac6Amount] = None
    """
    Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.
    """


    # @ApiMember(Description="Unternehmensstruktur Erstellung eines Unternehmenscharts über mehrere Ebenen. Durch die Erfassung einer/s Muttergesellschaft/er und die jeweiligen Untergesellschaften/er ist somit der Aufbau eines Unternehmschart möglich.", Name="NationalProvision")
    arrangement_chart: Optional[Dac6ArrangementChart] = None
    """
    Unternehmensstruktur Erstellung eines Unternehmenscharts über mehrere Ebenen. Durch die Erfassung einer/s Muttergesellschaft/er und die jeweiligen Untergesellschaften/er ist somit der Aufbau eines Unternehmschart möglich.
    """


    # @ApiMember(Description="Betroffenen Mitgliedstaaten", Name="ConcernedMSs")
    concerned_m_ss: Optional[Dac6ConcernedMSs] = None
    """
    Betroffenen Mitgliedstaaten
    """


    # @ApiMember(Description="Steuerlicher Vorteil Angabe, ob ein steuerlicher Vorteil vorliegt oder nicht. true: ein steuerlicher Vorteil vorliegt false: ein steuerlicher Vorteil vorliegt nicht.", Name="MainBenefitTest1")
    main_benefit_test1: Optional[bool] = None
    """
    Steuerlicher Vorteil Angabe, ob ein steuerlicher Vorteil vorliegt oder nicht. true: ein steuerlicher Vorteil vorliegt false: ein steuerlicher Vorteil vorliegt nicht.
    """


    # @ApiMember(Description="Liste der Kennzeichen Auswahl der Kennzeichen der meldepflichtigen Gestaltung.Bestimmte Kennzeichen können nur ausgewählt werden, wenn der MainBenefitTest1 mit „true“ angegeben wird.Zusätzlich kann hier beim Kennzeichen \"DAC6D1Other\" überein Freitextfeld eine Beschreibung des zusätzlichen", Name="Hallmarks")
    hallmarks: Optional[Dac6Hallmarks] = None
    """
    Liste der Kennzeichen Auswahl der Kennzeichen der meldepflichtigen Gestaltung.Bestimmte Kennzeichen können nur ausgewählt werden, wenn der MainBenefitTest1 mit „true“ angegeben wird.Zusätzlich kann hier beim Kennzeichen "DAC6D1Other" überein Freitextfeld eine Beschreibung des zusätzlichen
    """


# @Api(Description="Angaben zur Offenlegung")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Disclosure:
    """
    Angaben zur Offenlegung
    """

    # @ApiMember(Description="Angabe im Format DEDYYYYMMDDXXXXXX <DE><D><YYYYMMDD><Bezeichner> DE enthält den ISO Staatencode von Deutschland D enthält den Buchstaben \"D\" (Disclosure/Datensatz) YYYYMMDD enthält das Ausgabedatum der Offenlegungsnummer XXXXXX ist eine Kombination aus Großbuchstaben (A-Z) und Ziffern (0-9) Dieses Feld darf nur für Korrekturen bei gleichzeitiger Angabe der dazugehörigen ArrangementID genutzt werden. Korrekturen für Meldungen mit einer DisclosureID, die nicht mit \"DE\" beginnt, sind nicht zulässig.", Name="DisclosureID")
    disclosure_i_d: Optional[str] = None
    """
    Angabe im Format DEDYYYYMMDDXXXXXX <DE><D><YYYYMMDD><Bezeichner> DE enthält den ISO Staatencode von Deutschland D enthält den Buchstaben "D" (Disclosure/Datensatz) YYYYMMDD enthält das Ausgabedatum der Offenlegungsnummer XXXXXX ist eine Kombination aus Großbuchstaben (A-Z) und Ziffern (0-9) Dieses Feld darf nur für Korrekturen bei gleichzeitiger Angabe der dazugehörigen ArrangementID genutzt werden. Korrekturen für Meldungen mit einer DisclosureID, die nicht mit "DE" beginnt, sind nicht zulässig.
    """


    # @ApiMember(Description="Angabe im Format DEDYYYYMMDDXXXXXX <DE><D><YYYYMMDD><Bezeichner> DE entspricht dem ISO Staatencode, hier steht bei einer in Deutschland übermittelten Meldung stets \"DE\". D steht für \"D\" wie Disclosure. YYYYMMDD ist das Datum der Vergabe der DisclosureID Bezeichner - 6-stellig Dieses Feld darf nur für Nachmeldungen von Nutzerdaten und Korrekturen von Nachmeldungen verwendet werden, wenn der Intermediär nicht von der Verschwiegenheitspflicht entbunden wurde. Nachmeldungen und Korrekturen für Meldungen mit einer RefDisclosureID, die nicht mit \"DE\" beginnt, sind nicht zulässig.", Name="RefDisclosureID")
    ref_disclosure_i_d: Optional[str] = None
    """
    Angabe im Format DEDYYYYMMDDXXXXXX <DE><D><YYYYMMDD><Bezeichner> DE entspricht dem ISO Staatencode, hier steht bei einer in Deutschland übermittelten Meldung stets "DE". D steht für "D" wie Disclosure. YYYYMMDD ist das Datum der Vergabe der DisclosureID Bezeichner - 6-stellig Dieses Feld darf nur für Nachmeldungen von Nutzerdaten und Korrekturen von Nachmeldungen verwendet werden, wenn der Intermediär nicht von der Verschwiegenheitspflicht entbunden wurde. Nachmeldungen und Korrekturen für Meldungen mit einer RefDisclosureID, die nicht mit "DE" beginnt, sind nicht zulässig.
    """


    # @ApiMember(Description="Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt. Hier kann nur \"DE\" oder \"EN\" gewählt werden.", Name="Language")
    language: Optional[LanguageCode] = None
    """
    Sprache Hier ist die Sprache als ISO Code anzugeben, in der die Meldung erfolgt. Hier kann nur "DE" oder "EN" gewählt werden.
    """


    # @ApiMember(Description="Meldepflichtiger", IsRequired=true, Name="Disclosing")
    disclosing: Optional[Dac6Discloser] = None
    """
    Meldepflichtiger
    """


    # @ApiMember(Description="Initialmeldung In diesem Feld muss angegeben werden, ob es sich um dieerste Meldung zu einer marktfähigen Gestaltung (Arrangement) handelt. Default value = false", IsRequired=true, Name="InitialDisclosureMA")
    initial_disclosure_m_a: Optional[bool] = None
    """
    Initialmeldung In diesem Feld muss angegeben werden, ob es sich um dieerste Meldung zu einer marktfähigen Gestaltung (Arrangement) handelt. Default value = false
    """


    # @ApiMember(Description="Angabe aller bekannten Nutzer", Name="RelevantTaxPayers")
    relevant_tax_payers: Optional[Dac6RelevantTaxPayers] = None
    """
    Angabe aller bekannten Nutzer
    """


    # @ApiMember(Description="Angabe aller bekannten Nutzer", Name="Intermediaries")
    intermediaries: Optional[Dac6Intermediaries] = None
    """
    Angabe aller bekannten Nutzer
    """


    # @ApiMember(Description="Angaben zu allen in einem Mitgliedstaat der Europäischen Union ansässigen Personen, die von der grenzüberschreitenden Steuergestaltung wahrscheinlich unmittelbar betroffen sind, einschließlich Angaben darüber, zu welchen Mitgliedstaaten der Europäischen Union sie in Beziehung stehen.", Name="Intermediaries")
    affected_persons: Optional[Dac6AffectedPersons] = None
    """
    Angaben zu allen in einem Mitgliedstaat der Europäischen Union ansässigen Personen, die von der grenzüberschreitenden Steuergestaltung wahrscheinlich unmittelbar betroffen sind, einschließlich Angaben darüber, zu welchen Mitgliedstaaten der Europäischen Union sie in Beziehung stehen.
    """


    # @ApiMember(Description="Angabe der Informationen zur Steuergestaltung", IsRequired=true, Name="DisclosureInformation")
    disclosure_information: Optional[Dac6DisclosureInformation] = None
    """
    Angabe der Informationen zur Steuergestaltung
    """


# @Api(Description="Gruppiert die Nutzdaten - Angabe dieser Elemente erfolgt sowohl bei der Nutzung vom BZSt Online Portal über das Formular sowie bei Lieferung über die ELMA Schnittstelle")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Arrangement:
    """
    Gruppiert die Nutzdaten - Angabe dieser Elemente erfolgt sowohl bei der Nutzung vom BZSt Online Portal über das Formular sowie bei Lieferung über die ELMA Schnittstelle
    """

    # @ApiMember(Description="Versionsangabe", IsRequired=true, Name="Version")
    version: Optional[str] = None
    """
    Versionsangabe
    """


    # @ApiMember(Description="Angaben zu den Kopfdaten", IsRequired=true, Name="Header")
    header: Optional[Dac6Header] = None
    """
    Angaben zu den Kopfdaten
    """


    # @ApiMember(Description="RegistriernummerAngabe im Format CCAYYYYMMDDXXXXXX <CC><A><YYYYMMDD><Bezeichner> CC enthält den ISO Staatencode des Mitgliedstaates in dem die erste Mitteilung zur Gestaltung erfolgt ist. Zulässige Werte sind: AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK A enthält den Buchstaben \"A\" (Arrangement/Gestaltung) YYYYMMDD enthält das Ausgabedatum der Registriernummer XXXXXX ist eine Kombination aus Großbuchstaben (A-Z) und Ziffern (0-9)", Name="ArrangementID")
    arrangement_i_d: Optional[str] = None
    """
    RegistriernummerAngabe im Format CCAYYYYMMDDXXXXXX <CC><A><YYYYMMDD><Bezeichner> CC enthält den ISO Staatencode des Mitgliedstaates in dem die erste Mitteilung zur Gestaltung erfolgt ist. Zulässige Werte sind: AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK A enthält den Buchstaben "A" (Arrangement/Gestaltung) YYYYMMDD enthält das Ausgabedatum der Registriernummer XXXXXX ist eine Kombination aus Großbuchstaben (A-Z) und Ziffern (0-9)
    """


    # @ApiMember(Description="Angaben zur Offenlegung", IsRequired=true, Name="Dac6Disclosure")
    dac6_disclosure: Optional[Dac6Disclosure] = None
    """
    Angaben zur Offenlegung
    """


class Dac6Verfahren(str, Enum):
    DA_C6 = 'DAC6'
    ISG = 'ISG'


# @Api(Description="Represents statistical information on a delivery.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Lieferungsdetails:
    """
    Represents statistical information on a delivery.
    """

    # @ApiMember(Description="Indicates whether the reported tax arrangement is domestic or cross-border.", Name="Verfahren")
    verfahren: Optional[Dac6Verfahren] = None
    """
    Indicates whether the reported tax arrangement is domestic or cross-border.
    """


    # @ApiMember(Description="Disclosure-ID e.g. DED20190718UVWXYZ", Name="Version")
    offenlegungsnummer: Optional[str] = None
    """
    Disclosure-ID e.g. DED20190718UVWXYZ
    """


    registriernummer: Optional[str] = None
    # @ApiMember(Description="Disclosure ID of the report, which this report refers to.", Name="Bezugsoffenlegung")
    bezugsoffenlegung: Optional[str] = None
    """
    Disclosure ID of the report, which this report refers to.
    """


    # @ApiMember(Description="File name of the delivery file submitted to ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133.xml", Name="Eingabedateiname")
    eingabedateiname: Optional[str] = None
    """
    File name of the delivery file submitted to ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133.xml
    """


    # @ApiMember(Description="Time stamp at which the message was created.", Name="Erstellungsdatum")
    erstellungsdatum: Optional[datetime.datetime] = None
    """
    Time stamp at which the message was created.
    """


    message_ref_id: Optional[str] = None
    # @ApiMember(Description="File name of the file returned by ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133_da5b42ce-9d27-4255-920e-1a089eeb0ec8.xml", Name="Version")
    ausgabedateiname: Optional[str] = None
    """
    File name of the file returned by ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133_da5b42ce-9d27-4255-920e-1a089eeb0ec8.xml
    """


    # @ApiMember(Description="Time stamp of the completion process protocol.", Name="Protokollerstellungsdatum")
    protokollerstellungsdatum: Optional[datetime.datetime] = None
    """
    Time stamp of the completion process protocol.
    """


class Dac6EintragArt(str, Enum):
    HINWEIS = 'HINWEIS'
    FEHLER = 'FEHLER'


# @Api(Description="Represents a protocol entry")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Protokolleintrag:
    """
    Represents a protocol entry
    """

    # @ApiMember(Description="The type of entry.", Name="EintragArt")
    eintrag_art: Optional[Dac6EintragArt] = None
    """
    The type of entry.
    """


    # @ApiMember(Description="Code value of the entry type - error code or information code.", Name="Version")
    eintrag_code: Optional[str] = None
    """
    Code value of the entry type - error code or information code.
    """


    # @ApiMember(Description="Text (in German) of the protocol entry.", Name="EintragText")
    eintrag_text: Optional[str] = None
    """
    Text (in German) of the protocol entry.
    """


# @Api(Description="Represents an overview result of a DAC6 or ISG delivery process.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Dac6Verarbeitungsprotokoll:
    """
    Represents an overview result of a DAC6 or ISG delivery process.
    """

    # @ApiMember(Description="The version of the process protocol.", Name="Version")
    version: Optional[str] = None
    """
    The version of the process protocol.
    """


    # @ApiMember(Description="The type of message.", Name="MessageType")
    message_type: Optional[str] = None
    """
    The type of message.
    """


    # @ApiMember(Description="The statistical information on the delivery.", Name="Lieferungsdetails")
    lieferungsdetails: Optional[Lieferungsdetails] = None
    """
    The statistical information on the delivery.
    """


    # @ApiMember(Description="Contains protocol entries for the delivery.", Name="Protokolleintraege")
    protokolleintraege: Optional[List[Protokolleintrag]] = None
    """
    Contains protocol entries for the delivery.
    """


# @Api(Description="Stellt grenzüberschreitende Steuergestaltungen dar.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DAC6:
    """
    Stellt grenzüberschreitende Steuergestaltungen dar.
    """

    # @ApiMember(Description="Dient dazu, spätere Aktualisierungen des Schemas zu ermöglichen. Hier ist nur der feste Wert 000001 zulässig.", IsRequired=true, Name="Version")
    version: Optional[str] = None
    """
    Dient dazu, spätere Aktualisierungen des Schemas zu ermöglichen. Hier ist nur der feste Wert 000001 zulässig.
    """


    # @ApiMember(Description="Wird verwendet, um die Sprache der Inhalte des Datenteils zu kennzeichnen. Zulässige Werte sind Sprachcodes aus 2 Kleinbuchstaben nach ISO 639-1.", IsRequired=true, Name="Sprache")
    sprache: Optional[LanguageCode] = None
    """
    Wird verwendet, um die Sprache der Inhalte des Datenteils zu kennzeichnen. Zulässige Werte sind Sprachcodes aus 2 Kleinbuchstaben nach ISO 639-1.
    """


    # @ApiMember(Description="Gestaltung Gruppiert die Nutzdaten - Angabe dieser Elemente erfolgt sowohl bei der Nutzung vom BZSt Online Portal über das Formular sowie bei Lieferung über die ELMA Schnittstelle", IsRequired=true, Name="Dac6Arrangement")
    dac6_arrangement: Optional[Dac6Arrangement] = None
    """
    Gestaltung Gruppiert die Nutzdaten - Angabe dieser Elemente erfolgt sowohl bei der Nutzung vom BZSt Online Portal über das Formular sowie bei Lieferung über die ELMA Schnittstelle
    """


    # @ApiMember(Description="Enthält eine Übersicht über das Verarbeitungsergebnis einer DAC6- oder ISG-Lieferung.", IsRequired=true, Name="Dac6Verarbeitungsprotokoll")
    dac6_verarbeitungsprotokoll: Optional[Dac6Verarbeitungsprotokoll] = None
    """
    Enthält eine Übersicht über das Verarbeitungsergebnis einer DAC6- oder ISG-Lieferung.
    """


# @Api(Description="Specifies a request to generate a DAC6 ELMA-compatible XML from a DAC6 data model.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateDac6XmlFileBase(IPost, IStageableRequest):
    """
    Specifies a request to generate a DAC6 ELMA-compatible XML from a DAC6 data model.
    """

    # @ApiMember(Description="Internal short name for the ELMA data file.  This identifier is only used for the internal assignment of the sender.  It varies from 1 to maximum 12 alphanumeric characters and may not contain any special symbol.", Name="FileId")
    file_id: Optional[str] = None
    """
    Internal short name for the ELMA data file.  This identifier is only used for the internal assignment of the sender.  It varies from 1 to maximum 12 alphanumeric characters and may not contain any special symbol.
    """


    # @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")
    auth_steuernummer: Optional[str] = None
    """
    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 account identifier of a BZSt-Online Portal (BOP) user.  10-character text field that may only contain numbers (0-9).", IsRequired=true, Name="AccountId")
    account_id: Optional[str] = None
    """
    The account identifier of a BZSt-Online Portal (BOP) user.  10-character text field that may only contain numbers (0-9).
    """


    # @ApiMember(Description="User custom ID.  This field can be filled with internal reference information of the user.", Name="KundeneigeneId")
    kundeneigene_id: Optional[str] = None
    """
    User custom ID.  This field can be filled with internal reference information of the user.
    """


    # @ApiMember(Description="The version number of the ELMAKOM definition.", IsRequired=true, Name="ElmakomVersion")
    elmakom_version: Optional[str] = None
    """
    The version number of the ELMAKOM definition.
    """


    # @ApiMember(Description="Should operations be staged on the ELMA server?  true: operations are executed on the Test ELMA server.  false: operations are executed on the Live (Production) ELMA server.", Name="StagingEnabled")
    staging_enabled: Optional[bool] = None
    """
    Should operations be staged on the ELMA server?  true: operations are executed on the Test ELMA server.  false: operations are executed on the Live (Production) ELMA server.
    """


    # @ApiMember(Description="The data model that represents the DAC6 content.", Name="DataModel")
    data_model: Optional[DAC6] = None
    """
    The data model that represents the DAC6 content.
    """


# @Api(Description="Represents a request to generate an ELMA-compatible XML file from a DAC6 data model in an asynchronous operation.")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateDac6XmlFileAsync(CreateDac6XmlFileBase):
    """
    Represents a request to generate an ELMA-compatible XML file from a DAC6 data model in an asynchronous operation.
    """

    pass

Python CreateDac6XmlFileAsync 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 /async/elma/dac6/xml/file HTTP/1.1 
Host: reportfiling.staging.pwc.de 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	fileId: String,
	authSteuernummer: String,
	accountId: String,
	kundeneigeneId: String,
	elmakomVersion: String,
	stagingEnabled: False,
	dataModel: 
	{
		version: String,
		sprache: AA,
		dac6Arrangement: 
		{
			version: String,
			header: 
			{
				receivingCountries: 
				[
					AF
				],
				messageRefId: String,
				timestamp: 0001-01-01
			},
			arrangementID: String,
			dac6Disclosure: 
			{
				disclosureID: String,
				refDisclosureID: String,
				language: AA,
				disclosing: 
				{
					id: 
					{
						individual: 
						{
							individualName: 
							{
								precedingTitle: String,
								title: String,
								firstName: String,
								middleName: String,
								namePrefix: String,
								lastName: String,
								generationIdentifier: String,
								suffix: String,
								generalSuffix: String
							},
							birthDate: 0001-01-01,
							birthPlace: String,
							tiNs: 
							[
								{
									issuedBy: AF,
									value: String
								}
							],
							address: 
							{
								street: String,
								buildingIdentifier: String,
								suiteIdentifier: String,
								floorIdentifier: String,
								districtName: String,
								pob: String,
								postCode: String,
								city: String,
								country: AF
							},
							emailAddress: String,
							resCountryCodes: 
							[
								AF
							]
						},
						organisation: 
						{
							organisationNames: 
							[
								{
									language: AA,
									value: String
								}
							],
							tiNs: 
							[
								{
									issuedBy: AF,
									value: String
								}
							],
							address: 
							{
								street: String,
								buildingIdentifier: String,
								suiteIdentifier: String,
								floorIdentifier: String,
								districtName: String,
								pob: String,
								postCode: String,
								city: String,
								country: AF
							},
							emailAddress: String,
							resCountryCodes: 
							[
								AF
							]
						}
					},
					liability: 
					{
						intermediaryDiscloser: 
						{
							intermediaryNexus: INEXa,
							capacity: DAC61101
						},
						relevantTaxpayerDiscloser: 
						{
							relevantTaxpayerNexus: RTNEXa,
							capacity: DAC61104
						}
					}
				},
				initialDisclosureMA: False,
				relevantTaxPayers: 
				[
					{
						id: 
						{
							individual: 
							{
								individualName: 
								{
									precedingTitle: String,
									title: String,
									firstName: String,
									middleName: String,
									namePrefix: String,
									lastName: String,
									generationIdentifier: String,
									suffix: String,
									generalSuffix: String
								},
								birthDate: 0001-01-01,
								birthPlace: String,
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							},
							organisation: 
							{
								organisationNames: 
								[
									{
										language: AA,
										value: String
									}
								],
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							}
						},
						taxpayerImplementingDate: 0001-01-01,
						associatedEnterprises: 
						[
							{
								associatedEnterpriseID: 
								{
									individual: 
									{
										individualName: 
										{
											precedingTitle: String,
											title: String,
											firstName: String,
											middleName: String,
											namePrefix: String,
											lastName: String,
											generationIdentifier: String,
											suffix: String,
											generalSuffix: String
										},
										birthDate: 0001-01-01,
										birthPlace: String,
										tiNs: 
										[
											{
												issuedBy: AF,
												value: String
											}
										],
										address: 
										{
											street: String,
											buildingIdentifier: String,
											suiteIdentifier: String,
											floorIdentifier: String,
											districtName: String,
											pob: String,
											postCode: String,
											city: String,
											country: AF
										},
										emailAddress: String,
										resCountryCodes: 
										[
											AF
										]
									},
									organisation: 
									{
										organisationNames: 
										[
											{
												language: AA,
												value: String
											}
										],
										tiNs: 
										[
											{
												issuedBy: AF,
												value: String
											}
										],
										address: 
										{
											street: String,
											buildingIdentifier: String,
											suiteIdentifier: String,
											floorIdentifier: String,
											districtName: String,
											pob: String,
											postCode: String,
											city: String,
											country: AF
										},
										emailAddress: String,
										resCountryCodes: 
										[
											AF
										]
									}
								},
								affectedPerson: False
							}
						]
					}
				],
				intermediaries: 
				[
					{
						id: 
						{
							individual: 
							{
								individualName: 
								{
									precedingTitle: String,
									title: String,
									firstName: String,
									middleName: String,
									namePrefix: String,
									lastName: String,
									generationIdentifier: String,
									suffix: String,
									generalSuffix: String
								},
								birthDate: 0001-01-01,
								birthPlace: String,
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							},
							organisation: 
							{
								organisationNames: 
								[
									{
										language: AA,
										value: String
									}
								],
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							}
						},
						capacity: DAC61101,
						nationalExemption: 
						{
							exemption: False,
							countryExemptions: 
							{
								countryExemptions: 
								[
									AF
								]
							}
						}
					}
				],
				affectedPersons: 
				[
					{
						affectedPersonID: 
						{
							individual: 
							{
								individualName: 
								{
									precedingTitle: String,
									title: String,
									firstName: String,
									middleName: String,
									namePrefix: String,
									lastName: String,
									generationIdentifier: String,
									suffix: String,
									generalSuffix: String
								},
								birthDate: 0001-01-01,
								birthPlace: String,
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							},
							organisation: 
							{
								organisationNames: 
								[
									{
										language: AA,
										value: String
									}
								],
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							}
						}
					}
				],
				disclosureInformation: 
				{
					implementingDate: 0001-01-01,
					reason: DAC6701,
					summary: 
					{
						disclosure_Name: String,
						disclosure_Descriptions: 
						[
							{
								language: AA,
								value: String
							}
						]
					},
					nationalProvision: 
					{
						texts: 
						[
							{
								language: AA,
								value: String
							}
						],
						country: AF
					},
					amount: 
					{
						currCode: AED,
						value: 0
					},
					arrangementChart: 
					{
						id: 
						{
							individual: 
							{
								individualName: 
								{
									precedingTitle: String,
									title: String,
									firstName: String,
									middleName: String,
									namePrefix: String,
									lastName: String,
									generationIdentifier: String,
									suffix: String,
									generalSuffix: String
								},
								birthDate: 0001-01-01,
								birthPlace: String,
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							},
							organisation: 
							{
								organisationNames: 
								[
									{
										language: AA,
										value: String
									}
								],
								tiNs: 
								[
									{
										issuedBy: AF,
										value: String
									}
								],
								address: 
								{
									street: String,
									buildingIdentifier: String,
									suiteIdentifier: String,
									floorIdentifier: String,
									districtName: String,
									pob: String,
									postCode: String,
									city: String,
									country: AF
								},
								emailAddress: String,
								resCountryCodes: 
								[
									AF
								]
							}
						},
						ownership: 0,
						investAmount: 
						{
							currCode: AED,
							value: 0
						},
						otherInfos: 
						[
							{
								language: AA,
								value: String
							}
						],
						listChilds: 
						[
							{
								id: 
								{
									individual: 
									{
										individualName: 
										{
											precedingTitle: String,
											title: String,
											firstName: String,
											middleName: String,
											namePrefix: String,
											lastName: String,
											generationIdentifier: String,
											suffix: String,
											generalSuffix: String
										},
										birthDate: 0001-01-01,
										birthPlace: String,
										tiNs: 
										[
											{
												issuedBy: AF,
												value: String
											}
										],
										address: 
										{
											street: String,
											buildingIdentifier: String,
											suiteIdentifier: String,
											floorIdentifier: String,
											districtName: String,
											pob: String,
											postCode: String,
											city: String,
											country: AF
										},
										emailAddress: String,
										resCountryCodes: 
										[
											AF
										]
									},
									organisation: 
									{
										organisationNames: 
										[
											{
												language: AA,
												value: String
											}
										],
										tiNs: 
										[
											{
												issuedBy: AF,
												value: String
											}
										],
										address: 
										{
											street: String,
											buildingIdentifier: String,
											suiteIdentifier: String,
											floorIdentifier: String,
											districtName: String,
											pob: String,
											postCode: String,
											city: String,
											country: AF
										},
										emailAddress: String,
										resCountryCodes: 
										[
											AF
										]
									}
								},
								ownership: 0,
								investAmount: 
								{
									currCode: AED,
									value: 0
								},
								otherInfos: 
								[
									{
										language: AA,
										value: String
									}
								],
								listChilds: 
								[
									{
										id: 
										{
											individual: 
											{
												individualName: 
												{
													precedingTitle: String,
													title: String,
													firstName: String,
													middleName: String,
													namePrefix: String,
													lastName: String,
													generationIdentifier: String,
													suffix: String,
													generalSuffix: String
												},
												birthDate: 0001-01-01,
												birthPlace: String,
												tiNs: 
												[
													{
														issuedBy: AF,
														value: String
													}
												],
												address: 
												{
													street: String,
													buildingIdentifier: String,
													suiteIdentifier: String,
													floorIdentifier: String,
													districtName: String,
													pob: String,
													postCode: String,
													city: String,
													country: AF
												},
												emailAddress: String,
												resCountryCodes: 
												[
													AF
												]
											},
											organisation: 
											{
												organisationNames: 
												[
													{
														language: AA,
														value: String
													}
												],
												tiNs: 
												[
													{
														issuedBy: AF,
														value: String
													}
												],
												address: 
												{
													street: String,
													buildingIdentifier: String,
													suiteIdentifier: String,
													floorIdentifier: String,
													districtName: String,
													pob: String,
													postCode: String,
													city: String,
													country: AF
												},
												emailAddress: String,
												resCountryCodes: 
												[
													AF
												]
											}
										},
										ownership: 0,
										investAmount: 
										{
											currCode: AED,
											value: 0
										},
										otherInfos: 
										[
											{
												language: AA,
												value: String
											}
										],
										listChilds: 
										[
											{
												id: 
												{
													individual: 
													{
														individualName: 
														{
															precedingTitle: String,
															title: String,
															firstName: String,
															middleName: String,
															namePrefix: String,
															lastName: String,
															generationIdentifier: String,
															suffix: String,
															generalSuffix: String
														},
														birthDate: 0001-01-01,
														birthPlace: String,
														tiNs: 
														[
															{
																issuedBy: AF,
																value: String
															}
														],
														address: 
														{
															street: String,
															buildingIdentifier: String,
															suiteIdentifier: String,
															floorIdentifier: String,
															districtName: String,
															pob: String,
															postCode: String,
															city: String,
															country: AF
														},
														emailAddress: String,
														resCountryCodes: 
														[
															AF
														]
													},
													organisation: 
													{
														organisationNames: 
														[
															{
																language: AA,
																value: String
															}
														],
														tiNs: 
														[
															{
																issuedBy: AF,
																value: String
															}
														],
														address: 
														{
															street: String,
															buildingIdentifier: String,
															suiteIdentifier: String,
															floorIdentifier: String,
															districtName: String,
															pob: String,
															postCode: String,
															city: String,
															country: AF
														},
														emailAddress: String,
														resCountryCodes: 
														[
															AF
														]
													}
												},
												ownership: 0,
												investAmount: 
												{
													currCode: AED,
													value: 0
												},
												otherInfos: 
												[
													{
														language: AA,
														value: String
													}
												]
											}
										]
									}
								]
							}
						]
					},
					concernedMSs: 
					[
						AT
					],
					mainBenefitTest1: False,
					hallmarks: 
					{
						listHallmarks: 
						{
							hallmarks: 
							[
								DAC6A1
							]
						},
						daC6D1OtherInfos: 
						[
							{
								language: AA,
								value: String
							}
						]
					}
				}
			}
		},
		dac6Verarbeitungsprotokoll: 
		{
			version: String,
			messageType: DAC6,
			lieferungsdetails: 
			{
				verfahren: DAC6,
				offenlegungsnummer: String,
				registriernummer: String,
				bezugsoffenlegung: String,
				eingabedateiname: String,
				erstellungsdatum: 0001-01-01,
				messageRefId: String,
				ausgabedateiname: String,
				protokollerstellungsdatum: 0001-01-01
			},
			protokolleintraege: 
			[
				{
					eintragArt: HINWEIS,
					eintragCode: String,
					eintragText: String
				}
			]
		}
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	
}