Report Filing Service

<back to all web services

CreateDac6XmlFile

Generate XML FileDAC6Sync

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

Requires Authentication
The following routes are available for this service:
POST/sync/elma/dac6/xml/file
import Foundation
import ServiceStack

/**
* Represents a request to generate an ELMA-compatible XML file from a DAC6 data model.
*/
// @Api(Description="Represents a request to generate an ELMA-compatible XML file from a DAC6 data model.")
public class CreateDac6XmlFile : CreateDac6XmlFileBase
{
    required public init(){ super.init() }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
    }
}

/**
* Specifies a request to generate a DAC6 ELMA-compatible XML from a DAC6 data model.
*/
// @Api(Description="Specifies a request to generate a DAC6 ELMA-compatible XML from a DAC6 data model.")
public class CreateDac6XmlFileBase : IPost, IStageableRequest, Codable
{
    /**
    * 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="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")
    public var fileId:String

    /**
    * 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 var authSteuernummer:String

    /**
    * 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 var accountId:String

    /**
    * User custom ID.  This field can be filled with internal reference information of the user.
    */
    // @ApiMember(Description="User custom ID.  This field can be filled with internal reference information of the user.", Name="KundeneigeneId")
    public var kundeneigeneId:String

    /**
    * The version number of the ELMAKOM definition.
    */
    // @ApiMember(Description="The version number of the ELMAKOM definition.", IsRequired=true, Name="ElmakomVersion")
    public var elmakomVersion:String

    /**
    * 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="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")
    public var stagingEnabled:Bool?

    /**
    * The data model that represents the DAC6 content.
    */
    // @ApiMember(Description="The data model that represents the DAC6 content.", Name="DataModel")
    public var dataModel:DAC6

    required public init(){}
}

/**
* Stellt grenzüberschreitende Steuergestaltungen dar.
*/
// @Api(Description="Stellt grenzüberschreitende Steuergestaltungen dar.")
public class DAC6 : Codable
{
    /**
    * Dient dazu, spätere Aktualisierungen des Schemas zu ermöglichen. Hier ist nur der feste Wert 000001 zulässig.
    */
    // @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")
    public var version:String

    /**
    * 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="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")
    public var sprache:LanguageCode?

    /**
    * 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="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")
    public var dac6Arrangement:Dac6Arrangement

    /**
    * Enthält eine Übersicht über das Verarbeitungsergebnis einer DAC6- oder ISG-Lieferung.
    */
    // @ApiMember(Description="Enthält eine Übersicht über das Verarbeitungsergebnis einer DAC6- oder ISG-Lieferung.", IsRequired=true, Name="Dac6Verarbeitungsprotokoll")
    public var dac6Verarbeitungsprotokoll:Dac6Verarbeitungsprotokoll

    required public init(){}
}

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

/**
* 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
*/
// @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")
public class Dac6Arrangement : Codable
{
    /**
    * Versionsangabe
    */
    // @ApiMember(Description="Versionsangabe", IsRequired=true, Name="Version")
    public var version:String

    /**
    * Angaben zu den Kopfdaten
    */
    // @ApiMember(Description="Angaben zu den Kopfdaten", IsRequired=true, Name="Header")
    public var header:Dac6Header

    /**
    * 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="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")
    public var arrangementID:String

    /**
    * Angaben zur Offenlegung
    */
    // @ApiMember(Description="Angaben zur Offenlegung", IsRequired=true, Name="Dac6Disclosure")
    public var dac6Disclosure:Dac6Disclosure

    required public init(){}
}

/**
* Angaben zu den Kopfdaten
*/
// @Api(Description="Angaben zu den Kopfdaten")
public class Dac6Header : Codable
{
    /**
    * Empfängerstaaten
    */
    // @ApiMember(Description="Empfängerstaaten", Name="ReceivingCountries")
    public var receivingCountries:[CountryCode?] = []

