Tax Filing Service

<back to all web services

ProtokollRequest17

SyncDatenabholungVerarbeitungsprotokolle

Represents the service request to retrieve logs about a specified tax assessement.

Requires Authentication
The following routes are available for this service:
POST/datenabholungen/protokolle/17/verarbeitungsprotokoll
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';

/**
* Represents a base class for a file with raw data.
*/
// @Api(Description="Represents a base class for a file with raw data.")
abstract class FileBase
{
    /**
    * The raw data content of the file.
    */
    // @ApiMember(Description="The raw data content of the file.", Name="Content")
    Uint8List? content;

    FileBase({this.content});
    FileBase.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        content = JsonConverters.fromJson(json['content'],'Uint8List',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'content': JsonConverters.toJson(content,'Uint8List',context!)
    };

    getTypeName() => "FileBase";
    TypeContext? context = _ctx;
}

/**
* Represents a portal certificate that is protected by a password.
*/
// @Api(Description="Represents a portal certificate that is protected by a password.")
class PortalCertificate extends FileBase implements ISecuredCertificate, IHasIndex, IConvertible
{
    /**
    * The unique identifier of the certificate.
    */
    // @ApiMember(Description="The unique identifier of the certificate.")
    String? id;

    /**
    * The position of the certificate element in an indexed collection of certificates.
    */
    // @ApiMember(Description="The position of the certificate element in an indexed collection of certificates.")
    int? index;

    /**
    * The password to protect the certificate from unauthorized access.
    */
    // @StringLength(255)
    // @ApiMember(Description="The password to protect the certificate from unauthorized access.")
    String? pin;

    /**
    * The description of the certificate.
    */
    // @StringLength(2147483647)
    // @ApiMember(Description="The description of the certificate.")
    String? description;

    /**
    * Tags that can be used to label or identify the certificate.
    */
    // @ApiMember(Description="Tags that can be used to label or identify the certificate.")
    List<String>? tags;

    /**
    * Gets or sets the file name of the certificate.
    */
    // @ApiMember(Description="Gets or sets the file name of the certificate.")
    String? name;

    /**
    * The raw data content of the file.
    */
    // @ApiMember(Description="The raw data content of the file.", Name="Content")
    Uint8List? content;

    PortalCertificate({this.id,this.index,this.pin,this.description,this.tags,this.name,this.content});
    PortalCertificate.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        id = json['id'];
        index = json['index'];
        pin = json['pin'];
        description = json['description'];
        tags = JsonConverters.fromJson(json['tags'],'List<String>',context!);
        name = json['name'];
        content = JsonConverters.fromJson(json['content'],'Uint8List',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'id': id,
        'index': index,
        'pin': pin,
        'description': description,
        'tags': JsonConverters.toJson(tags,'List<String>',context!),
        'name': name,
        'content': JsonConverters.toJson(content,'Uint8List',context!)
    });

    getTypeName() => "PortalCertificate";
    TypeContext? context = _ctx;
}

/**
* Represents a base service request to retrieve processing records from a specified tax assessement.
*/
// @Api(Description="Represents a base service request to retrieve processing records from a specified tax assessement.")
abstract class ProtokollRequestBase implements IPost
{
    /**
    * The authentification certificate.
    */
    // @ApiMember(Description="The authentification certificate.", IsRequired=true, Name="Zertifikat")
    PortalCertificate? zertifikat;

    ProtokollRequestBase({this.zertifikat});
    ProtokollRequestBase.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        zertifikat = JsonConverters.fromJson(json['zertifikat'],'PortalCertificate',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'zertifikat': JsonConverters.toJson(zertifikat,'PortalCertificate',context!)
    };

    getTypeName() => "ProtokollRequestBase";
    TypeContext? context = _ctx;
}

/**
* Represents the transmission path.
*/
enum Uebertragungsweg
{
    direkt,
    link,
    sammellink,
}

/**
* The data packet from the retrieval operation.
*/
// @Api(Description="The data packet from the retrieval operation.")
class Datenpaket implements IConvertible
{
    /**
    * Encoded (compressed and encrypted) requested data record
    */
    // @ApiMember(Description="Encoded (compressed and encrypted) requested data record")
    String? value;

    Datenpaket({this.value});
    Datenpaket.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        value = json['value'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'value': value
    };

    getTypeName() => "Datenpaket";
    TypeContext? context = _ctx;
}

/**
* Represents the download of requested records. The downloaded content from the web server takes place: a) with https b) on port 443 c) on datenabholung1.elster.de or datenabholung2.elster.de. The HTTP Basic Authentication mechanism according to RFC 2617 is used for authentication.
*/
// @Api(Description="Represents the download of requested records. The downloaded content from the web server takes place: a) with https b) on port 443 c) on datenabholung1.elster.de or datenabholung2.elster.de. The HTTP Basic Authentication mechanism according to RFC 2617 is used for authentication.")
class Download implements IConvertible
{
    /**
    * The link to the data on the web server.
    */
    // @ApiMember(Description="The link to the data on the web server.")
    String? url;

