| GET | /Customer/{Guid} |
|---|
<?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};
// @DataContract
class CustomerAddress implements JsonSerializable
{
public function __construct(
// @DataMember(Name="AdresseGuid")
/** @var string|null */
public ?string $AdresseGuid=null,
// @DataMember(Name="IstPrimaer")
/** @var bool|null */
public ?bool $IstPrimaer=null,
// @DataMember(Name="AdressTypBezeichnung")
/** @var string|null */
public ?string $AdressTypBezeichnung=null,
// @DataMember(Name="AdressTyp")
/** @var string|null */
public ?string $AdressTyp=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['AdresseGuid'])) $this->AdresseGuid = $o['AdresseGuid'];
if (isset($o['IstPrimaer'])) $this->IstPrimaer = $o['IstPrimaer'];
if (isset($o['AdressTypBezeichnung'])) $this->AdressTypBezeichnung = $o['AdressTypBezeichnung'];
if (isset($o['AdressTyp'])) $this->AdressTyp = $o['AdressTyp'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->AdresseGuid)) $o['AdresseGuid'] = $this->AdresseGuid;
if (isset($this->IstPrimaer)) $o['IstPrimaer'] = $this->IstPrimaer;
if (isset($this->AdressTypBezeichnung)) $o['AdressTypBezeichnung'] = $this->AdressTypBezeichnung;
if (isset($this->AdressTyp)) $o['AdressTyp'] = $this->AdressTyp;
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class CustomerObjekt implements JsonSerializable
{
public function __construct(
// @DataMember(Name="Guid")
/** @var string|null */
public ?string $Guid=null,
// @DataMember(Name="ZeitraumVon")
/** @var DateTime */
public DateTime $ZeitraumVon=new DateTime(),
// @DataMember(Name="ZeitraumBis")
/** @var DateTime|null */
public ?DateTime $ZeitraumBis=null,
// @DataMember(Name="IstKunde")
/** @var bool|null */
public ?bool $IstKunde=null,
// @DataMember(Name="IstEigentümer")
/** @var bool|null */
public ?bool $IstEigent_mer=null,
// @DataMember(Name="IstEigentümerPseudo")
/** @var bool|null */
public ?bool $IstEigent_merPseudo=null,
// @DataMember(Name="ObjektGuid")
/** @var string|null */
public ?string $ObjektGuid=null,
// @DataMember(Name="KundeGuid")
/** @var string|null */
public ?string $KundeGuid=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['Guid'])) $this->Guid = $o['Guid'];
if (isset($o['ZeitraumVon'])) $this->ZeitraumVon = JsonConverters::from('DateTime', $o['ZeitraumVon']);
if (isset($o['ZeitraumBis'])) $this->ZeitraumBis = JsonConverters::from('DateTime', $o['ZeitraumBis']);
if (isset($o['IstKunde'])) $this->IstKunde = $o['IstKunde'];
if (isset($o['IstEigent_mer'])) $this->IstEigent_mer = $o['IstEigent_mer'];
if (isset($o['IstEigent_merPseudo'])) $this->IstEigent_merPseudo = $o['IstEigent_merPseudo'];
if (isset($o['ObjektGuid'])) $this->ObjektGuid = $o['ObjektGuid'];
if (isset($o['KundeGuid'])) $this->KundeGuid = $o['KundeGuid'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->Guid)) $o['Guid'] = $this->Guid;
if (isset($this->ZeitraumVon)) $o['ZeitraumVon'] = JsonConverters::to('DateTime', $this->ZeitraumVon);
if (isset($this->ZeitraumBis)) $o['ZeitraumBis'] = JsonConverters::to('DateTime', $this->ZeitraumBis);
if (isset($this->IstKunde)) $o['IstKunde'] = $this->IstKunde;
if (isset($this->IstEigent_mer)) $o['IstEigent_mer'] = $this->IstEigent_mer;
if (isset($this->IstEigent_merPseudo)) $o['IstEigent_merPseudo'] = $this->IstEigent_merPseudo;
if (isset($this->ObjektGuid)) $o['ObjektGuid'] = $this->ObjektGuid;
if (isset($this->KundeGuid)) $o['KundeGuid'] = $this->KundeGuid;
return empty($o) ? new class(){} : $o;
}
}
// @DataContract
class Customer implements JsonSerializable
{
public function __construct(
// @DataMember
/** @var string */
public string $guid='',
// @DataMember
/** @var string|null */
public ?string $name1=null,
// @DataMember
/** @var string|null */
public ?string $name2=null,
// @DataMember
/** @var string|null */
public ?string $name3=null,
// @DataMember
/** @var string|null */
public ?string $number=null,
// @DataMember
/** @var string|null */
public ?string $salutation=null,
// @DataMember
/** @var array<CustomerAddress>|null */
public ?array $customerAddresses=null,
// @DataMember
/** @var array<CustomerObjekt>|null */
public ?array $customerObjekte=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['guid'])) $this->guid = $o['guid'];
if (isset($o['name1'])) $this->name1 = $o['name1'];
if (isset($o['name2'])) $this->name2 = $o['name2'];
if (isset($o['name3'])) $this->name3 = $o['name3'];
if (isset($o['number'])) $this->number = $o['number'];
if (isset($o['salutation'])) $this->salutation = $o['salutation'];
if (isset($o['customerAddresses'])) $this->customerAddresses = JsonConverters::fromArray('CustomerAddress', $o['customerAddresses']);
if (isset($o['customerObjekte'])) $this->customerObjekte = JsonConverters::fromArray('CustomerObjekt', $o['customerObjekte']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->guid)) $o['guid'] = $this->guid;
if (isset($this->name1)) $o['name1'] = $this->name1;
if (isset($this->name2)) $o['name2'] = $this->name2;
if (isset($this->name3)) $o['name3'] = $this->name3;
if (isset($this->number)) $o['number'] = $this->number;
if (isset($this->salutation)) $o['salutation'] = $this->salutation;
if (isset($this->customerAddresses)) $o['customerAddresses'] = JsonConverters::toArray('CustomerAddress', $this->customerAddresses);
if (isset($this->customerObjekte)) $o['customerObjekte'] = JsonConverters::toArray('CustomerObjekt', $this->customerObjekte);
return empty($o) ? new class(){} : $o;
}
}
class GetCustomerResponse implements JsonSerializable
{
public function __construct(
/** @var Customer|null */
public ?Customer $customer=null,
/** @var ResponseStatus|null */
public ?ResponseStatus $responseStatus=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['customer'])) $this->customer = JsonConverters::from('Customer', $o['customer']);
if (isset($o['responseStatus'])) $this->responseStatus = JsonConverters::from('ResponseStatus', $o['responseStatus']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->customer)) $o['customer'] = JsonConverters::to('Customer', $this->customer);
if (isset($this->responseStatus)) $o['responseStatus'] = JsonConverters::to('ResponseStatus', $this->responseStatus);
return empty($o) ? new class(){} : $o;
}
}
class GetCustomer implements IHasBearerToken, JsonSerializable
{
public function __construct(
// @ApiMember(IsRequired=true, ParameterType="query")
/** @var string */
public string $bearerToken='',
// @ApiMember(IsRequired=true, ParameterType="path")
/** @var string */
public string $guid='',
// @ApiMember(ParameterType="query")
/** @var string|null */
public ?string $include=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['bearerToken'])) $this->bearerToken = $o['bearerToken'];
if (isset($o['guid'])) $this->guid = $o['guid'];
if (isset($o['include'])) $this->include = $o['include'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->bearerToken)) $o['bearerToken'] = $this->bearerToken;
if (isset($this->guid)) $o['guid'] = $this->guid;
if (isset($this->include)) $o['include'] = $this->include;
return empty($o) ? new class(){} : $o;
}
}
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.
GET /Customer/{Guid} HTTP/1.1
Host: mdf-servdesk.eras-online.de
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
kunde:
{
Guid: String,
Name1: String,
Name2: String,
Name3: String,
Kundennummer: String,
Anrede: String,
KundenAdressen:
[
{
AdresseGuid: String,
IstPrimaer: False,
AdressTypBezeichnung: String,
AdressTyp: String
}
],
KundenObjekte:
[
{
Guid: String,
ZeitraumVon: 0001-01-01T00:00:00Z,
ZeitraumBis: 0001-01-01T00:00:00Z,
IstKunde: False,
IstEigentümer: False,
IstEigentümerPseudo: False,
ObjektGuid: String,
KundeGuid: String
}
]
},
objekte:
[
{
Guid: String,
Objektnummer: String,
IstAbgeschlossen: String,
Uvi: String,
IsUviDisabled: String,
AbgeschlossenDatum: 0001-01-01T00:00:00Z,
AdressGuid: String,
AnmerkungKundenportal: String,
KundenportalMarkedDone: False,
MarkedDoneAt: 0001-01-01T00:00:00Z
}
],
addressen:
[
{
Guid: String,
Straße: String,
Straße2: String,
Hausnummer: String,
Postleitzahl: String,
Ort: String,
Postfach: String,
Adresszusatz: String
}
],
nutzer:
[
{
Guid: String,
Name1: String,
Name2: String,
Name3: String,
Name4: String,
NutzerType: String,
NutzeinheitNummerExtern: String,
NutzerInNutzeinheitReihenfolge: 0,
ZeitraumVon: 0001-01-01T00:00:00Z,
ZeitraumBis: 0001-01-01T00:00:00Z,
IstGeloescht: False,
IstErzeugtVonApp: False,
Uvi: String,
EigentuemerBewohnt: String,
Email: String,
Mobil: String,
Titel: String,
Anrede: String,
NutzeinheitGuid: String
}
],
nutzerCoownership:
[
{
Guid: String,
ShareValue: 0,
Von: 0001-01-01T00:00:00Z,
Bis: 0001-01-01T00:00:00Z,
NutzerGuid: String,
IsCreatedByApp: False,
IsDeleted: False
}
],
nutzerPersonen:
[
{
Guid: String,
Personen: 0,
Von: 0001-01-01T00:00:00Z,
Bis: 0001-01-01T00:00:00Z,
NutzerGuid: String,
IsCreatedByApp: False,
IsDeleted: False
}
],
nutzerQuadratmeter:
[
{
Guid: String,
Quadratmeter_Hzg: 0,
Quadratmeter_Ww: 0,
Quadratmeter_Nk: 0,
Von: 0001-01-01T00:00:00Z,
Bis: 0001-01-01T00:00:00Z,
NutzerGuid: String,
IsCreatedByApp: False,
IsDeleted: False
}
],
eigentuemerNutzeinheit:
[
{
Guid: String,
Name1: String,
Name2: String,
Name3: String,
Name4: String,
ZeitraumVon: 0001-01-01T00:00:00Z,
ZeitraumBis: 0001-01-01T00:00:00Z,
Titel: String,
Anrede: String,
AdressGuid: String,
NutzeinheitGuid: String
}
],
nutzeinheiten:
[
{
Guid: String,
Nummer: String,
Lage: String,
ObjektGuid: String,
AdressGuid: String
}
],
direktkosten:
[
{
Guid: String,
Bezeichnung: String,
Datum: 0001-01-01T00:00:00Z,
Brutto: 0,
Mwst: 0,
Menge: 0,
Typ: String,
IstGeloescht: False,
IstErzeugtVonApp: False,
ObjektGuid: String,
NutzerGuid: String,
BillingInformationGuid: String
}
],
prepayments:
[
{
Guid: String,
Von: 0001-01-01T00:00:00Z,
Bis: 0001-01-01T00:00:00Z,
VZ Nebenkosten: 0,
VZ Heizkosten: 0,
VZ Warmwasser: 0,
IstGeloescht: False,
IstErzeugtVonApp: False,
ObjektGuid: String,
NutzerGuid: String,
BillingInformationGuid: String
}
],
energieVerwerter:
[
{
Guid: String,
Bezeichnung: String,
Wirkungsgrad: 0,
Einbau: 0001-01-01T00:00:00Z,
Ausbau: 0001-01-01T00:00:00Z,
Baujahr: 0,
Temperatur: 0,
EigenstGewerbLieferung: False,
Brennwert: False,
ObjektGuid: String,
BrennstoffMediumGuid: String
}
],
brennstofflieferungen:
[
{
Guid: String,
Lieferdatum: 0001-01-01T00:00:00Z,
Mwst: 0,
Emissionsangabe: 0,
Steuern: 0,
Zolle: 0,
SonstigeAngaben: 0,
C02Preis: 0,
C02Tonnen: 0,
Menge: 0,
Betrag: 0,
Anfangsstand: 0,
Endstand: 0,
Heizwert: 0,
Brennwert: False,
IstGeloescht: False,
IstErzeugtVonApp: False,
EnergieEntlastungsbetragBezeichnung: String,
EnergieEntlastungsbetrag: 0,
StromEntlastungsbetragBezeichnung: String,
StromEntlastungsbetrag: 0,
CO2Emissionsfaktor: 0,
CO2Text: String,
CO2Aktiv: False,
CO2PreisKnd: False,
CO2PreisVermieter: 0,
CO2PreisMieter: 0,
CO2Flaeche: 0,
GewerblicheNutzung: False,
Sanierungsauflagen: False,
AuflagenHeizungsverbesserung: False,
CO2KWH: 0,
EnthalteneMwst: 0,
CO2KostenBrutto: 0,
CO2GesamtKg: 0,
KeinGesamtabzugC02Kosten: False,
EnergieVerwerterGuid: String,
BrennstoffMediumGuid: String,
BillingInformationGuid: String
}
],
nebenkosten:
[
{
Guid: String,
Kostennummer: 0,
Von: 0001-01-01T00:00:00Z,
Bis: 0001-01-01T00:00:00Z,
UmlageZiel: String,
UmlageZielIn: String,
NebenkostenArt: String,
Kostenart: String,
Brutto: 0,
BruttoLetztesJahr: 0,
Mwst: 0,
HaushaltsnahediensteLabel: String,
HaushaltsnahediensteBrutto: 0,
EinheitDerKostenart: String,
Reduzierungsart: String,
Kommentar: String,
IstGeloescht: False,
IstErzeugtVonApp: False,
ObjektGuid: String,
BillingInformationGuid: String,
NebenkostenNutzeinheiten:
[
{
Anteil: 0,
IstGeloescht: False,
IstErzeugtVonApp: False,
NutzeinheitGuid: String
}
],
NebenkostenNutzer:
[
{
Anteil: 0,
IstGeloescht: False,
IstErzeugtVonApp: False,
NutzerGuid: String
}
]
}
],
heizbetriebskosten:
[
{
Guid: String,
Von: 0001-01-01T00:00:00Z,
Bis: 0001-01-01T00:00:00Z,
Mwst: 0,
HaushatlsnahediensteBrutto: 0,
Brutto: 0,
HaushatlsnahediensteLabel: String,
Anmerkung: String,
IstGeloescht: False,
IstErzeugtVonApp: False,
ObjektGuid: String,
BillingInformationGuid: String
}
],
nutzeinheitDevices:
[
{
Guid: String,
ZuordnungVon: 0001-01-01T00:00:00Z,
ZuordnungBis: 0001-01-01T00:00:00Z,
Raum: String,
LaufendeNummer: String,
gemietet: False,
gewartet: False,
DeviceGuid: String,
NutzeinheitGuid: String
}
],
devices:
[
{
Guid: String,
Geraetenummer: String,
Bezeichnung: String,
Beschreibung: String,
Einbaudatum: 0001-01-01T00:00:00Z,
Ausbaudatum: 0001-01-01T00:00:00Z,
Eichdatum: 0001-01-01T00:00:00Z,
Einheit: String,
Memo: String,
DeviceCatalogGuid: String
}
],
deviceConsumptions:
[
{
Guid: String,
Ablesung: 0,
Ablesedatum: 0001-01-01T00:00:00Z,
Ableseart: String,
Aenderungsdatum: 0001-01-01T00:00:00Z,
Anmerkung: String,
Ampullenfarbe: String,
DeviceGuid: String
}
],
billingInformation:
[
{
Guid: String,
Von: 0001-01-01T00:00:00Z,
Bis: 0001-01-01T00:00:00Z,
IstAbgeschlossen: False,
HatNebenkosten: False,
ObjektGuid: String,
AnmerkungKundenportal: String,
KundenportalMarkedDone: False,
MarkedDoneAt: 0001-01-01T00:00:00Z,
KundenportalMarkedClosed: False,
MarkedClosedAt: 0001-01-01T00:00:00Z
}
],
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
}