| POST | /BatchValidiereAuthentifiziereUndSende |
|---|
<?php namespace dtos;
use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};
/** @description Represents a structure that encapsulates a tax declaration. */
// @Api(Description="Represents a structure that encapsulates a tax declaration.")
class TaxData implements JsonSerializable
{
public function __construct(
/** @description The unique identifier of the tax data. */
// @ApiMember(Description="The unique identifier of the tax data.", IsRequired=true)
/** @var string */
public string $id='',
/** @description The XML-based tax declaration. */
// @ApiMember(Description="The XML-based tax declaration.", IsRequired=true)
/** @var string */
public string $content=''
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['id'])) $this->id = $o['id'];
if (isset($o['content'])) $this->content = $o['content'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->id)) $o['id'] = $this->id;
if (isset($this->content)) $o['content'] = $this->content;
return empty($o) ? new class(){} : $o;
}
}
/** @description A base service to process a batch of tax data. */
// @Api(Description="A base service to process a batch of tax data.")
class BatchBearbeiteVorgangBase implements IPost, JsonSerializable
{
public function __construct(
/** @description The batch of tax data to process. */
// @ApiMember(Description="The batch of tax data to process.")
/** @var array<TaxData>|null */
public ?array $data=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['data'])) $this->data = JsonConverters::fromArray('TaxData', $o['data']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->data)) $o['data'] = JsonConverters::toArray('TaxData', $this->data);
return empty($o) ? new class(){} : $o;
}
}
/** @description Represents a base class for a file with raw data. */
// @Api(Description="Represents a base class for a file with raw data.")
class FileBase implements JsonSerializable
{
public function __construct(
/** @description The raw data content of the file in bytes. */
// @ApiMember(Description="The raw data content of the file in bytes.", Name="Content")
/** @var ByteArray|null */
public ?ByteArray $content=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['content'])) $this->content = JsonConverters::from('ByteArray', $o['content']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->content)) $o['content'] = JsonConverters::to('ByteArray', $this->content);
return empty($o) ? new class(){} : $o;
}
}
/** @description 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, JsonSerializable
{
/**
* @param ByteArray|null $content
*/
public function __construct(
?ByteArray $content=null,
/** @description The file name of the certificate. */
// @ApiMember(Description="The file name of the certificate.")
// @StringLength(128)
/** @var string */
public string $name='',
/** @description The password to protect the certificate from unauthorized access. */
// @StringLength(255)
// @ApiMember(Description="The password to protect the certificate from unauthorized access.")
/** @var string */
public string $pin='',
/** @description The description of the certificate. */
// @StringLength(2147483647)
// @ApiMember(Description="The description of the certificate.")
/** @var string|null */
public ?string $description=null,
/** @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.")
/** @var array<string>|null */
public ?array $tags=null
) {
parent::__construct($content);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['name'])) $this->name = $o['name'];
if (isset($o['pin'])) $this->pin = $o['pin'];
if (isset($o['description'])) $this->description = $o['description'];
if (isset($o['tags'])) $this->tags = JsonConverters::fromArray('string', $o['tags']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->name)) $o['name'] = $this->name;
if (isset($this->pin)) $o['pin'] = $this->pin;
if (isset($this->description)) $o['description'] = $this->description;
if (isset($this->tags)) $o['tags'] = JsonConverters::toArray('string', $this->tags);
return empty($o) ? new class(){} : $o;
}
}
/** @description A base service to validate, authenticate and send tax data to the fiscal authorities. */
// @Api(Description="A base service to validate, authenticate and send tax data to the fiscal authorities.")
class BatchValidiereAuthentifiziereUndSendeBase extends BatchBearbeiteVorgangBase implements IVeschlueselungsRequest, ISendeRequest, JsonSerializable
{
/**
* @param array<TaxData>|null $data
*/
public function __construct(
?array $data=null,
/** @description The authentification certificate. */
// @ApiMember(Description="The authentification certificate.")
/** @var PortalCertificate|null */
public ?PortalCertificate $zertifikat=null,
/** @description The details of the provider that submits tax data. */
// @ApiMember(Description="The details of the provider that submits tax data.")
/** @var string */
public string $datenLieferant=''
) {
parent::__construct($data);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
if (isset($o['zertifikat'])) $this->zertifikat = JsonConverters::from('PortalCertificate', $o['zertifikat']);
if (isset($o['datenLieferant'])) $this->datenLieferant = $o['datenLieferant'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
if (isset($this->zertifikat)) $o['zertifikat'] = JsonConverters::to('PortalCertificate', $this->zertifikat);
if (isset($this->datenLieferant)) $o['datenLieferant'] = $this->datenLieferant;
return empty($o) ? new class(){} : $o;
}
}
/** @description A synchronous service to validate, authenticate and send tax data to the fiscal authorities. */
// @Api(Description="A synchronous service to validate, authenticate and send tax data to the fiscal authorities.")
class BatchValidiereAuthentifiziereUndSende extends BatchValidiereAuthentifiziereUndSendeBase implements JsonSerializable
{
/**
* @param array<TaxData>|null $data
* @param PortalCertificate|null $zertifikat
* @param string $datenLieferant
*/
public function __construct(
?array $data=null,
?PortalCertificate $zertifikat=null,
string $datenLieferant=''
) {
parent::__construct($data,$zertifikat,$datenLieferant);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
return empty($o) ? new class(){} : $o;
}
}
PHP BatchValidiereAuthentifiziereUndSende DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /BatchValidiereAuthentifiziereUndSende HTTP/1.1
Host: taxfiling.staging.pwc.de
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
zertifikat:
{
name: String,
pin: String,
description: String,
tags:
[
String
],
content: AA==
},
datenLieferant: String,
data:
[
{
id: String,
content: String
}
]
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
[
{
rueckgabe:
{
erfolg:
{
telenummer:
[
String
],
ordnungsbegriffe:
[
String
]
},
transfers:
{
transferList:
[
{
transferTicket: String
}
]
},
fehlerRegelpruefungen:
[
{
nutzdatenticket: String,
feldidentifikator: String,
mehrfachzeilenindex: String,
lfdNrVordruck: String,
vordruckZeilennummer: String,
semantischeIndexes:
[
{
name: String,
value: String
}
],
untersachbereich: String,
privateKennnummer: String,
regelName: String,
fachlicheFehlerId: String,
text: String
}
],
hinweise:
[
{
nutzdatenticket: String,
feldidentifikator: String,
mehrfachzeilenindex: String,
lfdNrVordruck: String,
vordruckZeilennummer: String,
semantischeIndexes:
[
{
name: String,
value: String
}
],
untersachbereich: String,
privateKennnummer: String,
regelName: String,
fachlicheHinweisId: String,
text: String
}
]
},
serverantwort:
{
transferHeader:
{
version: String,
verfahren: ElsterAnmeldung,
datenArt: 34a,
vorgang: send-Auth,
transferTicket: String,
testmerker: 0,
sigUser:
{
inhalt: {}
},
empfaenger:
{
id: String,
ziel: String
},
herstellerID: String,
datenLieferant: String,
eingangsDatum: 0001-01-01,
datei:
{
verschluesselung: PKCS#7v1.5,
kompression: GZIP,
transportSchluessel: String,
erstellung:
{
eric:
{
inhalt: {}
}
}
},
rc:
{
rueckgabe:
{
code: String,
text: String
},
stack:
{
code: String,
text: String
}
},
versionClient: String,
zusatz:
{
infos:
[
String
],
elsterInfos:
[
String
]
}
},
datenTeil:
{
nutzdatenbloecke:
[
{
nutzdatenHeader:
{
version: String,
nutzdatenTicket: String,
empfaenger:
{
id: L,
value: String
},
hersteller:
{
produktName: String,
produktVersion: String
},
datenLieferant: String,
rc:
{
rueckgabe:
{
code: String,
text: String
},
stack:
{
code: String,
text: String
}
},
zusatz:
{
infos:
[
String
],
elsterInfos:
[
String
]
}
},
nutzdaten:
{
inhalt: {}
}
}
]
}
},
transferProtocols:
[
{
metadata:
{
name: String,
fullName: String,
lastAccessTime: 0001-01-01,
lastAccessTimeUtc: 0001-01-01,
lastWriteTime: 0001-01-01,
lastWriteTimeUtc: 0001-01-01,
length: 0,
userId: 0,
groupId: 0,
othersCanRead: False,
groupCanExecute: False,
groupCanWrite: False,
groupCanRead: False,
ownerCanExecute: False,
ownerCanWrite: False,
ownerCanRead: False,
othersCanExecute: False,
othersCanWrite: False,
extensions:
{
String: String
}
},
name: String,
content: AA==
}
],
statusCode: ERIC_OK,
statusText: 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
}
}
}
]