    /**
    * The user name for the web server.
    */
    // @ApiMember(Description="The user name for the web server.")
    String? benutzer;

    /**
    * Password for the web server.
    */
    // @ApiMember(Description="Password for the web server.")
    String? passwort;

    Download({this.url,this.benutzer,this.passwort});
    Download.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        url = json['url'];
        benutzer = json['benutzer'];
        passwort = json['passwort'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'url': url,
        'benutzer': benutzer,
        'passwort': passwort
    };

    getTypeName() => "Download";
    TypeContext? context = _ctx;
}

/**
* Represents the request to retrieve tax assessments by means of a specfied ID.
*/
// @Api(Description="Represents the request to retrieve tax assessments by means of a specfied ID.")
abstract class Abholung
{
    /**
    * The identifier of the data record.
    */
    // @ApiMember(Description="The identifier of the data record.")
    String? id;

    /**
    * The ID number of the receipt owner. This attribute is only required for the tax type 'ElsterVaStDaten'.
    */
    // @ApiMember(Description="The ID number of the receipt owner. This attribute is only required for the tax type 'ElsterVaStDaten'.")
    String? idnr;

    /**
    * The assessment year (YYYY) of the receipt. This attribute is only required for the tax type 'ElsterVaStDaten'.
    */
    // @ApiMember(Description="The assessment year (YYYY) of the receipt. This attribute is only required for the tax type 'ElsterVaStDaten'.")
    int? veranlagungsjahr;

    /**
    * The transmission path used.
    */
    // @ApiMember(Description="The transmission path used.")
    Uebertragungsweg? uebertragungsweg;

    /**
    * The character encoding of the data record (e.g. ISO-8859-15). The exception is the data type ElsterVaStDaten, here we submit KEIN ENCODING.
    */
    // @ApiMember(Description="The character encoding of the data record (e.g. ISO-8859-15). The exception is the data type ElsterVaStDaten, here we submit KEIN ENCODING.")
    String? encoding;

    /**
    * The client number; only applicable to the tax type 'ElsterDIVADaten'.
    */
    // @ApiMember(Description="The client number; only applicable to the tax type 'ElsterDIVADaten'.")
    String? mandantennummer;

    /**
    * The tax number; only applicable to the tax type 'ElsterDIVADaten'.
    */
    // @ApiMember(Description="The tax number; only applicable to the tax type 'ElsterDIVADaten'.")
    String? steuernummer;

    /**
    * The asessment date; only applicable to the tax type 'ElsterDIVADaten'.
    */
    // @ApiMember(Description="The asessment date; only applicable to the tax type 'ElsterDIVADaten'.")
    DateTime? bescheiddatum;

    /**
    * Das Datenpaket angeforderter Datensaetze. Nur bei der Direktsendung ueber das ERiClet.
    */
    // @ApiMember(Description="Das Datenpaket angeforderter Datensaetze. Nur bei der Direktsendung ueber das ERiClet.")
    Datenpaket? datenpaket;

    /**
    * Download requested data records.  Ensure the second payload data block  is empty for bulk retrieval operations.
    */
    // @ApiMember(Description="Download requested data records.  Ensure the second payload data block  is empty for bulk retrieval operations.")
    Download? download;

    Abholung({this.id,this.idnr,this.veranlagungsjahr,this.uebertragungsweg,this.encoding,this.mandantennummer,this.steuernummer,this.bescheiddatum,this.datenpaket,this.download});
    Abholung.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        idnr = json['idnr'];
        veranlagungsjahr = json['veranlagungsjahr'];
        uebertragungsweg = JsonConverters.fromJson(json['uebertragungsweg'],'Uebertragungsweg',context!);
        encoding = json['encoding'];
        mandantennummer = json['mandantennummer'];
        steuernummer = json['steuernummer'];
        bescheiddatum = JsonConverters.fromJson(json['bescheiddatum'],'DateTime',context!);
        datenpaket = JsonConverters.fromJson(json['datenpaket'],'Datenpaket',context!);
        download = JsonConverters.fromJson(json['download'],'Download',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'idnr': idnr,
        'veranlagungsjahr': veranlagungsjahr,
        'uebertragungsweg': JsonConverters.toJson(uebertragungsweg,'Uebertragungsweg',context!),
        'encoding': encoding,
        'mandantennummer': mandantennummer,
        'steuernummer': steuernummer,
        'bescheiddatum': JsonConverters.toJson(bescheiddatum,'DateTime',context!),
        'datenpaket': JsonConverters.toJson(datenpaket,'Datenpaket',context!),
        'download': JsonConverters.toJson(download,'Download',context!)
    };

    getTypeName() => "Abholung";
    TypeContext? context = _ctx;
}