    /**
    * 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="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")
    public var messageRefId:String

    /**
    * 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.
    */
    // @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")
    public var timestamp:Date?

    required public init(){}
}

/**
* Angaben zur Offenlegung
*/
// @Api(Description="Angaben zur Offenlegung")
public class Dac6Disclosure : Codable
{
    /**
    * 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 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")
    public var disclosureID:String

    /**
    * 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="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")
    public var refDisclosureID:String

    /**
    * 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="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")
    public var language:LanguageCode?

    /**
    * Meldepflichtiger
    */
    // @ApiMember(Description="Meldepflichtiger", IsRequired=true, Name="Disclosing")
    public var disclosing:Dac6Discloser

    /**
    * 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="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")
    public var initialDisclosureMA:Bool?

    /**
    * Angabe aller bekannten Nutzer
    */
    // @ApiMember(Description="Angabe aller bekannten Nutzer", Name="RelevantTaxPayers")
    public var relevantTaxPayers:Dac6RelevantTaxPayers

    /**
    * Angabe aller bekannten Nutzer
    */
    // @ApiMember(Description="Angabe aller bekannten Nutzer", Name="Intermediaries")
    public var intermediaries:Dac6Intermediaries

    /**
    * 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="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")
    public var affectedPersons:Dac6AffectedPersons

    /**
    * Angabe der Informationen zur Steuergestaltung
    */
    // @ApiMember(Description="Angabe der Informationen zur Steuergestaltung", IsRequired=true, Name="DisclosureInformation")
    public var disclosureInformation:Dac6DisclosureInformation

    required public init(){}
}

/**
* Angaben zum Meldepflichtigen
*/
// @Api(Description="Angaben zum Meldepflichtigen")
public class Dac6Discloser : Codable
{
    /**
    * Identifikationsdaten zum Meldepflichtigen
    */
    // @ApiMember(Description="Identifikationsdaten zum Meldepflichtigen", IsRequired=true, Name="ID")
    public var id:Dac6PersonOrganisation

    /**
    * Meldepflichtiger 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 Angabe der Verbindung des Intermediärs zu Deutschland und des Meldegrunds. Die Angaben zum Meldepflichtigen sind durch eine Geschäftsregel verpflichtend vorzunehmen.", Name="Liability")
    public var liability:Dac6Liability

    required public init(){}
}

/**
* Entweder Angabe von Individual oder Angabe von Organisation
*/
// @Api(Description="Entweder Angabe von Individual oder Angabe von Organisation")
public class Dac6PersonOrganisation : Codable
{
    /**
    * Natürliche Person Zwingend anzugeben, wenn PersonOrganisation keine Organisation ist. Die Folgeeintragungen sind abhängig von dieser Auswahl.
    */
    // @ApiMember(Description="Natürliche Person Zwingend anzugeben, wenn PersonOrganisation keine Organisation ist. Die Folgeeintragungen sind abhängig von dieser Auswahl.", IsRequired=true, Name="Individual")
    public var individual:Dac6Person

    /**
    * Organisation Zwingend anzugeben, PersonOrganisation keine Person 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")
    public var organisation:Dac6Organisation

    required public init(){}
}

/**
* Natürliche Person
*/
// @Api(Description="Natürliche Person")
public class Dac6Person : Codable
{
    /**
    * Namensangaben
    */
    // @ApiMember(Description="Namensangaben", IsRequired=true, Name="IndividualName")
    public var individualName:Dac6NamePerson

    /**
    * GeburtsdatumFormat: YYYY-MM-DD
    */
    // @ApiMember(Description="GeburtsdatumFormat: YYYY-MM-DD", IsRequired=true, Name="BirthDate")
    public var birthDate:Date

    /**
    * Geburtsort
    */
    // @ApiMember(Description="Geburtsort", IsRequired=true, Name="BirthPlace")
    public var birthPlace:String

