Report Filing Service

<back to all web services

UpdateElmaCredential

UpdateCredentialsSync

Represents a service to update an ELMA credential.

Requires Authentication
The following routes are available for this service:
POST/sync/elma/credentials/update
<?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 PEM-encoded certificate. */
// @Api(Description="Represents a PEM-encoded certificate.")
class PemCertificate implements JsonSerializable
{
    public function __construct(
        /** @description The unique identifier (e.g. the file name) of the certificate. */
        // @ApiMember(Description="The unique identifier (e.g. the file name) of the certificate.", IsRequired=true, Name="Id")
        /** @var string */
        public string $id='',

        /** @description The PEM-encoded content of the certificate. */
        // @ApiMember(Description="The PEM-encoded content of the certificate.", IsRequired=true, Name="Content")
        /** @var string */
        public string $content='',

        /** @description The description of the certificate. */
        // @ApiMember(Description="The description of the certificate.", Name="Description")
        /** @var string|null */
        public ?string $description=null,

        /** @description Tags to label or identify the certificate. */
        // @ApiMember(Description="Tags to label or identify the certificate.", Name="Tags")
        /** @var array<string>|null */
        public ?array $tags=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['content'])) $this->content = $o['content'];
        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 = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->content)) $o['content'] = $this->content;
        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 Specfies a service to update an ELMA credential. */
// @Api(Description="Specfies a service to update an ELMA credential.")
class UpdateElmaCredentialBase implements IPost, JsonSerializable
{
    public function __construct(
        /** @description The encrypted password-protected certificate to authenticate the user and grant access to the ELMA server. This certificate is generated from the BZSt-issued *.pfx BOP certificate.More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start) */
        // @ApiMember(Description="The encrypted password-protected certificate to authenticate the user and grant access to the ELMA server. This certificate is generated from the BZSt-issued *.pfx BOP certificate.More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)", Name="Certificate")
        /** @var PemCertificate|null */
        public ?PemCertificate $certificate=null,

        /** @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" */
        // @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")
        /** @var string */
        public string $authSteuernummer='',

        /** @description 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")
        /** @var string */
        public string $accountId='',

        /** @description The current password that protects the certificate from unauthorized access. */
        // @ApiMember(Description="The current password that protects the certificate from unauthorized access.", IsRequired=true, Name="CurrentPassword")
        /** @var string */
        public string $currentPassword='',

        /** @description The new password to protect the certificate from unauthorized access. */
        // @ApiMember(Description="The new password to protect the certificate from unauthorized access.", Name="NewPassword")
        /** @var string|null */
        public ?string $newPassword=null,

        /** @description The XML-encoded RSA public key to encrypt the password of the credential. Note: Only the owner of the key pair (public and private encryption keys) can decrypt the encrypted password with the private key! Encryption algorithm: RSA with OAEP-SHA256 padding. */
        // @ApiMember(Description="The XML-encoded RSA public key to encrypt the password of the credential. Note: Only the owner of the key pair (public and private encryption keys) can decrypt the encrypted password with the private key! Encryption algorithm: RSA with OAEP-SHA256 padding.", IsRequired=true, Name="PublicKeyXml")
        /** @var string */
        public string $publicKeyXml=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['certificate'])) $this->certificate = JsonConverters::from('PemCertificate', $o['certificate']);
        if (isset($o['authSteuernummer'])) $this->authSteuernummer = $o['authSteuernummer'];
        if (isset($o['accountId'])) $this->accountId = $o['accountId'];
        if (isset($o['currentPassword'])) $this->currentPassword = $o['currentPassword'];
        if (isset($o['newPassword'])) $this->newPassword = $o['newPassword'];
        if (isset($o['publicKeyXml'])) $this->publicKeyXml = $o['publicKeyXml'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->certificate)) $o['certificate'] = JsonConverters::to('PemCertificate', $this->certificate);
        if (isset($this->authSteuernummer)) $o['authSteuernummer'] = $this->authSteuernummer;
        if (isset($this->accountId)) $o['accountId'] = $this->accountId;
        if (isset($this->currentPassword)) $o['currentPassword'] = $this->currentPassword;
        if (isset($this->newPassword)) $o['newPassword'] = $this->newPassword;
        if (isset($this->publicKeyXml)) $o['publicKeyXml'] = $this->publicKeyXml;
        return empty($o) ? new class(){} : $o;
    }
}