/**
* Represents the various tax types for the retrieval of data.
*/
enum Steuerart
{
    ESB,
    GSB,
    USB,
    EPBescheid,
    EPMitteilung,
    Gewerbesteuerbescheid,
    Gewerbesteuermitteilung,
    GEWMB,
    DIVAAnzeigeEinerLotterie,
    DIVABescheid,
    DivaBescheidESt,
    DIVABuchmachersteuer,
    DIVALotteriesteuerEinmal,
    DIVALotteriesteuerMehr,
    DIVASportwettensteuer,
    DIVATotalisator,
    OZGBescheid,
    VerbindlicheAuskunft,
    VerbindlicheZusage,
    DivaSonstigerVA,
    DivaBescheidErbSt,
    DivaBescheidFEIN,
    DivaBescheidGewSt,
    DivaBescheidKSt,
    DivaBescheidUSt,
    DivaBescheidSchenkSt,
    DIVATroncabgabe,
    DIVAVirtuelleAutomatenStB,
    DIVAOnlinePokerStB,
    LStHVVMRM,
    EinlagenrueckgewaehrVA,
    FTTMeldungVA,
    StatusInvStGVA,
    UStVEUVA,
    VERSVA,
    AltZertVA,
    KapEStEntlastungVA,
    PostUDLVA,
    StAb50aVA,
    StAbEntlastungVA,
    KassenangelegenheitenVA,
    KStOptVA,
    SteueroasenabwehrVA,
    KDBVollmachtRM,
    STBKE,
    VDBKDBRueckmeldungLief,
    AnhangRueckmeldung,
    DivaEinwilligungRM,
    GlueckspielF,
    OZGMitteilung,
    VerbindlicheAuskunftInfoF,
    ELOProtokoll,
}

/**
* Specifies the encoding of the metadata.
*/
enum Coding
{
    text,
    base64,
}

/**
* Represents the metadata of a data record.
*/
// @Api(Description="Represents the metadata of a data record.")
class Meta17 implements IConvertible
{
    /**
    * The type of metadata, e.g. datei [file]
    */
    // @ApiMember(Description="The type of metadata, e.g. datei [file]")
    String? name;

    /**
    * The encoding of the metadata (text or base64)
    */
    // @ApiMember(Description="The encoding of the metadata (text or base64)")
    Coding? coding;

    /**
    * The content of the metadata
    */
    // @ApiMember(Description="The content of the metadata")
    String? value;

    Meta17({this.name,this.coding,this.value});
    Meta17.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        name = json['name'];
        coding = JsonConverters.fromJson(json['coding'],'Coding',context!);
        value = json['value'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'name': name,
        'coding': JsonConverters.toJson(coding,'Coding',context!),
        'value': value
    };

    getTypeName() => "Meta17";
    TypeContext? context = _ctx;
}

/**
* Represents a list of meta information maps.
*/
class MetaInfoMaps17 implements IConvertible
{
    MetaInfoMaps17();
    MetaInfoMaps17.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

    Map<String, dynamic> toJson() => {};
    getTypeName() => "MetaInfoMaps17";
    TypeContext? context = _ctx;
}

/**
* Represents meta information.
*/
// @Api(Description="Represents meta information.")
class MetaInformationen17 implements IConvertible
{
    /**
    * List of metadata.
    */
    // @ApiMember(Description="List of metadata.")
    List<Meta17>? meta;

    /**
    * List of meta infomation maps.
    */
    // @ApiMember(Description="List of meta infomation maps.")
    MetaInfoMaps17? metaInfoMaps;

    MetaInformationen17({this.meta,this.metaInfoMaps});
    MetaInformationen17.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        meta = JsonConverters.fromJson(json['meta'],'List<Meta17>',context!);
        metaInfoMaps = JsonConverters.fromJson(json['metaInfoMaps'],'MetaInfoMaps17',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'meta': JsonConverters.toJson(meta,'List<Meta17>',context!),
        'metaInfoMaps': JsonConverters.toJson(metaInfoMaps,'MetaInfoMaps17',context!)
    };

    getTypeName() => "MetaInformationen17";
    TypeContext? context = _ctx;
}

/**
* Represents a list of attachments.
*/
class Anhaenge17 implements IConvertible
{
    Anhaenge17();
    Anhaenge17.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

    Map<String, dynamic> toJson() => {};
    getTypeName() => "Anhaenge17";
    TypeContext? context = _ctx;
}

/**
* Represents a request to retrieve data records by means of one or more IDs.
*/
// @Api(Description="Represents a request to retrieve data records by means of one or more IDs.")
class Abholung17 extends Abholung implements IConvertible
{
    /**
    * The tax type (e.g. ESB) of the data record.
    */
    // @ApiMember(Description="The tax type (e.g. ESB) of the data record.")
    Steuerart? steuerart;

    /**
    * The meta information of the identifier.
    */
    // @ApiMember(Description="The meta information of the identifier.")
    MetaInformationen17? metaInformationen;

    /**
    * Die Transfertickets der Datensaetze. Es duerfen max. 100 Bereitstellungstickets in einem Request angegeben werden.
    */
    // @ApiMember(Description="Die Transfertickets der Datensaetze. Es duerfen max. 100 Bereitstellungstickets in einem Request angegeben werden.")
    String? bereitstellungsticket;

    /**
    * The attachments of the data records.
    */
    // @ApiMember(Description="The attachments of the data records.")
    Anhaenge17? anhaenge;