    /**
    * Steueridentifikationsmerkmale
    */
    // @ApiMember(Description="Steueridentifikationsmerkmale", IsRequired=true, Name="TINs")
    public var tiNs:[Dac6TIN] = []

    /**
    * Adressangaben
    */
    // @ApiMember(Description="Adressangaben", IsRequired=true, Name="Address")
    public var address:Dac6Address

    /**
    * E-Mailadresse
    */
    // @ApiMember(Description="E-Mailadresse", Name="EmailAddress")
    public var emailAddress:String

    /**
    * Ansässigkeitsstaaten
    */
    // @ApiMember(Description="Ansässigkeitsstaaten", IsRequired=true, Name="ResCountryCodes")
    public var resCountryCodes:[CountryCode] = []

    required public init(){}
}

/**
* Stellt die Namensangaben dar.
*/
// @Api(Description="Stellt die Namensangaben dar.")
public class Dac6NamePerson : Codable
{
    /**
    * Vorangestellter Titel
    */
    // @ApiMember(Description="Vorangestellter Titel", IsRequired=true, Name="PrecedingTitle")
    public var precedingTitle:String

    /**
    * Titel
    */
    // @ApiMember(Description="Titel", Name="Title")
    public var title:String

    /**
    * Vorname
    */
    // @ApiMember(Description="Vorname", IsRequired=true, Name="FirstName")
    public var firstName:String

    /**
    * Zweitname (weitere Namen)
    */
    // @ApiMember(Description="Zweitname (weitere Namen)", Name="MiddleName")
    public var middleName:String

    /**
    * Namenszusatz
    */
    // @ApiMember(Description="Namenszusatz", Name="NamePrefix")
    public var namePrefix:String

    /**
    * Nachname
    */
    // @ApiMember(Description="Nachname", IsRequired=true, Name="LastName")
    public var lastName:String

    /**
    * Generationszusatz
    */
    // @ApiMember(Description="Generationszusatz", Name="GenerationIdentifier")
    public var generationIdentifier:String

    /**
    * Titelzusatz
    */
    // @ApiMember(Description="Titelzusatz", Name="Suffix")
    public var suffix:String

    /**
    * Allgemeiner Zusatz
    */
    // @ApiMember(Description="Allgemeiner Zusatz", Name="GeneralSuffix")
    public var generalSuffix:String

    required public init(){}
}

/**
* Steueridentifikationsmerkmal Stellt die Angabe der Steuernummer dar.
*/
// @Api(Description="Steueridentifikationsmerkmal Stellt die Angabe der Steuernummer dar.")
public class Dac6TIN : Codable
{
    /**
    * Ausstellender Staat
    */
    // @ApiMember(Description="Ausstellender Staat", Name="IssuedBy")
    public var issuedBy:CountryCode

    /**
    * Steuernummer
    */
    // @ApiMember(Description="Steuernummer", IsRequired=true, Name="Value")
    public var value:String

    required public init(){}
}

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

/**
* Stellt die Andressangaben dar.
*/
// @Api(Description="Stellt die Andressangaben dar.")
public class Dac6Address : Codable
{
    /**
    * Straße
    */
    // @ApiMember(Description="Straße", Name="Street")
    public var street:String

    /**
    * Hausnummer
    */
    // @ApiMember(Description="Hausnummer", Name="BuildingIdentifier")
    public var buildingIdentifier:String

    /**
    * Wohnungsbezeichnung
    */
    // @ApiMember(Description="Wohnungsbezeichnung", Name="SuiteIdentifier")
    public var suiteIdentifier:String

    /**
    * Etagenbezeichnung
    */
    // @ApiMember(Description="Etagenbezeichnung", Name="FloorIdentifier")
    public var floorIdentifier:String

    /**
    * Verwaltungsbezirk
    */
    // @ApiMember(Description="Verwaltungsbezirk", Name="DistrictName")
    public var districtName:String

