| GET | /Customers |
|---|
<?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(Name="Guid")
/** @var string|null */
public ?string $Guid=null,
// @DataMember(Name="Name1")
/** @var string|null */
public ?string $Name1=null,
// @DataMember(Name="Name2")
/** @var string|null */
public ?string $Name2=null,
// @DataMember(Name="Name3")
/** @var string|null */
public ?string $Name3=null,
// @DataMember(Name="Kundennummer")
/** @var string|null */
public ?string $Kundennummer=null,
// @DataMember(Name="Anrede")
/** @var string|null */
public ?string $Anrede=null,
// @DataMember(Name="KundenAdressen")
/** @var array<CustomerAddress>|null */
public ?array $KundenAdressen=null,
// @DataMember(Name="KundenObjekte")
/** @var array<CustomerObjekt>|null */
public ?array $KundenObjekte=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['Kundennummer'])) $this->Kundennummer = $o['Kundennummer'];
if (isset($o['Anrede'])) $this->Anrede = $o['Anrede'];
if (isset($o['KundenAdressen'])) $this->KundenAdressen = JsonConverters::fromArray('CustomerAddress', $o['KundenAdressen']);
if (isset($o['KundenObjekte'])) $this->KundenObjekte = JsonConverters::fromArray('CustomerObjekt', $o['KundenObjekte']);
}
/** @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->Kundennummer)) $o['Kundennummer'] = $this->Kundennummer;
if (isset($this->Anrede)) $o['Anrede'] = $this->Anrede;
if (isset($this->KundenAdressen)) $o['KundenAdressen'] = JsonConverters::toArray('CustomerAddress', $this->KundenAdressen);
if (isset($this->KundenObjekte)) $o['KundenObjekte'] = JsonConverters::toArray('CustomerObjekt', $this->KundenObjekte);
return empty($o) ? new class(){} : $o;
}
}
class GetCustomersResponse implements JsonSerializable
{
public function __construct(
/** @var array<Customer>|null */
public ?array $customers=null,
/** @var ResponseStatus|null */
public ?ResponseStatus $responseStatus=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['customers'])) $this->customers = JsonConverters::fromArray('Customer', $o['customers']);
if (isset($o['responseStatus'])) $this->responseStatus = JsonConverters::from('ResponseStatus', $o['responseStatus']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->customers)) $o['customers'] = JsonConverters::toArray('Customer', $this->customers);
if (isset($this->responseStatus)) $o['responseStatus'] = JsonConverters::to('ResponseStatus', $this->responseStatus);
return empty($o) ? new class(){} : $o;
}
}
class GetCustomers implements IHasBearerToken, JsonSerializable
{
public function __construct(
// @ApiMember(IsRequired=true, ParameterType="query")
/** @var string */
public string $bearerToken='',
// @ApiMember(ParameterType="query")
/** @var string|null */
public ?string $include=null,
/** @description Optional! Follow the format : /api/v1/Customers?filter[Number]=* */
// @DataMember(Name="filter[Number]")
// @ApiMember(Description="Optional! Follow the format : /api/v1/Customers?filter[Number]=*", ParameterType="query")
/** @var string|null */
public ?string $filter_Number_=null,
/** @description Optional! Follow the format : /api/v1/Customers?filter[ObjektGuid]=* */
// @DataMember(Name="filter[ObjektGuid]")
// @ApiMember(Description="Optional! Follow the format : /api/v1/Customers?filter[ObjektGuid]=*", ParameterType="query")
/** @var string */
public string $filter_ObjektGuid_=''
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['bearerToken'])) $this->bearerToken = $o['bearerToken'];
if (isset($o['include'])) $this->include = $o['include'];
if (isset($o['filter_Number_'])) $this->filter_Number_ = $o['filter_Number_'];
if (isset($o['filter_ObjektGuid_'])) $this->filter_ObjektGuid_ = $o['filter_ObjektGuid_'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->bearerToken)) $o['bearerToken'] = $this->bearerToken;
if (isset($this->include)) $o['include'] = $this->include;
if (isset($this->filter_Number_)) $o['filter_Number_'] = $this->filter_Number_;
if (isset($this->filter_ObjektGuid_)) $o['filter_ObjektGuid_'] = $this->filter_ObjektGuid_;
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 /Customers HTTP/1.1 Host: demo-servdesk.eras-online.de Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
kunden:
[
{
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
}
}
}