    /**
    * The identifier of the data record.
    */
    // @ApiMember(Description="The identifier of the data record.")
    String? id;

    /**
    * The ID number of the receipt owner. This attribute is only required for the tax type 'ElsterVaStDaten'.
    */
    // @ApiMember(Description="The ID number of the receipt owner. This attribute is only required for the tax type 'ElsterVaStDaten'.")
    String? idnr;

    /**
    * The assessment year (YYYY) of the receipt. This attribute is only required for the tax type 'ElsterVaStDaten'.
    */
    // @ApiMember(Description="The assessment year (YYYY) of the receipt. This attribute is only required for the tax type 'ElsterVaStDaten'.")
    int? veranlagungsjahr;

    /**
    * The transmission path used.
    */
    // @ApiMember(Description="The transmission path used.")
    Uebertragungsweg? uebertragungsweg;

    /**
    * The character encoding of the data record (e.g. ISO-8859-15). The exception is the data type ElsterVaStDaten, here we submit KEIN ENCODING.
    */
    // @ApiMember(Description="The character encoding of the data record (e.g. ISO-8859-15). The exception is the data type ElsterVaStDaten, here we submit KEIN ENCODING.")
    String? encoding;

    /**
    * The client number; only applicable to the tax type 'ElsterDIVADaten'.
    */
    // @ApiMember(Description="The client number; only applicable to the tax type 'ElsterDIVADaten'.")
    String? mandantennummer;

    /**
    * The tax number; only applicable to the tax type 'ElsterDIVADaten'.
    */
    // @ApiMember(Description="The tax number; only applicable to the tax type 'ElsterDIVADaten'.")
    String? steuernummer;

    /**
    * The asessment date; only applicable to the tax type 'ElsterDIVADaten'.
    */
    // @ApiMember(Description="The asessment date; only applicable to the tax type 'ElsterDIVADaten'.")
    DateTime? bescheiddatum;

    /**
    * Das Datenpaket angeforderter Datensaetze. Nur bei der Direktsendung ueber das ERiClet.
    */
    // @ApiMember(Description="Das Datenpaket angeforderter Datensaetze. Nur bei der Direktsendung ueber das ERiClet.")
    Datenpaket? datenpaket;

    /**
    * Download requested data records.  Ensure the second payload data block  is empty for bulk retrieval operations.
    */
    // @ApiMember(Description="Download requested data records.  Ensure the second payload data block  is empty for bulk retrieval operations.")
    Download? download;

    Abholung17({this.steuerart,this.metaInformationen,this.bereitstellungsticket,this.anhaenge,this.id,this.idnr,this.veranlagungsjahr,this.uebertragungsweg,this.encoding,this.mandantennummer,this.steuernummer,this.bescheiddatum,this.datenpaket,this.download});
    Abholung17.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        steuerart = JsonConverters.fromJson(json['steuerart'],'Steuerart',context!);
        metaInformationen = JsonConverters.fromJson(json['metaInformationen'],'MetaInformationen17',context!);
        bereitstellungsticket = json['bereitstellungsticket'];
        anhaenge = JsonConverters.fromJson(json['anhaenge'],'Anhaenge17',context!);
        id = json['id'];
        idnr = json['idnr'];
        veranlagungsjahr = json['veranlagungsjahr'];
        uebertragungsweg = JsonConverters.fromJson(json['uebertragungsweg'],'Uebertragungsweg',context!);
        encoding = json['encoding'];
        mandantennummer = json['mandantennummer'];
        steuernummer = json['steuernummer'];
        bescheiddatum = JsonConverters.fromJson(json['bescheiddatum'],'DateTime',context!);
        datenpaket = JsonConverters.fromJson(json['datenpaket'],'Datenpaket',context!);
        download = JsonConverters.fromJson(json['download'],'Download',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'steuerart': JsonConverters.toJson(steuerart,'Steuerart',context!),
        'metaInformationen': JsonConverters.toJson(metaInformationen,'MetaInformationen17',context!),
        'bereitstellungsticket': bereitstellungsticket,
        'anhaenge': JsonConverters.toJson(anhaenge,'Anhaenge17',context!),
        'id': id,
        'idnr': idnr,
        'veranlagungsjahr': veranlagungsjahr,
        'uebertragungsweg': JsonConverters.toJson(uebertragungsweg,'Uebertragungsweg',context!),
        'encoding': encoding,
        'mandantennummer': mandantennummer,
        'steuernummer': steuernummer,
        'bescheiddatum': JsonConverters.toJson(bescheiddatum,'DateTime',context!),
        'datenpaket': JsonConverters.toJson(datenpaket,'Datenpaket',context!),
        'download': JsonConverters.toJson(download,'Download',context!)
    });

    getTypeName() => "Abholung17";
    TypeContext? context = _ctx;
}

/**
* Represents a base service request to retrieve logs about a specified tax assessement.
*/
// @Api(Description="Represents a base service request to retrieve logs about a specified tax assessement.")
abstract class ProtokollRequestBase17 extends ProtokollRequestBase
{
    /**
    * The tax assessement, whose processing records shall be obtained.
    */
    // @ApiMember(Description="The tax assessement, whose processing records shall be obtained.", Name="Bescheid")
    Abholung17? bescheid;