    /**
    * Postfach
    */
    // @ApiMember(Description="Postfach", Name="POB")
    public var pob:String

    /**
    * Postleitzahl
    */
    // @ApiMember(Description="Postleitzahl", Name="PostCode")
    public var postCode:String

    /**
    * Ort
    */
    // @ApiMember(Description="Ort", IsRequired=true, Name="City")
    public var city:String

    /**
    * Staat Zweibuchstabiges Länderkürzel nach ISO Norm 3166-1 Alpha 2
    */
    // @ApiMember(Description="Staat Zweibuchstabiges Länderkürzel nach ISO Norm 3166-1 Alpha 2", IsRequired=true, Name="Country")
    public var country:CountryCode

    required public init(){}
}

/**
* Organisation
*/
// @Api(Description="Organisation")
public class Dac6Organisation : Codable
{
    /**
    * Die Name der Organisation
    */
    // @ApiMember(Description="Die Name der Organisation", IsRequired=true, Name="OrganisationNames")
    public var organisationNames:[Dac6NameOrganisation] = []

    /**
    * Steueridentifikationsmerkmale
    */
    // @ApiMember(Description="Steueridentifikationsmerkmale", IsRequired=true, Name="TINs")
    public var tiNs:[Dac6TIN] = []

    /**
    * Adressangaben
    */
    // @ApiMember(Description="Adressangaben", IsRequired=true, Name="Address")
    public var address:Dac6Address

    /**
    * E-Mailadresse
    */
    // @ApiMember(Description="E-Mailadresse", Name="EmailAddress")
    public var emailAddress:String

    /**
    * Ansässigkeitsstaaten
    */
    // @ApiMember(Description="Ansässigkeitsstaaten", IsRequired=true, Name="ResCountryCodes")
    public var resCountryCodes:[CountryCode] = []

    required public init(){}
}

/**
* Stellt den Name der Organisation dar
*/
// @Api(Description="Stellt den Name der Organisation dar")
public class Dac6NameOrganisation : Codable
{
    /**
    * 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="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")
    public var language:LanguageCode

    /**
    * Namenswert der Organisation
    */
    // @ApiMember(Description="Namenswert der Organisation", IsRequired=true, Name="Value")
    public var value:String

    required public init(){}
}

/**
* Angabe der Verbindung des Intermediärs zu Deutschland und des Meldegrunds. Die Angaben zum Meldepflichtigen sind durch eine Geschäftsregel verpflichtend vorzunehmen.
*/
// @Api(Description="Angabe der Verbindung des Intermediärs zu Deutschland und des Meldegrunds. Die Angaben zum Meldepflichtigen sind durch eine Geschäftsregel verpflichtend vorzunehmen.")
public class Dac6Liability : Codable
{
    /**
    * Meldepflichtiger Intermediär Dieses Feld ist verpflichtend anzugeben, wenn Liability kein RelevantTaxpayerDiscloser ist.
    */
    // @ApiMember(Description="Meldepflichtiger Intermediär Dieses Feld ist verpflichtend anzugeben, wenn Liability kein RelevantTaxpayerDiscloser ist.", IsRequired=true, Name="IntermediaryDiscloser")
    public var intermediaryDiscloser:Dac6IntermediaryDiscloser

    /**
    * Meldepflichtiger Nutzer Dieses Feld ist verpflichtend anzugeben, wenn Liability kein IntermediaryDiscloser ist.
    */
    // @ApiMember(Description="Meldepflichtiger Nutzer Dieses Feld ist verpflichtend anzugeben, wenn Liability kein IntermediaryDiscloser ist.", IsRequired=true, Name="RelevantTaxpayerDiscloser")
    public var relevantTaxpayerDiscloser:Dac6RelevantTaxpayerDiscloser