/** @description Represents the credentials of a user to authenticate the access of an ELMA server. */
// @Api(Description="Represents the credentials of a user to authenticate the access of an ELMA server.")
class ElmaCredential implements IElmaCredential, JsonSerializable
{
    public function __construct(
        /** @description The unique identifier of this instance.  This identifer is only relevant in the context of data storage and retrieval. */
        // @ApiMember(Description="The unique identifier of this instance.  This identifer is only relevant in the context of data storage and retrieval.", IsRequired=true, Name="Id")
        /** @var string */
        public string $id='',

        /** @description The security certificate to authenticate the user and grant access to the ELMA server.  This certificate is generated from the BZSt-issued *.pfx BOP certificate. More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start) */
        // @ApiMember(Description="The security certificate to authenticate the user and grant access to the ELMA server.  This certificate is generated from the BZSt-issued *.pfx BOP certificate. More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)", IsRequired=true, Name="Certificate")
        // @Required()
        // @StringLength(2147483647)
        /** @var PemCertificate|null */
        public ?PemCertificate $certificate=null,

        /** @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" */
        // @ApiMember(Description="The BZSt (Bundeszentralamt für Steuern) - tax number of the user. 11-character text field that may only consist of two capital letters and 9 digits (0-9).  The fiscal authority BZSt provides this number during registration at the BOP (BZSt-Online Portal - https://www.elster.de/bportal/start).  The number is available in the private area of the BOP user account under \"My BOP\" under the \"Registration Information\"", IsRequired=true, Name="AuthSteuernummer")
        // @Required()
        // @StringLength(11)
        /** @var string */
        public string $authSteuernummer='',

        /** @description The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9). */
        // @ApiMember(Description="The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9).", IsRequired=true, Name="AccountId")
        // @Required()
        // @StringLength(10)
        /** @var string */
        public string $accountId='',

        /** @description The password to protect the certificate from unauthorized access. */
        // @ApiMember(Description="The password to protect the certificate from unauthorized access.", IsRequired=true, Name="Password")
        /** @var string */
        public string $password=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['certificate'])) $this->certificate = JsonConverters::from('PemCertificate', $o['certificate']);
        if (isset($o['authSteuernummer'])) $this->authSteuernummer = $o['authSteuernummer'];
        if (isset($o['accountId'])) $this->accountId = $o['accountId'];
        if (isset($o['password'])) $this->password = $o['password'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->certificate)) $o['certificate'] = JsonConverters::to('PemCertificate', $this->certificate);
        if (isset($this->authSteuernummer)) $o['authSteuernummer'] = $this->authSteuernummer;
        if (isset($this->accountId)) $o['accountId'] = $this->accountId;
        if (isset($this->password)) $o['password'] = $this->password;
        return empty($o) ? new class(){} : $o;
    }
}

/** @description Represents a service response that encapsulates an ELMA credential. The password of the ELMA credential in this response is encrypted and can only be decrypted by the owner of the private key. */
// @Api(Description="Represents a service response that encapsulates an ELMA credential. The password of the ELMA credential in this response is encrypted and can only be decrypted by the owner of the private key.")
class ElmaCredentialResponse implements JsonSerializable
{
    public function __construct(
        /** @description The unique identifier of the response. */
        // @ApiMember(Description="The unique identifier of the response.", Name="Id")
        /** @var string|null */
        public ?string $id=null,

        /** @description The encapsulated ELMA credential. */
        // @ApiMember(Description="The encapsulated ELMA credential.", Name="Credential")
        /** @var ElmaCredential|null */
        public ?ElmaCredential $credential=null,

        /** @description The status of the response. */
        // @ApiMember(Description="The status of the response.", Name="ResponseStatus")
        /** @var ResponseStatus|null */
        public ?ResponseStatus $responseStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['credential'])) $this->credential = JsonConverters::from('ElmaCredential', $o['credential']);
        if (isset($o['responseStatus'])) $this->responseStatus = JsonConverters::from('ResponseStatus', $o['responseStatus']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->credential)) $o['credential'] = JsonConverters::to('ElmaCredential', $this->credential);
        if (isset($this->responseStatus)) $o['responseStatus'] = JsonConverters::to('ResponseStatus', $this->responseStatus);
        return empty($o) ? new class(){} : $o;
    }
}

/** @description Represents a service to update an ELMA credential. */
// @Api(Description="Represents a service to update an ELMA credential.")
class UpdateElmaCredential extends UpdateElmaCredentialBase implements JsonSerializable
{
    /**
     * @param PemCertificate|null $certificate
     * @param string $authSteuernummer
     * @param string $accountId
     * @param string $currentPassword
     * @param string|null $newPassword
     * @param string $publicKeyXml
     */
    public function __construct(
        ?PemCertificate $certificate=null,
        string $authSteuernummer='',
        string $accountId='',
        string $currentPassword='',
        ?string $newPassword=null,
        string $publicKeyXml=''
    ) {
        parent::__construct($certificate,$authSteuernummer,$accountId,$currentPassword,$newPassword,$publicKeyXml);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['certificate'])) $this->certificate = JsonConverters::from('PemCertificate', $o['certificate']);
        if (isset($o['authSteuernummer'])) $this->authSteuernummer = $o['authSteuernummer'];
        if (isset($o['accountId'])) $this->accountId = $o['accountId'];
        if (isset($o['currentPassword'])) $this->currentPassword = $o['currentPassword'];
        if (isset($o['newPassword'])) $this->newPassword = $o['newPassword'];
        if (isset($o['publicKeyXml'])) $this->publicKeyXml = $o['publicKeyXml'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->certificate)) $o['certificate'] = JsonConverters::to('PemCertificate', $this->certificate);
        if (isset($this->authSteuernummer)) $o['authSteuernummer'] = $this->authSteuernummer;
        if (isset($this->accountId)) $o['accountId'] = $this->accountId;
        if (isset($this->currentPassword)) $o['currentPassword'] = $this->currentPassword;
        if (isset($this->newPassword)) $o['newPassword'] = $this->newPassword;
        if (isset($this->publicKeyXml)) $o['publicKeyXml'] = $this->publicKeyXml;
        return empty($o) ? new class(){} : $o;
    }
}

PHP UpdateElmaCredential DTOs

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

HTTP + JSV

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

POST /sync/elma/credentials/update HTTP/1.1 
Host: reportfiling.staging.pwc.de 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	certificate: 
	{
		id: String,
		content: String,
		description: String,
		tags: 
		[
			String
		]
	},
	authSteuernummer: String,
	accountId: String,
	currentPassword: String,
	newPassword: String,
	publicKeyXml: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	id: String,
	credential: 
	{
		id: String_String,
		certificate: 
		{
			id: String,
			content: String,
			description: String,
			tags: 
			[
				String
			]
		},
		authSteuernummer: String,
		accountId: String,
		password: String
	},
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}