    /**
    * The authentification certificate.
    */
    // @ApiMember(Description="The authentification certificate.", IsRequired=true, Name="Zertifikat")
    PortalCertificate? zertifikat;

    ProtokollRequestBase17({this.bescheid,this.zertifikat});
    ProtokollRequestBase17.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        bescheid = JsonConverters.fromJson(json['bescheid'],'Abholung17',context!);
        zertifikat = JsonConverters.fromJson(json['zertifikat'],'PortalCertificate',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'bescheid': JsonConverters.toJson(bescheid,'Abholung17',context!),
        'zertifikat': JsonConverters.toJson(zertifikat,'PortalCertificate',context!)
    });

    getTypeName() => "ProtokollRequestBase17";
    TypeContext? context = _ctx;
}

/**
* Specifies a service response from an ERiC service operation.
*/
// @Api(Description="Specifies a service response from an ERiC service operation.")
abstract class ServiceReponseBase implements IHasIndex
{
    /**
    * The unique identifier of the response.
    */
    // @ApiMember(Description="The unique identifier of the response.", Name="Id")
    String? id;

    /**
    * The position of the response element in an indexed collection.
    */
    // @ApiMember(Description="The position of the response element in an indexed collection.", Name="Index")
    int? index;

    /**
    * Metadata that contains structured error information on the service response.
    */
    // @ApiMember(Description="Metadata that contains structured error information on the service response.", Name="ResponseStatus")
    ResponseStatus? responseStatus;

    ServiceReponseBase({this.id,this.index,this.responseStatus});
    ServiceReponseBase.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        index = json['index'];
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'index': index,
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
    };

    getTypeName() => "ServiceReponseBase";
    TypeContext? context = _ctx;
}

/**
* Stellt einen Nutzdatensatz-Fehler dar. Dabei besteht der Fehler aus: - einer laufenden Nummer(Attribut zum NdSFehler)- der KmId (Attribut zum NdSFehler) und/oder dem ordnungsMerkmal (Attribut zum NdSFehler)- einem Fehlernummer (Attribut zum NdSFehler)- einem Fehlertext (Inhalt des Tag NdSFehler)
*/
// @Api(Description="Stellt einen Nutzdatensatz-Fehler dar. Dabei besteht der Fehler aus: - einer laufenden Nummer(Attribut zum NdSFehler)- der KmId (Attribut zum NdSFehler) und/oder dem ordnungsMerkmal (Attribut zum NdSFehler)- einem Fehlernummer (Attribut zum NdSFehler)- einem Fehlertext (Inhalt des Tag NdSFehler)")
class NdSFehler06 implements IConvertible
{
    /**
    * Die laufende Nummer des fehlerhaften Datensatzes in einem Nutzdatenblock.
    */
    // @ApiMember(Description="Die laufende Nummer des fehlerhaften Datensatzes in einem Nutzdatenblock.", Name="LfdNr")
    String? lfdNr;

    /**
    * Bei der kmId handelt es sich um die durch den Verfasser vorgegebene KmId des Nutzdatensatzes.
    */
    // @ApiMember(Description="Bei der kmId handelt es sich um die durch den Verfasser vorgegebene KmId des Nutzdatensatzes.", Name="KmId")
    String? kmId;

    /**
    * Die durch den Verfasser vorgegebene bundesweit eindeutige Identifikation des Nutzdatensatzes (z.B. bei LStB, Lohnersatzleistungen).
    */
    // @ApiMember(Description="Die durch den Verfasser vorgegebene bundesweit eindeutige Identifikation des Nutzdatensatzes (z.B. bei LStB, Lohnersatzleistungen).", Name="OrdnungsMerkmal")
    String? ordnungsMerkmal;

    /**
    * Es wird die vom Elstersystem für diesen Fehler vergebene Fehlernummer i.d.R. eine 9-stellige Nummer zurückgemeldet.
    */
    // @ApiMember(Description="Es wird die vom Elstersystem für diesen Fehler vergebene Fehlernummer i.d.R. eine 9-stellige Nummer zurückgemeldet.", Name="FehlerNummer")
    int? fehlerNummer;

    /**
    * Es wird der vom Elstersystem für diesen Fehler vergebene Fehlertext zurückgemeldet.
    */
    // @ApiMember(Description="Es wird der vom Elstersystem für diesen Fehler vergebene Fehlertext zurückgemeldet.", Name="FehlerText")
    String? fehlerText;

    NdSFehler06({this.lfdNr,this.kmId,this.ordnungsMerkmal,this.fehlerNummer,this.fehlerText});
    NdSFehler06.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        lfdNr = json['lfdNr'];
        kmId = json['kmId'];
        ordnungsMerkmal = json['ordnungsMerkmal'];
        fehlerNummer = json['fehlerNummer'];
        fehlerText = json['fehlerText'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'lfdNr': lfdNr,
        'kmId': kmId,
        'ordnungsMerkmal': ordnungsMerkmal,
        'fehlerNummer': fehlerNummer,
        'fehlerText': fehlerText
    };