    required public init(){}
}

/**
* Meldepflichtiger Intermediär
*/
// @Api(Description="Meldepflichtiger Intermediär")
public class Dac6IntermediaryDiscloser : Codable
{
    /**
    * 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="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")
    public var intermediaryNexus:Dac6IntermediaryNexus?

    /**
    * Rolle des Intermediärs DAC61101 – Entwicklung / Vertrieb /Umsetzungsunterstützung DAC61102 – Dienstleister (organisierende / verwaltendeTätigkeit
    */
    // @ApiMember(Description="Rolle des Intermediärs DAC61101 – Entwicklung / Vertrieb /Umsetzungsunterstützung DAC61102 – Dienstleister (organisierende / verwaltendeTätigkeit", IsRequired=true, Name="IntermediaryNexus")
    public var capacity:Dac6IntermediaryCapacity?

    required public init(){}
}

public enum Dac6IntermediaryNexus : String, Codable
{
    case INEXa
    case INEXb
    case INEXc
    case INEXd
}

public enum Dac6IntermediaryCapacity : String, Codable
{
    case DAC61101
    case DAC61102
}

/**
* Meldepflichtiger Nutzer
*/
// @Api(Description="Meldepflichtiger Nutzer")
public class Dac6RelevantTaxpayerDiscloser : Codable
{
    /**
    * 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="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")
    public var relevantTaxpayerNexus:Dac6RelevantTaxpayerNexus?

    /**
    * Rolle des Intermediärs DAC61104 - Verschwiegenheitspflicht des Intermediärs DAC61105 - Intermediär aus Nicht-EU-Staat DAC61106 - Selbst konzipierte Gestaltung
    */
    // @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")
    public var capacity:Dac6TaxpayerCapacity?

    required public init(){}
}

public enum Dac6RelevantTaxpayerNexus : String, Codable
{
    case RTNEXa
    case RTNEXb
    case RTNEXc
    case RTNEXd
}

public enum Dac6TaxpayerCapacity : String, Codable
{
    case DAC61104
    case DAC61105
    case DAC61106
}

/**
* Angabe aller bekannten Nutzer
*/
public class Dac6RelevantTaxPayers : Codable
{
    required public init(){}
}

/**
* Angabe zum jeweiligen Intermediär
*/
public class Dac6Intermediaries : Codable
{
    required public init(){}
}

/**
* 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.
*/
public class Dac6AffectedPersons : Codable
{
    required public init(){}
}

/**
* Angabe der Informationen zur Steuergestaltung
*/
// @Api(Description="Angabe der Informationen zur Steuergestaltung")
public class Dac6DisclosureInformation : Codable
{
    /**
    * 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="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")
    public var implementingDate:Date?

    /**
    * 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="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")
    public var reason:Dac6DisclosurerReason?

    /**
    * Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung.
    */
    // @ApiMember(Description="Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung.", Name="Summary")
    public var summary:Dac6Summary

    /**
    * Rechtsvorschrift
    */
    // @ApiMember(Description="Rechtsvorschrift", Name="NationalProvision")
    public var nationalProvision:Dac6NationalProvision

    /**
    * Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.
    */
    // @ApiMember(Description="Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.", Name="Amount")
    public var amount:Dac6Amount

    /**
    * 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="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")
    public var arrangementChart:Dac6ArrangementChart

    /**
    * Betroffenen Mitgliedstaaten
    */
    // @ApiMember(Description="Betroffenen Mitgliedstaaten", Name="ConcernedMSs")
    public var concernedMSs:Dac6ConcernedMSs

    /**
    * Steuerlicher Vorteil Angabe, ob ein steuerlicher Vorteil vorliegt oder nicht. true: ein steuerlicher Vorteil vorliegt false: ein steuerlicher Vorteil vorliegt nicht.
    */
    // @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")
    public var mainBenefitTest1:Bool?

    /**
    * 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
    */
    // @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")
    public var hallmarks:Dac6Hallmarks