    getTypeName() => "NdSFehler06";
    TypeContext? context = _ctx;
}

/**
* Stellt ein Element eines Nutztdatenblockes dar.
*/
// @Api(Description="Stellt ein Element eines Nutztdatenblockes dar.")
class Nutzdatenblock06 implements IConvertible
{
    /**
    * Über das Nutzdatenticket im Verarbeitungsprotokoll wird der Nutzdatenblock aus der Datenlieferung referenziert.
    */
    // @ApiMember(Description="Über das Nutzdatenticket im Verarbeitungsprotokoll wird der Nutzdatenblock aus der Datenlieferung referenziert.")
    String? nutzdatenTicket;

    /**
    * Der Statuscode zum Nutzdatenblock.
    */
    // @ApiMember(Description="Der Statuscode zum Nutzdatenblock.")
    int? code;

    /**
    * Der Statustext zum Nutzdatenblock.
    */
    // @ApiMember(Description="Der Statustext zum Nutzdatenblock.")
    String? text;

    /**
    * Anzahl der Verarbeiteten Nutzdatensätze.
    */
    // @ApiMember(Description="Anzahl der Verarbeiteten Nutzdatensätze.")
    int? verarbeiteteNds;

    /**
    * Anzahl der nichtverarbeiteten Nutzdatensätze.
    */
    // @ApiMember(Description="Anzahl der nichtverarbeiteten Nutzdatensätze.")
    int? nichtverarbeiteteNds;

    /**
    * Der Datenteil des Protokolls.
    */
    // @ApiMember(Description="Der Datenteil des Protokolls.")
    List<NdSFehler06>? ndSFehler;

    Nutzdatenblock06({this.nutzdatenTicket,this.code,this.text,this.verarbeiteteNds,this.nichtverarbeiteteNds,this.ndSFehler});
    Nutzdatenblock06.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        nutzdatenTicket = json['nutzdatenTicket'];
        code = json['code'];
        text = json['text'];
        verarbeiteteNds = json['verarbeiteteNds'];
        nichtverarbeiteteNds = json['nichtverarbeiteteNds'];
        ndSFehler = JsonConverters.fromJson(json['ndSFehler'],'List<NdSFehler06>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'nutzdatenTicket': nutzdatenTicket,
        'code': code,
        'text': text,
        'verarbeiteteNds': verarbeiteteNds,
        'nichtverarbeiteteNds': nichtverarbeiteteNds,
        'ndSFehler': JsonConverters.toJson(ndSFehler,'List<NdSFehler06>',context!)
    };

    getTypeName() => "Nutzdatenblock06";
    TypeContext? context = _ctx;
}

/**
* Stellt den Datenteil eines Protokolls dar.
*/
// @Api(Description="Stellt den Datenteil eines Protokolls dar.")
class DatenTeil06 implements IConvertible
{
    /**
    * Das Transferticket der Datenlieferung.
    */
    // @ApiMember(Description="Das Transferticket der Datenlieferung.")
    String? transferTicket;

    /**
    * Der Statuscode zur gesamten Datenlieferung. 0 (Datenlieferung ok - Alle Datensätze konnten verarbeitet werden). 1 (Es sind Fehler aufgetreten - die Nutzdatenblöcke konnten nur teilweise verarbeitet werden). 2 (Datenlieferung konnte gar nicht verarbeitet werden - alle Nutzdatenblöcke fehlerhaft). 3 (Datenlieferung wurde noch nicht verarbeitet - bitte fordern Sie das Protokoll noch mal zu einen späteren Zeitpunkt an; für Onlinebetrieb relevant).
    */
    // @ApiMember(Description="Der Statuscode zur gesamten Datenlieferung. 0 (Datenlieferung ok - Alle Datensätze konnten verarbeitet werden). 1 (Es sind Fehler aufgetreten - die Nutzdatenblöcke konnten nur teilweise verarbeitet werden). 2 (Datenlieferung konnte gar nicht verarbeitet werden - alle Nutzdatenblöcke fehlerhaft). 3 (Datenlieferung wurde noch nicht verarbeitet - bitte fordern Sie das Protokoll noch mal zu einen späteren Zeitpunkt an; für Onlinebetrieb relevant).")
    int? code;

    /**
    * Der Datenteil des Protokolls.Datenlieferung ok - Alle Datensätze konnten verarbeitet werden. Es sind Fehler aufgetreten - die Nutzdatenblöcke konnten nur teilweise verarbeitet werden. Datenlieferung konnte gar nicht verarbeitet werden - alle Nutzdatenblöcke fehlerhaft. 3Datenlieferung wurde noch nicht verarbeitet - bitte fordern Sie das Protokoll noch mal zu einen späteren Zeitpunkt an; für Onlinebetrieb relevant.
    */
    // @ApiMember(Description="Der Datenteil des Protokolls.Datenlieferung ok - Alle Datensätze konnten verarbeitet werden. Es sind Fehler aufgetreten - die Nutzdatenblöcke konnten nur teilweise verarbeitet werden. Datenlieferung konnte gar nicht verarbeitet werden - alle Nutzdatenblöcke fehlerhaft. 3Datenlieferung wurde noch nicht verarbeitet - bitte fordern Sie das Protokoll noch mal zu einen späteren Zeitpunkt an; für Onlinebetrieb relevant.")
    String? text;