    required public init(){}
}

public enum Dac6DisclosurerReason : String, Codable
{
    case DAC6701
    case DAC6702
    case DAC6703
}

/**
* Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung
*/
// @Api(Description="Zusammenfassung der Gestaltung Angabe der Beschreibung und der Bezeichnung der Gestaltung")
public class Dac6Summary : Codable
{
    /**
    * Name der Gestaltung
    */
    // @ApiMember(Description="Name der Gestaltung", IsRequired=true, Name="Disclosure_Name")
    public var disclosure_Name:String

    /**
    * 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.
    */
    // @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")
    public var disclosure_Descriptions:[Dac6Disclosure_Description] = []

    required public init(){}
}

/**
* Beschreibung der Gestaltung
*/
// @Api(Description="Beschreibung der Gestaltung")
public class Dac6Disclosure_Description : Codable
{
    /**
    * 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="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")
    public var language:LanguageCode

    /**
    * Beschreibung
    */
    // @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    public var value:String

    required public init(){}
}

/**
* Rechtsvorschrift
*/
// @Api(Description="Rechtsvorschrift")
public class Dac6NationalProvision : Codable
{
    /**
    * Angabe der Rechtsvorschrift
    */
    // @ApiMember(Description="Angabe der Rechtsvorschrift", IsRequired=true, Name="Texts")
    public var texts:[Dac6Text] = []

    /**
    * Staat zur Rechtsvorschrift Angabe des Staates, der die angegebene Rechtsvorschrift erlassen hat.
    */
    // @ApiMember(Description="Staat zur Rechtsvorschrift Angabe des Staates, der die angegebene Rechtsvorschrift erlassen hat.", IsRequired=true, Name="Country")
    public var country:CountryCode?

    required public init(){}
}

/**
* Angabe der Rechtsvorschrift
*/
// @Api(Description="Angabe der Rechtsvorschrift")
public class Dac6Text : Codable
{
    /**
    * 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="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")
    public var language:LanguageCode

    /**
    * Beschreibung
    */
    // @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    public var value:String

    required public init(){}
}

/**
* Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.
*/
// @Api(Description="Angabe des tatsächlichen oder voraussichtlichen wirtschaftlichen Werts der grenzüberschreitenden Steuergestaltung.")
public class Dac6Amount : Codable
{
    /**
    * WährungAngabe des ISO-Währungscodes der Währung, in dem der Wert angegeben wurde.
    */
    // @ApiMember(Description="WährungAngabe des ISO-Währungscodes der Währung, in dem der Wert angegeben wurde.", IsRequired=true, Name="CurrCode")
    public var currCode:CurrencyCode?

    /**
    * Wirtschaftlicher Wert der Gestaltung
    */
    // @ApiMember(Description="Wirtschaftlicher Wert der Gestaltung", IsRequired=true, Name="Value")
    public var value:Int?

    required public init(){}
}

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

/**
* 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.
*/
// @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.")
public class Dac6ArrangementChart : Codable
{
    /**
    * Identifikationsdaten
    */
    // @ApiMember(Description="Identifikationsdaten", IsRequired=true, Name="ID")
    public var id:Dac6PersonOrganisation

    /**
    * 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 Beteiligungshöhe in Prozent Angabe der Beteiligungshöhe in Prozent. Der angegebene Wert muss mindestens 0 und darf maximal 100 sein.", Name="ID")
    public var ownership:Int?

    /**
    * Die wertmäßige Beteiligungshöhe
    */
    // @ApiMember(Description="Die wertmäßige Beteiligungshöhe", Name="InvestAmount")
    public var investAmount:Dac6Amount

    /**
    * Beteiligungsangaben
    */
    // @ApiMember(Description="Beteiligungsangaben", Name="OtherInfos")
    public var otherInfos:[Dac6OtherInfo] = []

    /**
    * Nächste Ebene Erfassung einer weiteren Ebene im Unternehmenschart
    */
    // @ApiMember(Description="Nächste Ebene Erfassung einer weiteren Ebene im Unternehmenschart", Name="ListChilds")
    public var listChilds:Dac6ListChilds

    required public init(){}
}

/**
* 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.
*/
// @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.")
public class Dac6OtherInfo : Codable
{
    /**
    * 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="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")
    public var language:LanguageCode

    /**
    * Beschreibung
    */
    // @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    public var value:String

    required public init(){}
}

/**
* Nächste Ebene Erfassung einer weiteren Ebene im Unternehmenschart
*/
public class Dac6ListChilds : Codable
{
    required public init(){}
}

/**
* Liste der betroffenen Mitgliedstaaten Angabe der Mitgliedstaaten der Europäischen Union, die wahrscheinlich von der grenzüberschreitenden Steuergestaltung betroffen sind.
*/
public class Dac6ConcernedMSs : Codable
{
    required public init(){}
}

/**
* 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
*/
// @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")
public class Dac6Hallmarks : Codable
{
    /**
    * Angabe der Kennzeichen
    */
    // @ApiMember(Description="Angabe der Kennzeichen", IsRequired=true, Name="ListHallmarks")
    public var listHallmarks:Dac6ListHallmarks

    /**
    * Beschreibung des Kennzeichens
    */
    // @ApiMember(Description="Beschreibung des Kennzeichens", IsRequired=true, Name="DAC6D1OtherInfos")
    public var daC6D1OtherInfos:[DAC6D1OtherInfo] = []

    required public init(){}
}

/**
* Angabe der Kennzeiche Angabe der Einzelheiten zu den nach § 138e zur Mitteilung verpflichtenden Kennzeichen
*/
// @Api(Description="Angabe der Kennzeiche Angabe der Einzelheiten zu den nach § 138e zur Mitteilung verpflichtenden Kennzeichen")
public class Dac6ListHallmarks : Codable
{
    /**
    * Betroffene Kennzeichen
    */
    // @ApiMember(Description="Betroffene Kennzeichen", IsRequired=true, Name="Hallmarks")
    public var hallmarks:[Dac6Hallmark] = []

    required public init(){}
}

public enum Dac6Hallmark : String, Codable
{
    case DAC6A1
    case DAC6A2a
    case DAC6A2b
    case DAC6A3
    case DAC6B1
    case DAC6B2
    case DAC6B3
    case DAC6C1a
    case DAC6C1bi
    case DAC6C1bii
    case DAC6C1c
    case DAC6C1d
    case DAC6C2
    case DAC6C3
    case DAC6C4
    case DAC6D1Other
    case DAC6D1a
    case DAC6D1b
    case DAC6D1c
    case DAC6D1d
    case DAC6D1e
    case DAC6D1f
    case DAC6D2
    case DAC6E1
    case DAC6E2
    case DAC6E3
}

/**
* 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.
*/
// @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.")
public class DAC6D1OtherInfo : Codable
{
    /**
    * 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="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")
    public var language:LanguageCode

    /**
    * Beschreibung
    */
    // @ApiMember(Description="Beschreibung", IsRequired=true, Name="Value")
    public var value:String

    required public init(){}
}

/**
* Represents an overview result of a DAC6 or ISG delivery process.
*/
// @Api(Description="Represents an overview result of a DAC6 or ISG delivery process.")
public class Dac6Verarbeitungsprotokoll : Codable
{
    /**
    * The version of the process protocol.
    */
    // @ApiMember(Description="The version of the process protocol.", Name="Version")
    public var version:String

    /**
    * The type of message.
    */
    // @ApiMember(Description="The type of message.", Name="MessageType")
    public var messageType:String

    /**
    * The statistical information on the delivery.
    */
    // @ApiMember(Description="The statistical information on the delivery.", Name="Lieferungsdetails")
    public var lieferungsdetails:Lieferungsdetails