    /**
    * Der Datenteil des Protokolls.
    */
    // @ApiMember(Description="Der Datenteil des Protokolls.")
    List<Nutzdatenblock06>? nutzdatenbloecke;

    DatenTeil06({this.transferTicket,this.code,this.text,this.nutzdatenbloecke});
    DatenTeil06.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        transferTicket = json['transferTicket'];
        code = json['code'];
        text = json['text'];
        nutzdatenbloecke = JsonConverters.fromJson(json['nutzdatenbloecke'],'List<Nutzdatenblock06>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'transferTicket': transferTicket,
        'code': code,
        'text': text,
        'nutzdatenbloecke': JsonConverters.toJson(nutzdatenbloecke,'List<Nutzdatenblock06>',context!)
    };

    getTypeName() => "DatenTeil06";
    TypeContext? context = _ctx;
}

/**
* Das Verarbeitungsprotokoll einer Datenabholungsprozesses.
*/
// @Api(Description="Das Verarbeitungsprotokoll einer Datenabholungsprozesses.")
class Protokoll06 implements IConvertible
{
    /**
    * Version des Protokolls.
    */
    // @ApiMember(Description="Version des Protokolls.", Name="Version")
    int? version;

    /**
    * Der Zeitstempel der Protokoll-Aufbereitung. Es wird der Zeitstempel der serverseitigen Verarbeitung der Protokollanfrage zurück übermittelt. Das String-Format des ZeitStempels lautet: JJJJMMTThhmmss.
    */
    // @ApiMember(Description="Der Zeitstempel der Protokoll-Aufbereitung. Es wird der Zeitstempel der serverseitigen Verarbeitung der Protokollanfrage zurück übermittelt. Das String-Format des ZeitStempels lautet: JJJJMMTThhmmss.", Name="ZeitStempel")
    DateTime? zeitStempel;

    /**
    * Der Datenteil des Protokolls.
    */
    // @ApiMember(Description="Der Datenteil des Protokolls.", Name="DatenTeil")
    DatenTeil06? datenTeil;

    Protokoll06({this.version,this.zeitStempel,this.datenTeil});
    Protokoll06.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        version = json['version'];
        zeitStempel = JsonConverters.fromJson(json['zeitStempel'],'DateTime',context!);
        datenTeil = JsonConverters.fromJson(json['datenTeil'],'DatenTeil06',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'version': version,
        'zeitStempel': JsonConverters.toJson(zeitStempel,'DateTime',context!),
        'datenTeil': JsonConverters.toJson(datenTeil,'DatenTeil06',context!)
    };

    getTypeName() => "Protokoll06";
    TypeContext? context = _ctx;
}

/**
* Represents a type that encapulates the processing records of a tax statement.
*/
// @Api(Description="Represents a type that encapulates the processing records of a tax statement.")
class ProtokollResponse extends ServiceReponseBase implements IConvertible
{
    /**
    * The processing record of a tax statement.
    */
    // @ApiMember(Description="The processing record of a tax statement.", Name="Protokoll")
    Protokoll06? protokoll;

    /**
    * The unique identifier of the response.
    */
    // @ApiMember(Description="The unique identifier of the response.", Name="Id")
    String? id;

    /**
    * The position of the response element in an indexed collection.
    */
    // @ApiMember(Description="The position of the response element in an indexed collection.", Name="Index")
    int? index;

    /**
    * Metadata that contains structured error information on the service response.
    */
    // @ApiMember(Description="Metadata that contains structured error information on the service response.", Name="ResponseStatus")
    ResponseStatus? responseStatus;

    ProtokollResponse({this.protokoll,this.id,this.index,this.responseStatus});
    ProtokollResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        protokoll = JsonConverters.fromJson(json['protokoll'],'Protokoll06',context!);
        id = json['id'];
        index = json['index'];
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'protokoll': JsonConverters.toJson(protokoll,'Protokoll06',context!),
        'id': id,
        'index': index,
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
    });

    getTypeName() => "ProtokollResponse";
    TypeContext? context = _ctx;
}

/**
* Represents the service request to retrieve logs about a specified tax assessement.
*/
// @Api(Description="Represents the service request to retrieve logs about a specified tax assessement.")
class ProtokollRequest17 extends ProtokollRequestBase17 implements IConvertible
{
    /**
    * The tax assessement, whose processing records shall be obtained.
    */
    // @ApiMember(Description="The tax assessement, whose processing records shall be obtained.", Name="Bescheid")
    Abholung17? bescheid;

    /**
    * The authentification certificate.
    */
    // @ApiMember(Description="The authentification certificate.", IsRequired=true, Name="Zertifikat")
    PortalCertificate? zertifikat;

    ProtokollRequest17({this.bescheid,this.zertifikat});
    ProtokollRequest17.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        bescheid = JsonConverters.fromJson(json['bescheid'],'Abholung17',context!);
        zertifikat = JsonConverters.fromJson(json['zertifikat'],'PortalCertificate',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'bescheid': JsonConverters.toJson(bescheid,'Abholung17',context!),
        'zertifikat': JsonConverters.toJson(zertifikat,'PortalCertificate',context!)
    });

    getTypeName() => "ProtokollRequest17";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'taxfiling.pwc.de', types: <String, TypeInfo> {
    'FileBase': TypeInfo(TypeOf.AbstractClass),
    'Uint8List': TypeInfo(TypeOf.Class, create:() => Uint8List(0)),
    'PortalCertificate': TypeInfo(TypeOf.Class, create:() => PortalCertificate()),
    'ProtokollRequestBase': TypeInfo(TypeOf.AbstractClass),
    'Uebertragungsweg': TypeInfo(TypeOf.Enum, enumValues:Uebertragungsweg.values),
    'Datenpaket': TypeInfo(TypeOf.Class, create:() => Datenpaket()),
    'Download': TypeInfo(TypeOf.Class, create:() => Download()),
    'Abholung': TypeInfo(TypeOf.AbstractClass),
    'Steuerart': TypeInfo(TypeOf.Enum, enumValues:Steuerart.values),
    'Coding': TypeInfo(TypeOf.Enum, enumValues:Coding.values),
    'Meta17': TypeInfo(TypeOf.Class, create:() => Meta17()),
    'MetaInfoMaps17': TypeInfo(TypeOf.Class, create:() => MetaInfoMaps17()),
    'MetaInformationen17': TypeInfo(TypeOf.Class, create:() => MetaInformationen17()),
    'List<Meta17>': TypeInfo(TypeOf.Class, create:() => <Meta17>[]),
    'Anhaenge17': TypeInfo(TypeOf.Class, create:() => Anhaenge17()),
    'Abholung17': TypeInfo(TypeOf.Class, create:() => Abholung17()),
    'ProtokollRequestBase17': TypeInfo(TypeOf.AbstractClass),
    'ServiceReponseBase': TypeInfo(TypeOf.AbstractClass),
    'NdSFehler06': TypeInfo(TypeOf.Class, create:() => NdSFehler06()),
    'Nutzdatenblock06': TypeInfo(TypeOf.Class, create:() => Nutzdatenblock06()),
    'List<NdSFehler06>': TypeInfo(TypeOf.Class, create:() => <NdSFehler06>[]),
    'DatenTeil06': TypeInfo(TypeOf.Class, create:() => DatenTeil06()),
    'List<Nutzdatenblock06>': TypeInfo(TypeOf.Class, create:() => <Nutzdatenblock06>[]),
    'Protokoll06': TypeInfo(TypeOf.Class, create:() => Protokoll06()),
    'ProtokollResponse': TypeInfo(TypeOf.Class, create:() => ProtokollResponse()),
    'ProtokollRequest17': TypeInfo(TypeOf.Class, create:() => ProtokollRequest17()),
});

Dart ProtokollRequest17 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 /datenabholungen/protokolle/17/verarbeitungsprotokoll HTTP/1.1 
Host: taxfiling.pwc.de 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"bescheid":{"steuerart":"ESB","metaInformationen":{"meta":[{"name":"String","coding":"text","value":"String"}],"metaInfoMaps":[{"typ":"String","meta":[{"name":"String","coding":"text","value":"String"}]}]},"bereitstellungsticket":"String","anhaenge":[{"metadatenAnhang":[{"schluesselAnhang":{"dateibezeichnungID":"String","dateibezeichnungKurz":"String","value":"String"},"wertAnhang":{"dateibezeichnungID":"String","dateibezeichnungKurz":"String","value":"String"}}],"dateibezeichnung":"String","dateityp":"String","dateiinhalt":"String"}],"id":"String","idnr":"String","veranlagungsjahr":0,"uebertragungsweg":"direkt","encoding":"String","mandantennummer":"String","steuernummer":"String","bescheiddatum":"\/Date(-62135596800000-0000)\/","datenpaket":{"value":"String"},"download":{"url":"String","benutzer":"String","passwort":"String"}},"zertifikat":{"id":"00000000000000000000000000000000","index":0,"pin":"String","description":"String","tags":["String"],"name":"String","content":"AA=="}}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"protokoll":{"version":0,"zeitStempel":"\/Date(-62135596800000-0000)\/","datenTeil":{"transferTicket":"String","code":0,"text":"String","nutzdatenbloecke":[{"nutzdatenTicket":"String","code":0,"text":"String","verarbeiteteNds":0,"nichtverarbeiteteNds":0,"ndSFehler":[{"lfdNr":"String","kmId":"String","ordnungsMerkmal":"String","fehlerNummer":0,"fehlerText":"String"}]}]}},"id":"String","index":0,"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}