    /**
    * Contains protocol entries for the delivery.
    */
    // @ApiMember(Description="Contains protocol entries for the delivery.", Name="Protokolleintraege")
    public var protokolleintraege:[Protokolleintrag] = []

    required public init(){}
}

/**
* Represents statistical information on a delivery.
*/
// @Api(Description="Represents statistical information on a delivery.")
public class Lieferungsdetails : Codable
{
    /**
    * Indicates whether the reported tax arrangement is domestic or cross-border.
    */
    // @ApiMember(Description="Indicates whether the reported tax arrangement is domestic or cross-border.", Name="Verfahren")
    public var verfahren:Dac6Verfahren

    /**
    * Disclosure-ID e.g. DED20190718UVWXYZ
    */
    // @ApiMember(Description="Disclosure-ID e.g. DED20190718UVWXYZ", Name="Version")
    public var offenlegungsnummer:String

    public var registriernummer:String
    /**
    * Disclosure ID of the report, which this report refers to.
    */
    // @ApiMember(Description="Disclosure ID of the report, which this report refers to.", Name="Bezugsoffenlegung")
    public var bezugsoffenlegung:String

    /**
    * File name of the delivery file submitted to ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133.xml
    */
    // @ApiMember(Description="File name of the delivery file submitted to ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133.xml", Name="Eingabedateiname")
    public var eingabedateiname:String

    /**
    * Time stamp at which the message was created.
    */
    // @ApiMember(Description="Time stamp at which the message was created.", Name="Erstellungsdatum")
    public var erstellungsdatum:Date?

    public var messageRefId:String
    /**
    * File name of the file returned by ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133_da5b42ce-9d27-4255-920e-1a089eeb0ec8.xml
    */
    // @ApiMember(Description="File name of the file returned by ELAN. Example: m5_d6_bz123456789_1004557331_shawarma133_da5b42ce-9d27-4255-920e-1a089eeb0ec8.xml", Name="Version")
    public var ausgabedateiname:String

    /**
    * Time stamp of the completion process protocol.
    */
    // @ApiMember(Description="Time stamp of the completion process protocol.", Name="Protokollerstellungsdatum")
    public var protokollerstellungsdatum:Date?

    required public init(){}
}

public enum Dac6Verfahren : String, Codable
{
    case DAC6
    case ISG
}

/**
* Represents a protocol entry
*/
// @Api(Description="Represents a protocol entry")
public class Protokolleintrag : Codable
{
    /**
    * The type of entry.
    */
    // @ApiMember(Description="The type of entry.", Name="EintragArt")
    public var eintragArt:Dac6EintragArt

    /**
    * Code value of the entry type - error code or information code.
    */
    // @ApiMember(Description="Code value of the entry type - error code or information code.", Name="Version")
    public var eintragCode:String

    /**
    * Text (in German) of the protocol entry.
    */
    // @ApiMember(Description="Text (in German) of the protocol entry.", Name="EintragText")
    public var eintragText:String

    required public init(){}
}

public enum Dac6EintragArt : String, Codable
{
    case HINWEIS
    case FEHLER
}


Swift CreateDac6XmlFile DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /sync/elma/dac6/xml/file HTTP/1.1 
Host: reportfiling.pwc.de 
Accept: text/csv
Content-Type: text/csv
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":"\/Date(-62135596800000-0000)\/"},"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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","associatedEnterprises":[{"associatedEnterpriseID":{"individual":{"individualName":{"precedingTitle":"String","title":"String","firstName":"String","middleName":"String","namePrefix":"String","lastName":"String","generationIdentifier":"String","suffix":"String","generalSuffix":"String"},"birthDate":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","messageRefId":"String","ausgabedateiname":"String","protokollerstellungsdatum":"\/Date(-62135596800000-0000)\/"},"protokolleintraege":[{"eintragArt":"HINWEIS","eintragCode":"String","eintragText":"String"}]}}}