Server

<back to all web services

GetNotes

Requires Authentication
The following routes are available for this service:
GET/App/{UserId}/Status/Notes
<?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 Eras2AppServiceModelBase implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="UserId")
        /** @var string */
        public string $UserId=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['UserId'])) $this->UserId = $o['UserId'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->UserId)) $o['UserId'] = $this->UserId;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Address implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="Straße")
        /** @var string|null */
        public ?string $Stra_e=null,

        // @DataMember(Name="Straße2")
        /** @var string|null */
        public ?string $Stra_e2=null,

        // @DataMember(Name="Hausnummer")
        /** @var string|null */
        public ?string $Hausnummer=null,

        // @DataMember(Name="Postleitzahl")
        /** @var string|null */
        public ?string $Postleitzahl=null,

        // @DataMember(Name="Ort")
        /** @var string|null */
        public ?string $Ort=null,

        // @DataMember(Name="Postfach")
        /** @var string|null */
        public ?string $Postfach=null,

        // @DataMember(Name="Adresszusatz")
        /** @var string|null */
        public ?string $Adresszusatz=null,

        // @DataMember(Name="Breitengrad")
        /** @var float */
        public float $Breitengrad=0.0,

        // @DataMember(Name="Laengengrad")
        /** @var float */
        public float $Laengengrad=0.0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['Stra_e'])) $this->Stra_e = $o['Stra_e'];
        if (isset($o['Stra_e2'])) $this->Stra_e2 = $o['Stra_e2'];
        if (isset($o['Hausnummer'])) $this->Hausnummer = $o['Hausnummer'];
        if (isset($o['Postleitzahl'])) $this->Postleitzahl = $o['Postleitzahl'];
        if (isset($o['Ort'])) $this->Ort = $o['Ort'];
        if (isset($o['Postfach'])) $this->Postfach = $o['Postfach'];
        if (isset($o['Adresszusatz'])) $this->Adresszusatz = $o['Adresszusatz'];
        if (isset($o['Breitengrad'])) $this->Breitengrad = $o['Breitengrad'];
        if (isset($o['Laengengrad'])) $this->Laengengrad = $o['Laengengrad'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->Stra_e)) $o['Stra_e'] = $this->Stra_e;
        if (isset($this->Stra_e2)) $o['Stra_e2'] = $this->Stra_e2;
        if (isset($this->Hausnummer)) $o['Hausnummer'] = $this->Hausnummer;
        if (isset($this->Postleitzahl)) $o['Postleitzahl'] = $this->Postleitzahl;
        if (isset($this->Ort)) $o['Ort'] = $this->Ort;
        if (isset($this->Postfach)) $o['Postfach'] = $this->Postfach;
        if (isset($this->Adresszusatz)) $o['Adresszusatz'] = $this->Adresszusatz;
        if (isset($this->Breitengrad)) $o['Breitengrad'] = $this->Breitengrad;
        if (isset($this->Laengengrad)) $o['Laengengrad'] = $this->Laengengrad;
        return empty($o) ? new class(){} : $o;
    }
}

enum UnitKind : string
{
    case L = 'L';
    case Kg = 'Kg';
    case CBM = 'CBM';
    case Stck = 'Stck';
    case KWH = 'KWH';
    case MWH = 'MWH';
    case GWH = 'GWH';
    case T = 'T';
    case RM = 'RM';
    case Einheit = 'Einheit';
    case Qm = 'Qm';
    case GJ = 'GJ';
    case MJ = 'MJ';
    case Null = 'Null';
}

enum EstimationKind : string
{
    case Null = 'Null';
    case S1 = 'S1';
    case S2 = 'S2';
    case S3 = 'S3';
    case S4 = 'S4';
    case S5 = 'S5';
    case N1 = 'N1';
    case N2 = 'N2';
}

enum DeviceConsumptionState : string
{
    case Null = 'Null';
    case RMInOrdnung = 'RMInOrdnung';
    case RMFehler = 'RMFehler';
    case RMNichtGepr = 'RMNichtGepr';
    case RMFehlerTausch = 'RMFehlerTausch';
    case KeinWohnungszutritt = 'KeinWohnungszutritt';
    case Defekt = 'Defekt';
    case FalschLaufend = 'FalschLaufend';
    case Überlauf = 'Überlauf';
    case EichungBeachten = 'EichungBeachten';
    case ProbeEntnommen = 'ProbeEntnommen';
    case ProbeZumLabor = 'ProbeZumLabor';
    case ProbePositiv = 'ProbePositiv';
    case ProbeNegativ = 'ProbeNegativ';
}

enum DeviceConsumptionOrigin : string
{
    case Unbekannt = 'Unbekannt';
    case Manual = 'Manual';
    case Emr = 'Emr';
    case Walkby = 'Walkby';
    case Deleted = 'Deleted';
}

// @DataContract
class DeviceConsumption implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Ablesedatum")
        /** @var DateTime|null */
        public ?DateTime $Ablesedatum=null,

        // @DataMember(Name="Faktor")
        /** @var float */
        public float $Faktor=0.0,

        // @DataMember(Name="Ablesung")
        /** @var float|null */
        public ?float $Ablesung=null,

        // @DataMember(Name="Verbrauch")
        /** @var float|null */
        public ?float $Verbrauch=null,

        // @DataMember(Name="Aenderungsdatum")
        /** @var DateTime|null */
        public ?DateTime $Aenderungsdatum=null,

        // @DataMember(Name="Schaetzung")
        /** @var EstimationKind|null */
        public ?EstimationKind $Schaetzung=null,

        // @DataMember(Name="Status")
        /** @var DeviceConsumptionState|null */
        public ?DeviceConsumptionState $Status=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="IstRekonstruiert")
        /** @var bool|null */
        public ?bool $IstRekonstruiert=null,

        // @DataMember(Name="Manuell")
        /** @var float|null */
        public ?float $Manuell=null,

        // @DataMember(Name="Herkunft")
        /** @var DeviceConsumptionOrigin|null */
        public ?DeviceConsumptionOrigin $Herkunft=null,

        // @DataMember(Name="Lufttemperatur")
        /** @var float|null */
        public ?float $Lufttemperatur=null,

        // @DataMember(Name="HeizkörperTemperatur")
        /** @var float|null */
        public ?float $Heizk_rperTemperatur=null,

        // @DataMember(Name="LetzterfehlerDatum")
        /** @var DateTime|null */
        public ?DateTime $LetzterfehlerDatum=null,

        // @DataMember(Name="Fehler")
        /** @var string|null */
        public ?string $Fehler=null,

        // @DataMember(Name="Ampullenfarbe")
        /** @var string|null */
        public ?string $Ampullenfarbe=null,

        // @DataMember(Name="AbleseartGuid")
        /** @var string */
        public string $AbleseartGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Ablesedatum'])) $this->Ablesedatum = JsonConverters::from('DateTime', $o['Ablesedatum']);
        if (isset($o['Faktor'])) $this->Faktor = $o['Faktor'];
        if (isset($o['Ablesung'])) $this->Ablesung = $o['Ablesung'];
        if (isset($o['Verbrauch'])) $this->Verbrauch = $o['Verbrauch'];
        if (isset($o['Aenderungsdatum'])) $this->Aenderungsdatum = JsonConverters::from('DateTime', $o['Aenderungsdatum']);
        if (isset($o['Schaetzung'])) $this->Schaetzung = JsonConverters::from('EstimationKind', $o['Schaetzung']);
        if (isset($o['Status'])) $this->Status = JsonConverters::from('DeviceConsumptionState', $o['Status']);
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['IstRekonstruiert'])) $this->IstRekonstruiert = $o['IstRekonstruiert'];
        if (isset($o['Manuell'])) $this->Manuell = $o['Manuell'];
        if (isset($o['Herkunft'])) $this->Herkunft = JsonConverters::from('DeviceConsumptionOrigin', $o['Herkunft']);
        if (isset($o['Lufttemperatur'])) $this->Lufttemperatur = $o['Lufttemperatur'];
        if (isset($o['Heizk_rperTemperatur'])) $this->Heizk_rperTemperatur = $o['Heizk_rperTemperatur'];
        if (isset($o['LetzterfehlerDatum'])) $this->LetzterfehlerDatum = JsonConverters::from('DateTime', $o['LetzterfehlerDatum']);
        if (isset($o['Fehler'])) $this->Fehler = $o['Fehler'];
        if (isset($o['Ampullenfarbe'])) $this->Ampullenfarbe = $o['Ampullenfarbe'];
        if (isset($o['AbleseartGuid'])) $this->AbleseartGuid = $o['AbleseartGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Ablesedatum)) $o['Ablesedatum'] = JsonConverters::to('DateTime', $this->Ablesedatum);
        if (isset($this->Faktor)) $o['Faktor'] = $this->Faktor;
        if (isset($this->Ablesung)) $o['Ablesung'] = $this->Ablesung;
        if (isset($this->Verbrauch)) $o['Verbrauch'] = $this->Verbrauch;
        if (isset($this->Aenderungsdatum)) $o['Aenderungsdatum'] = JsonConverters::to('DateTime', $this->Aenderungsdatum);
        if (isset($this->Schaetzung)) $o['Schaetzung'] = JsonConverters::to('EstimationKind', $this->Schaetzung);
        if (isset($this->Status)) $o['Status'] = JsonConverters::to('DeviceConsumptionState', $this->Status);
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->IstRekonstruiert)) $o['IstRekonstruiert'] = $this->IstRekonstruiert;
        if (isset($this->Manuell)) $o['Manuell'] = $this->Manuell;
        if (isset($this->Herkunft)) $o['Herkunft'] = JsonConverters::to('DeviceConsumptionOrigin', $this->Herkunft);
        if (isset($this->Lufttemperatur)) $o['Lufttemperatur'] = $this->Lufttemperatur;
        if (isset($this->Heizk_rperTemperatur)) $o['Heizk_rperTemperatur'] = $this->Heizk_rperTemperatur;
        if (isset($this->LetzterfehlerDatum)) $o['LetzterfehlerDatum'] = JsonConverters::to('DateTime', $this->LetzterfehlerDatum);
        if (isset($this->Fehler)) $o['Fehler'] = $this->Fehler;
        if (isset($this->Ampullenfarbe)) $o['Ampullenfarbe'] = $this->Ampullenfarbe;
        if (isset($this->AbleseartGuid)) $o['AbleseartGuid'] = $this->AbleseartGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Photo implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="Timestamp")
        /** @var DateTime */
        public DateTime $Timestamp=new DateTime()
    ) {
    }

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

// @DataContract
class DeviceAdditionalArticle implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="Menge")
        /** @var float|null */
        public ?float $Menge=null,

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null
    ) {
    }

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

// @DataContract
class Device implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Geraetenummer")
        /** @var string|null */
        public ?string $Geraetenummer=null,

        // @DataMember(Name="Bezeichnung")
        /** @var string|null */
        public ?string $Bezeichnung=null,

        // @DataMember(Name="Beschreibung")
        /** @var string|null */
        public ?string $Beschreibung=null,

        // @DataMember(Name="Einbaudatum")
        /** @var DateTime */
        public DateTime $Einbaudatum=new DateTime(),

        // @DataMember(Name="Ausbaudatum")
        /** @var DateTime|null */
        public ?DateTime $Ausbaudatum=null,

        // @DataMember(Name="Eichdatum")
        /** @var DateTime|null */
        public ?DateTime $Eichdatum=null,

        // @DataMember(Name="Einheit")
        /** @var UnitKind|null */
        public ?UnitKind $Einheit=null,

        // @DataMember(Name="Memo")
        /** @var string|null */
        public ?string $Memo=null,

        // @DataMember(Name="Abzug")
        /** @var bool|null */
        public ?bool $Abzug=null,

        // @DataMember(Name="GrpKennung")
        /** @var string|null */
        public ?string $GrpKennung=null,

        // @DataMember(Name="Dauerschaetzung")
        /** @var EstimationKind|null */
        public ?EstimationKind $Dauerschaetzung=null,

        // @DataMember(Name="ErstInbetriebnahme")
        /** @var DateTime|null */
        public ?DateTime $ErstInbetriebnahme=null,

        // @DataMember(Name="FirmwareVersion")
        /** @var string|null */
        public ?string $FirmwareVersion=null,

        // @DataMember(Name="RaumGuid")
        /** @var string */
        public string $RaumGuid='',

        // @DataMember(Name="LaufendeNummer")
        /** @var string|null */
        public ?string $LaufendeNummer=null,

        // @DataMember(Name="Gemietet")
        /** @var bool|null */
        public ?bool $Gemietet=null,

        // @DataMember(Name="Gewartet")
        /** @var bool|null */
        public ?bool $Gewartet=null,

        // @DataMember(Name="GeraeteKatalogGuid")
        /** @var string */
        public string $GeraeteKatalogGuid='',

        // @DataMember(Name="Verbraeuche")
        /** @var array<DeviceConsumption>|null */
        public ?array $Verbraeuche=null,

        // @DataMember(Name="Fotos")
        /** @var array<Photo>|null */
        public ?array $Fotos=null,

        // @DataMember(Name="ZusatzArtikel")
        /** @var array<DeviceAdditionalArticle>|null */
        public ?array $ZusatzArtikel=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Geraetenummer'])) $this->Geraetenummer = $o['Geraetenummer'];
        if (isset($o['Bezeichnung'])) $this->Bezeichnung = $o['Bezeichnung'];
        if (isset($o['Beschreibung'])) $this->Beschreibung = $o['Beschreibung'];
        if (isset($o['Einbaudatum'])) $this->Einbaudatum = JsonConverters::from('DateTime', $o['Einbaudatum']);
        if (isset($o['Ausbaudatum'])) $this->Ausbaudatum = JsonConverters::from('DateTime', $o['Ausbaudatum']);
        if (isset($o['Eichdatum'])) $this->Eichdatum = JsonConverters::from('DateTime', $o['Eichdatum']);
        if (isset($o['Einheit'])) $this->Einheit = JsonConverters::from('UnitKind', $o['Einheit']);
        if (isset($o['Memo'])) $this->Memo = $o['Memo'];
        if (isset($o['Abzug'])) $this->Abzug = $o['Abzug'];
        if (isset($o['GrpKennung'])) $this->GrpKennung = $o['GrpKennung'];
        if (isset($o['Dauerschaetzung'])) $this->Dauerschaetzung = JsonConverters::from('EstimationKind', $o['Dauerschaetzung']);
        if (isset($o['ErstInbetriebnahme'])) $this->ErstInbetriebnahme = JsonConverters::from('DateTime', $o['ErstInbetriebnahme']);
        if (isset($o['FirmwareVersion'])) $this->FirmwareVersion = $o['FirmwareVersion'];
        if (isset($o['RaumGuid'])) $this->RaumGuid = $o['RaumGuid'];
        if (isset($o['LaufendeNummer'])) $this->LaufendeNummer = $o['LaufendeNummer'];
        if (isset($o['Gemietet'])) $this->Gemietet = $o['Gemietet'];
        if (isset($o['Gewartet'])) $this->Gewartet = $o['Gewartet'];
        if (isset($o['GeraeteKatalogGuid'])) $this->GeraeteKatalogGuid = $o['GeraeteKatalogGuid'];
        if (isset($o['Verbraeuche'])) $this->Verbraeuche = JsonConverters::fromArray('DeviceConsumption', $o['Verbraeuche']);
        if (isset($o['Fotos'])) $this->Fotos = JsonConverters::fromArray('Photo', $o['Fotos']);
        if (isset($o['ZusatzArtikel'])) $this->ZusatzArtikel = JsonConverters::fromArray('DeviceAdditionalArticle', $o['ZusatzArtikel']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Geraetenummer)) $o['Geraetenummer'] = $this->Geraetenummer;
        if (isset($this->Bezeichnung)) $o['Bezeichnung'] = $this->Bezeichnung;
        if (isset($this->Beschreibung)) $o['Beschreibung'] = $this->Beschreibung;
        if (isset($this->Einbaudatum)) $o['Einbaudatum'] = JsonConverters::to('DateTime', $this->Einbaudatum);
        if (isset($this->Ausbaudatum)) $o['Ausbaudatum'] = JsonConverters::to('DateTime', $this->Ausbaudatum);
        if (isset($this->Eichdatum)) $o['Eichdatum'] = JsonConverters::to('DateTime', $this->Eichdatum);
        if (isset($this->Einheit)) $o['Einheit'] = JsonConverters::to('UnitKind', $this->Einheit);
        if (isset($this->Memo)) $o['Memo'] = $this->Memo;
        if (isset($this->Abzug)) $o['Abzug'] = $this->Abzug;
        if (isset($this->GrpKennung)) $o['GrpKennung'] = $this->GrpKennung;
        if (isset($this->Dauerschaetzung)) $o['Dauerschaetzung'] = JsonConverters::to('EstimationKind', $this->Dauerschaetzung);
        if (isset($this->ErstInbetriebnahme)) $o['ErstInbetriebnahme'] = JsonConverters::to('DateTime', $this->ErstInbetriebnahme);
        if (isset($this->FirmwareVersion)) $o['FirmwareVersion'] = $this->FirmwareVersion;
        if (isset($this->RaumGuid)) $o['RaumGuid'] = $this->RaumGuid;
        if (isset($this->LaufendeNummer)) $o['LaufendeNummer'] = $this->LaufendeNummer;
        if (isset($this->Gemietet)) $o['Gemietet'] = $this->Gemietet;
        if (isset($this->Gewartet)) $o['Gewartet'] = $this->Gewartet;
        if (isset($this->GeraeteKatalogGuid)) $o['GeraeteKatalogGuid'] = $this->GeraeteKatalogGuid;
        if (isset($this->Verbraeuche)) $o['Verbraeuche'] = JsonConverters::toArray('DeviceConsumption', $this->Verbraeuche);
        if (isset($this->Fotos)) $o['Fotos'] = JsonConverters::toArray('Photo', $this->Fotos);
        if (isset($this->ZusatzArtikel)) $o['ZusatzArtikel'] = JsonConverters::toArray('DeviceAdditionalArticle', $this->ZusatzArtikel);
        return empty($o) ? new class(){} : $o;
    }
}

enum NutzerKind : string
{
    case Leerstand = 'Leerstand';
    case Gewerblich = 'Gewerblich';
    case Privat = 'Privat';
    case AllgemeineNutzung = 'AllgemeineNutzung';
}

// @DataContract
class NutzerCommunication implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Adresse")
        /** @var string|null */
        public ?string $Adresse=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="KommunikationsFunktionGuid")
        /** @var string */
        public string $KommunikationsFunktionGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Adresse'])) $this->Adresse = $o['Adresse'];
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['KommunikationsFunktionGuid'])) $this->KommunikationsFunktionGuid = $o['KommunikationsFunktionGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Adresse)) $o['Adresse'] = $this->Adresse;
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->KommunikationsFunktionGuid)) $o['KommunikationsFunktionGuid'] = $this->KommunikationsFunktionGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class NutzerPersonen implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Personen")
        /** @var int|null */
        public ?int $Personen=null,

        // @DataMember(Name="Von")
        /** @var DateTime */
        public DateTime $Von=new DateTime(),

        // @DataMember(Name="Bis")
        /** @var DateTime|null */
        public ?DateTime $Bis=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Personen'])) $this->Personen = $o['Personen'];
        if (isset($o['Von'])) $this->Von = JsonConverters::from('DateTime', $o['Von']);
        if (isset($o['Bis'])) $this->Bis = JsonConverters::from('DateTime', $o['Bis']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Personen)) $o['Personen'] = $this->Personen;
        if (isset($this->Von)) $o['Von'] = JsonConverters::to('DateTime', $this->Von);
        if (isset($this->Bis)) $o['Bis'] = JsonConverters::to('DateTime', $this->Bis);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class NutzerCoOwnership implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="ShareValue")
        /** @var float|null */
        public ?float $ShareValue=null,

        // @DataMember(Name="Von")
        /** @var DateTime */
        public DateTime $Von=new DateTime(),

        // @DataMember(Name="Bis")
        /** @var DateTime|null */
        public ?DateTime $Bis=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['ShareValue'])) $this->ShareValue = $o['ShareValue'];
        if (isset($o['Von'])) $this->Von = JsonConverters::from('DateTime', $o['Von']);
        if (isset($o['Bis'])) $this->Bis = JsonConverters::from('DateTime', $o['Bis']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->ShareValue)) $o['ShareValue'] = $this->ShareValue;
        if (isset($this->Von)) $o['Von'] = JsonConverters::to('DateTime', $this->Von);
        if (isset($this->Bis)) $o['Bis'] = JsonConverters::to('DateTime', $this->Bis);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class NutzerQuadratmeter implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Quadratmeter_Hzg")
        /** @var float|null */
        public ?float $Quadratmeter_Hzg=null,

        // @DataMember(Name="Quadratmeter_Ww")
        /** @var float|null */
        public ?float $Quadratmeter_Ww=null,

        // @DataMember(Name="Quadratmeter_Nk")
        /** @var float|null */
        public ?float $Quadratmeter_Nk=null,

        // @DataMember(Name="Von")
        /** @var DateTime */
        public DateTime $Von=new DateTime(),

        // @DataMember(Name="Bis")
        /** @var DateTime|null */
        public ?DateTime $Bis=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Quadratmeter_Hzg'])) $this->Quadratmeter_Hzg = $o['Quadratmeter_Hzg'];
        if (isset($o['Quadratmeter_Ww'])) $this->Quadratmeter_Ww = $o['Quadratmeter_Ww'];
        if (isset($o['Quadratmeter_Nk'])) $this->Quadratmeter_Nk = $o['Quadratmeter_Nk'];
        if (isset($o['Von'])) $this->Von = JsonConverters::from('DateTime', $o['Von']);
        if (isset($o['Bis'])) $this->Bis = JsonConverters::from('DateTime', $o['Bis']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Quadratmeter_Hzg)) $o['Quadratmeter_Hzg'] = $this->Quadratmeter_Hzg;
        if (isset($this->Quadratmeter_Ww)) $o['Quadratmeter_Ww'] = $this->Quadratmeter_Ww;
        if (isset($this->Quadratmeter_Nk)) $o['Quadratmeter_Nk'] = $this->Quadratmeter_Nk;
        if (isset($this->Von)) $o['Von'] = JsonConverters::to('DateTime', $this->Von);
        if (isset($this->Bis)) $o['Bis'] = JsonConverters::to('DateTime', $this->Bis);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Nutzer implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="ArtDerNutzung")
        /** @var NutzerKind|null */
        public ?NutzerKind $ArtDerNutzung=null,

        // @DataMember(Name="Einzug")
        /** @var DateTime|null */
        public ?DateTime $Einzug=null,

        // @DataMember(Name="Auszug")
        /** @var DateTime|null */
        public ?DateTime $Auszug=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="Name4")
        /** @var string|null */
        public ?string $Name4=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="NaechsterTermin")
        /** @var DateTime|null */
        public ?DateTime $NaechsterTermin=null,

        // @DataMember(Name="Anrede")
        /** @var string|null */
        public ?string $Anrede=null,

        // @DataMember(Name="Titel")
        /** @var string|null */
        public ?string $Titel=null,

        // @DataMember(Name="NutzerKommunikationen")
        /** @var array<NutzerCommunication>|null */
        public ?array $NutzerKommunikationen=null,

        // @DataMember(Name="NutzerPersonen")
        /** @var array<NutzerPersonen>|null */
        public ?array $NutzerPersonen=null,

        // @DataMember(Name="NutzerCoOwnership")
        /** @var array<NutzerCoOwnership>|null */
        public ?array $NutzerCoOwnership=null,

        // @DataMember(Name="NutzerQuadratmeter")
        /** @var array<NutzerQuadratmeter>|null */
        public ?array $NutzerQuadratmeter=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['ArtDerNutzung'])) $this->ArtDerNutzung = JsonConverters::from('NutzerKind', $o['ArtDerNutzung']);
        if (isset($o['Einzug'])) $this->Einzug = JsonConverters::from('DateTime', $o['Einzug']);
        if (isset($o['Auszug'])) $this->Auszug = JsonConverters::from('DateTime', $o['Auszug']);
        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['Name4'])) $this->Name4 = $o['Name4'];
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['NaechsterTermin'])) $this->NaechsterTermin = JsonConverters::from('DateTime', $o['NaechsterTermin']);
        if (isset($o['Anrede'])) $this->Anrede = $o['Anrede'];
        if (isset($o['Titel'])) $this->Titel = $o['Titel'];
        if (isset($o['NutzerKommunikationen'])) $this->NutzerKommunikationen = JsonConverters::fromArray('NutzerCommunication', $o['NutzerKommunikationen']);
        if (isset($o['NutzerPersonen'])) $this->NutzerPersonen = JsonConverters::fromArray('NutzerPersonen', $o['NutzerPersonen']);
        if (isset($o['NutzerCoOwnership'])) $this->NutzerCoOwnership = JsonConverters::fromArray('NutzerCoOwnership', $o['NutzerCoOwnership']);
        if (isset($o['NutzerQuadratmeter'])) $this->NutzerQuadratmeter = JsonConverters::fromArray('NutzerQuadratmeter', $o['NutzerQuadratmeter']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->ArtDerNutzung)) $o['ArtDerNutzung'] = JsonConverters::to('NutzerKind', $this->ArtDerNutzung);
        if (isset($this->Einzug)) $o['Einzug'] = JsonConverters::to('DateTime', $this->Einzug);
        if (isset($this->Auszug)) $o['Auszug'] = JsonConverters::to('DateTime', $this->Auszug);
        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->Name4)) $o['Name4'] = $this->Name4;
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->NaechsterTermin)) $o['NaechsterTermin'] = JsonConverters::to('DateTime', $this->NaechsterTermin);
        if (isset($this->Anrede)) $o['Anrede'] = $this->Anrede;
        if (isset($this->Titel)) $o['Titel'] = $this->Titel;
        if (isset($this->NutzerKommunikationen)) $o['NutzerKommunikationen'] = JsonConverters::toArray('NutzerCommunication', $this->NutzerKommunikationen);
        if (isset($this->NutzerPersonen)) $o['NutzerPersonen'] = JsonConverters::toArray('NutzerPersonen', $this->NutzerPersonen);
        if (isset($this->NutzerCoOwnership)) $o['NutzerCoOwnership'] = JsonConverters::toArray('NutzerCoOwnership', $this->NutzerCoOwnership);
        if (isset($this->NutzerQuadratmeter)) $o['NutzerQuadratmeter'] = JsonConverters::toArray('NutzerQuadratmeter', $this->NutzerQuadratmeter);
        return empty($o) ? new class(){} : $o;
    }
}

class Nutzeinheit implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="NeNummerInt")
        /** @var string|null */
        public ?string $NeNummerInt=null,

        // @DataMember(Name="Lage")
        /** @var string|null */
        public ?string $Lage=null,

        // @DataMember(Name="BegeReihenfolge")
        /** @var string|null */
        public ?string $BegeReihenfolge=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="AbrechnungseinheitGuid")
        /** @var string */
        public string $AbrechnungseinheitGuid='',

        // @DataMember(Name="Adresse")
        /** @var Address|null */
        public ?Address $Adresse=null,

        // @DataMember(Name="Geraete")
        /** @var array<Device>|null */
        public ?array $Geraete=null,

        // @DataMember(Name="Nutzer")
        /** @var array<Nutzer>|null */
        public ?array $Nutzer=null,

        // @DataMember(Name="Fotos")
        /** @var array<Photo>|null */
        public ?array $Fotos=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['NeNummerInt'])) $this->NeNummerInt = $o['NeNummerInt'];
        if (isset($o['Lage'])) $this->Lage = $o['Lage'];
        if (isset($o['BegeReihenfolge'])) $this->BegeReihenfolge = $o['BegeReihenfolge'];
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['AbrechnungseinheitGuid'])) $this->AbrechnungseinheitGuid = $o['AbrechnungseinheitGuid'];
        if (isset($o['Adresse'])) $this->Adresse = JsonConverters::from('Address', $o['Adresse']);
        if (isset($o['Geraete'])) $this->Geraete = JsonConverters::fromArray('Device', $o['Geraete']);
        if (isset($o['Nutzer'])) $this->Nutzer = JsonConverters::fromArray('Nutzer', $o['Nutzer']);
        if (isset($o['Fotos'])) $this->Fotos = JsonConverters::fromArray('Photo', $o['Fotos']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->NeNummerInt)) $o['NeNummerInt'] = $this->NeNummerInt;
        if (isset($this->Lage)) $o['Lage'] = $this->Lage;
        if (isset($this->BegeReihenfolge)) $o['BegeReihenfolge'] = $this->BegeReihenfolge;
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->AbrechnungseinheitGuid)) $o['AbrechnungseinheitGuid'] = $this->AbrechnungseinheitGuid;
        if (isset($this->Adresse)) $o['Adresse'] = JsonConverters::to('Address', $this->Adresse);
        if (isset($this->Geraete)) $o['Geraete'] = JsonConverters::toArray('Device', $this->Geraete);
        if (isset($this->Nutzer)) $o['Nutzer'] = JsonConverters::toArray('Nutzer', $this->Nutzer);
        if (isset($this->Fotos)) $o['Fotos'] = JsonConverters::toArray('Photo', $this->Fotos);
        return empty($o) ? new class(){} : $o;
    }
}

enum ProcessState : string
{
    case InProgress = 'InProgress';
    case Updating = 'Updating';
    case Creating = 'Creating';
    case Completed = 'Completed';
}

// @DataContract
class OrderState implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="AuftragArten")
        /** @var array<OrderKind>|null */
        public ?array $AuftragArten=null,

        // @DataMember(Name="Bearbeitungsstatus")
        /** @var ProcessState|null */
        public ?ProcessState $Bearbeitungsstatus=null,

        // @DataMember(Name="AbgeschlossenDatum")
        /** @var DateTime|null */
        public ?DateTime $AbgeschlossenDatum=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['AuftragArten'])) $this->AuftragArten = JsonConverters::fromArray('Nullable<OrderKind>', $o['AuftragArten']);
        if (isset($o['Bearbeitungsstatus'])) $this->Bearbeitungsstatus = JsonConverters::from('ProcessState', $o['Bearbeitungsstatus']);
        if (isset($o['AbgeschlossenDatum'])) $this->AbgeschlossenDatum = JsonConverters::from('DateTime', $o['AbgeschlossenDatum']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->AuftragArten)) $o['AuftragArten'] = JsonConverters::toArray('Nullable<OrderKind>', $this->AuftragArten);
        if (isset($this->Bearbeitungsstatus)) $o['Bearbeitungsstatus'] = JsonConverters::to('ProcessState', $this->Bearbeitungsstatus);
        if (isset($this->AbgeschlossenDatum)) $o['AbgeschlossenDatum'] = JsonConverters::to('DateTime', $this->AbgeschlossenDatum);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class AppointmentStoreUser implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="MonteurGuid")
        /** @var string */
        public string $MonteurGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['MonteurGuid'])) $this->MonteurGuid = $o['MonteurGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->MonteurGuid)) $o['MonteurGuid'] = $this->MonteurGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class AppointmentNutzeinheit implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="NutzeinheitGuid")
        /** @var string */
        public string $NutzeinheitGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['NutzeinheitGuid'])) $this->NutzeinheitGuid = $o['NutzeinheitGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->NutzeinheitGuid)) $o['NutzeinheitGuid'] = $this->NutzeinheitGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Appointment implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="Von")
        /** @var DateTime */
        public DateTime $Von=new DateTime(),

        // @DataMember(Name="Bis")
        /** @var DateTime */
        public DateTime $Bis=new DateTime(),

        // @DataMember(Name="Monteure")
        /** @var array<AppointmentStoreUser>|null */
        public ?array $Monteure=null,

        // @DataMember(Name="Nutzeinheiten")
        /** @var array<AppointmentNutzeinheit>|null */
        public ?array $Nutzeinheiten=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['Von'])) $this->Von = JsonConverters::from('DateTime', $o['Von']);
        if (isset($o['Bis'])) $this->Bis = JsonConverters::from('DateTime', $o['Bis']);
        if (isset($o['Monteure'])) $this->Monteure = JsonConverters::fromArray('AppointmentStoreUser', $o['Monteure']);
        if (isset($o['Nutzeinheiten'])) $this->Nutzeinheiten = JsonConverters::fromArray('AppointmentNutzeinheit', $o['Nutzeinheiten']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->Von)) $o['Von'] = JsonConverters::to('DateTime', $this->Von);
        if (isset($this->Bis)) $o['Bis'] = JsonConverters::to('DateTime', $this->Bis);
        if (isset($this->Monteure)) $o['Monteure'] = JsonConverters::toArray('AppointmentStoreUser', $this->Monteure);
        if (isset($this->Nutzeinheiten)) $o['Nutzeinheiten'] = JsonConverters::toArray('AppointmentNutzeinheit', $this->Nutzeinheiten);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class NutzeinheitOrderPosition implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="NutzeinheitGuid")
        /** @var string */
        public string $NutzeinheitGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['NutzeinheitGuid'])) $this->NutzeinheitGuid = $o['NutzeinheitGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->NutzeinheitGuid)) $o['NutzeinheitGuid'] = $this->NutzeinheitGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class OrderPosition implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="SollMenge")
        /** @var int */
        public int $SollMenge=0,

        // @DataMember(Name="IstMenge")
        /** @var int */
        public int $IstMenge=0,

        // @DataMember(Name="NutzeinheitOrderPositions")
        /** @var array<NutzeinheitOrderPosition>|null */
        public ?array $NutzeinheitOrderPositions=null,

        // @DataMember(Name="ArtikelGuid")
        /** @var string */
        public string $ArtikelGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['SollMenge'])) $this->SollMenge = $o['SollMenge'];
        if (isset($o['IstMenge'])) $this->IstMenge = $o['IstMenge'];
        if (isset($o['NutzeinheitOrderPositions'])) $this->NutzeinheitOrderPositions = JsonConverters::fromArray('NutzeinheitOrderPosition', $o['NutzeinheitOrderPositions']);
        if (isset($o['ArtikelGuid'])) $this->ArtikelGuid = $o['ArtikelGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->SollMenge)) $o['SollMenge'] = $this->SollMenge;
        if (isset($this->IstMenge)) $o['IstMenge'] = $this->IstMenge;
        if (isset($this->NutzeinheitOrderPositions)) $o['NutzeinheitOrderPositions'] = JsonConverters::toArray('NutzeinheitOrderPosition', $this->NutzeinheitOrderPositions);
        if (isset($this->ArtikelGuid)) $o['ArtikelGuid'] = $this->ArtikelGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class NutzeinheitOrderState implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="NutzeinheitGuid")
        /** @var string */
        public string $NutzeinheitGuid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="AuftragArten")
        /** @var array<NutzeinheitOrderKind>|null */
        public ?array $AuftragArten=null,

        // @DataMember(Name="Bearbeitungsstatus")
        /** @var ProcessState|null */
        public ?ProcessState $Bearbeitungsstatus=null,

        // @DataMember(Name="AbgeschlossenDatum")
        /** @var DateTime|null */
        public ?DateTime $AbgeschlossenDatum=null,

        // @DataMember(Name="OsVersion")
        /** @var string|null */
        public ?string $OsVersion=null,

        // @DataMember(Name="AppVersion")
        /** @var string|null */
        public ?string $AppVersion=null,

        // @DataMember(Name="OsPlatform")
        /** @var string|null */
        public ?string $OsPlatform=null,

        // @DataMember(Name="AppGeraeteNummmer")
        /** @var string|null */
        public ?string $AppGeraeteNummmer=null,

        // @DataMember(Name="AmwInfoKeyGuid")
        /** @var string|null */
        public ?string $AmwInfoKeyGuid=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['NutzeinheitGuid'])) $this->NutzeinheitGuid = $o['NutzeinheitGuid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['AuftragArten'])) $this->AuftragArten = JsonConverters::fromArray('Nullable<NutzeinheitOrderKind>', $o['AuftragArten']);
        if (isset($o['Bearbeitungsstatus'])) $this->Bearbeitungsstatus = JsonConverters::from('ProcessState', $o['Bearbeitungsstatus']);
        if (isset($o['AbgeschlossenDatum'])) $this->AbgeschlossenDatum = JsonConverters::from('DateTime', $o['AbgeschlossenDatum']);
        if (isset($o['OsVersion'])) $this->OsVersion = $o['OsVersion'];
        if (isset($o['AppVersion'])) $this->AppVersion = $o['AppVersion'];
        if (isset($o['OsPlatform'])) $this->OsPlatform = $o['OsPlatform'];
        if (isset($o['AppGeraeteNummmer'])) $this->AppGeraeteNummmer = $o['AppGeraeteNummmer'];
        if (isset($o['AmwInfoKeyGuid'])) $this->AmwInfoKeyGuid = $o['AmwInfoKeyGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->NutzeinheitGuid)) $o['NutzeinheitGuid'] = $this->NutzeinheitGuid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->AuftragArten)) $o['AuftragArten'] = JsonConverters::toArray('Nullable<NutzeinheitOrderKind>', $this->AuftragArten);
        if (isset($this->Bearbeitungsstatus)) $o['Bearbeitungsstatus'] = JsonConverters::to('ProcessState', $this->Bearbeitungsstatus);
        if (isset($this->AbgeschlossenDatum)) $o['AbgeschlossenDatum'] = JsonConverters::to('DateTime', $this->AbgeschlossenDatum);
        if (isset($this->OsVersion)) $o['OsVersion'] = $this->OsVersion;
        if (isset($this->AppVersion)) $o['AppVersion'] = $this->AppVersion;
        if (isset($this->OsPlatform)) $o['OsPlatform'] = $this->OsPlatform;
        if (isset($this->AppGeraeteNummmer)) $o['AppGeraeteNummmer'] = $this->AppGeraeteNummmer;
        if (isset($this->AmwInfoKeyGuid)) $o['AmwInfoKeyGuid'] = $this->AmwInfoKeyGuid;
        return empty($o) ? new class(){} : $o;
    }
}

enum DeviceOrderKind : string
{
    case Assembly = 'Assembly';
    case Maintenance = 'Maintenance';
    case Exchange = 'Exchange';
    case Reading = 'Reading';
    case Inspection = 'Inspection';
    case MainReading = 'MainReading';
}

// @DataContract
class DeviceOrderState implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="GeraeteGuid")
        /** @var string */
        public string $GeraeteGuid='',

        // @DataMember(Name="AuftragGuid")
        /** @var string */
        public string $AuftragGuid='',

        // @DataMember(Name="AuftragArt")
        /** @var DeviceOrderKind|null */
        public ?DeviceOrderKind $AuftragArt=null,

        // @DataMember(Name="Bearbeitungsstatus")
        /** @var ProcessState|null */
        public ?ProcessState $Bearbeitungsstatus=null,

        // @DataMember(Name="AbgeschlossenDatum")
        /** @var DateTime|null */
        public ?DateTime $AbgeschlossenDatum=null,

        // @DataMember(Name="AmwInfo")
        /** @var string|null */
        public ?string $AmwInfo=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['GeraeteGuid'])) $this->GeraeteGuid = $o['GeraeteGuid'];
        if (isset($o['AuftragGuid'])) $this->AuftragGuid = $o['AuftragGuid'];
        if (isset($o['AuftragArt'])) $this->AuftragArt = JsonConverters::from('DeviceOrderKind', $o['AuftragArt']);
        if (isset($o['Bearbeitungsstatus'])) $this->Bearbeitungsstatus = JsonConverters::from('ProcessState', $o['Bearbeitungsstatus']);
        if (isset($o['AbgeschlossenDatum'])) $this->AbgeschlossenDatum = JsonConverters::from('DateTime', $o['AbgeschlossenDatum']);
        if (isset($o['AmwInfo'])) $this->AmwInfo = $o['AmwInfo'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->GeraeteGuid)) $o['GeraeteGuid'] = $this->GeraeteGuid;
        if (isset($this->AuftragGuid)) $o['AuftragGuid'] = $this->AuftragGuid;
        if (isset($this->AuftragArt)) $o['AuftragArt'] = JsonConverters::to('DeviceOrderKind', $this->AuftragArt);
        if (isset($this->Bearbeitungsstatus)) $o['Bearbeitungsstatus'] = JsonConverters::to('ProcessState', $this->Bearbeitungsstatus);
        if (isset($this->AbgeschlossenDatum)) $o['AbgeschlossenDatum'] = JsonConverters::to('DateTime', $this->AbgeschlossenDatum);
        if (isset($this->AmwInfo)) $o['AmwInfo'] = $this->AmwInfo;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class PersonCommunication implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Adresse")
        /** @var string|null */
        public ?string $Adresse=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="KommunikationsFunktionGuid")
        /** @var string */
        public string $KommunikationsFunktionGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Adresse'])) $this->Adresse = $o['Adresse'];
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['KommunikationsFunktionGuid'])) $this->KommunikationsFunktionGuid = $o['KommunikationsFunktionGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Adresse)) $o['Adresse'] = $this->Adresse;
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->KommunikationsFunktionGuid)) $o['KommunikationsFunktionGuid'] = $this->KommunikationsFunktionGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Person implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Nachname1")
        /** @var string|null */
        public ?string $Nachname1=null,

        // @DataMember(Name="Nachname2")
        /** @var string|null */
        public ?string $Nachname2=null,

        // @DataMember(Name="Nachname3")
        /** @var string|null */
        public ?string $Nachname3=null,

        // @DataMember(Name="Vorname1")
        /** @var string|null */
        public ?string $Vorname1=null,

        // @DataMember(Name="Vorname2")
        /** @var string|null */
        public ?string $Vorname2=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="Anrede")
        /** @var string|null */
        public ?string $Anrede=null,

        // @DataMember(Name="Titel")
        /** @var string|null */
        public ?string $Titel=null,

        // @DataMember(Name="PersonKommunikationen")
        /** @var array<PersonCommunication>|null */
        public ?array $PersonKommunikationen=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Nachname1'])) $this->Nachname1 = $o['Nachname1'];
        if (isset($o['Nachname2'])) $this->Nachname2 = $o['Nachname2'];
        if (isset($o['Nachname3'])) $this->Nachname3 = $o['Nachname3'];
        if (isset($o['Vorname1'])) $this->Vorname1 = $o['Vorname1'];
        if (isset($o['Vorname2'])) $this->Vorname2 = $o['Vorname2'];
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['Anrede'])) $this->Anrede = $o['Anrede'];
        if (isset($o['Titel'])) $this->Titel = $o['Titel'];
        if (isset($o['PersonKommunikationen'])) $this->PersonKommunikationen = JsonConverters::fromArray('PersonCommunication', $o['PersonKommunikationen']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Nachname1)) $o['Nachname1'] = $this->Nachname1;
        if (isset($this->Nachname2)) $o['Nachname2'] = $this->Nachname2;
        if (isset($this->Nachname3)) $o['Nachname3'] = $this->Nachname3;
        if (isset($this->Vorname1)) $o['Vorname1'] = $this->Vorname1;
        if (isset($this->Vorname2)) $o['Vorname2'] = $this->Vorname2;
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->Anrede)) $o['Anrede'] = $this->Anrede;
        if (isset($this->Titel)) $o['Titel'] = $this->Titel;
        if (isset($this->PersonKommunikationen)) $o['PersonKommunikationen'] = JsonConverters::toArray('PersonCommunication', $this->PersonKommunikationen);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Orderer implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="Person")
        /** @var Person|null */
        public ?Person $Person=null,

        // @DataMember(Name="BetrieblichePosition")
        /** @var string|null */
        public ?string $BetrieblichePosition=null
    ) {
    }

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

enum SignatureKind : string
{
    case Nutzer = 'Nutzer';
    case Technician = 'Technician';
}

// @DataContract
class Signature implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="Timestamp")
        /** @var DateTime|null */
        public ?DateTime $Timestamp=null,

        // @DataMember(Name="UnterschriftArt")
        /** @var SignatureKind|null */
        public ?SignatureKind $UnterschriftArt=null,

        // @DataMember(Name="NutzeinheitGuid")
        /** @var string */
        public string $NutzeinheitGuid=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['Timestamp'])) $this->Timestamp = JsonConverters::from('DateTime', $o['Timestamp']);
        if (isset($o['UnterschriftArt'])) $this->UnterschriftArt = JsonConverters::from('SignatureKind', $o['UnterschriftArt']);
        if (isset($o['NutzeinheitGuid'])) $this->NutzeinheitGuid = $o['NutzeinheitGuid'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->Timestamp)) $o['Timestamp'] = JsonConverters::to('DateTime', $this->Timestamp);
        if (isset($this->UnterschriftArt)) $o['UnterschriftArt'] = JsonConverters::to('SignatureKind', $this->UnterschriftArt);
        if (isset($this->NutzeinheitGuid)) $o['NutzeinheitGuid'] = $this->NutzeinheitGuid;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Order implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="AbrechnungseinheitGuid")
        /** @var string */
        public string $AbrechnungseinheitGuid='',

        // @DataMember(Name="AuftragNummer")
        /** @var string|null */
        public ?string $AuftragNummer=null,

        // @DataMember(Name="Bezeichnung")
        /** @var string|null */
        public ?string $Bezeichnung=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="UnterschriftBenoetigt")
        /** @var bool|null */
        public ?bool $UnterschriftBenoetigt=null,

        // @DataMember(Name="Erstellungsdatum")
        /** @var DateTime */
        public DateTime $Erstellungsdatum=new DateTime(),

        // @DataMember(Name="AuftragZustand")
        /** @var OrderState|null */
        public ?OrderState $AuftragZustand=null,

        // @DataMember(Name="Termine")
        /** @var array<Appointment>|null */
        public ?array $Termine=null,

        // @DataMember(Name="AuftragsPositionen")
        /** @var array<OrderPosition>|null */
        public ?array $AuftragsPositionen=null,

        // @DataMember(Name="NutzeinheitZustaende")
        /** @var array<NutzeinheitOrderState>|null */
        public ?array $NutzeinheitZustaende=null,

        // @DataMember(Name="GeraeteZustaende")
        /** @var array<DeviceOrderState>|null */
        public ?array $GeraeteZustaende=null,

        // @DataMember(Name="Auftraggeber")
        /** @var Orderer|null */
        public ?Orderer $Auftraggeber=null,

        // @DataMember(Name="Unterschriften")
        /** @var array<Signature>|null */
        public ?array $Unterschriften=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['AbrechnungseinheitGuid'])) $this->AbrechnungseinheitGuid = $o['AbrechnungseinheitGuid'];
        if (isset($o['AuftragNummer'])) $this->AuftragNummer = $o['AuftragNummer'];
        if (isset($o['Bezeichnung'])) $this->Bezeichnung = $o['Bezeichnung'];
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['UnterschriftBenoetigt'])) $this->UnterschriftBenoetigt = $o['UnterschriftBenoetigt'];
        if (isset($o['Erstellungsdatum'])) $this->Erstellungsdatum = JsonConverters::from('DateTime', $o['Erstellungsdatum']);
        if (isset($o['AuftragZustand'])) $this->AuftragZustand = JsonConverters::from('OrderState', $o['AuftragZustand']);
        if (isset($o['Termine'])) $this->Termine = JsonConverters::fromArray('Appointment', $o['Termine']);
        if (isset($o['AuftragsPositionen'])) $this->AuftragsPositionen = JsonConverters::fromArray('OrderPosition', $o['AuftragsPositionen']);
        if (isset($o['NutzeinheitZustaende'])) $this->NutzeinheitZustaende = JsonConverters::fromArray('NutzeinheitOrderState', $o['NutzeinheitZustaende']);
        if (isset($o['GeraeteZustaende'])) $this->GeraeteZustaende = JsonConverters::fromArray('DeviceOrderState', $o['GeraeteZustaende']);
        if (isset($o['Auftraggeber'])) $this->Auftraggeber = JsonConverters::from('Orderer', $o['Auftraggeber']);
        if (isset($o['Unterschriften'])) $this->Unterschriften = JsonConverters::fromArray('Signature', $o['Unterschriften']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->AbrechnungseinheitGuid)) $o['AbrechnungseinheitGuid'] = $this->AbrechnungseinheitGuid;
        if (isset($this->AuftragNummer)) $o['AuftragNummer'] = $this->AuftragNummer;
        if (isset($this->Bezeichnung)) $o['Bezeichnung'] = $this->Bezeichnung;
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->UnterschriftBenoetigt)) $o['UnterschriftBenoetigt'] = $this->UnterschriftBenoetigt;
        if (isset($this->Erstellungsdatum)) $o['Erstellungsdatum'] = JsonConverters::to('DateTime', $this->Erstellungsdatum);
        if (isset($this->AuftragZustand)) $o['AuftragZustand'] = JsonConverters::to('OrderState', $this->AuftragZustand);
        if (isset($this->Termine)) $o['Termine'] = JsonConverters::toArray('Appointment', $this->Termine);
        if (isset($this->AuftragsPositionen)) $o['AuftragsPositionen'] = JsonConverters::toArray('OrderPosition', $this->AuftragsPositionen);
        if (isset($this->NutzeinheitZustaende)) $o['NutzeinheitZustaende'] = JsonConverters::toArray('NutzeinheitOrderState', $this->NutzeinheitZustaende);
        if (isset($this->GeraeteZustaende)) $o['GeraeteZustaende'] = JsonConverters::toArray('DeviceOrderState', $this->GeraeteZustaende);
        if (isset($this->Auftraggeber)) $o['Auftraggeber'] = JsonConverters::to('Orderer', $this->Auftraggeber);
        if (isset($this->Unterschriften)) $o['Unterschriften'] = JsonConverters::toArray('Signature', $this->Unterschriften);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Customer implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="Name")
        /** @var string|null */
        public ?string $Name=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="Notiz")
        /** @var string|null */
        public ?string $Notiz=null,

        // @DataMember(Name="Anrede")
        /** @var string|null */
        public ?string $Anrede=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['Name'])) $this->Name = $o['Name'];
        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['Notiz'])) $this->Notiz = $o['Notiz'];
        if (isset($o['Anrede'])) $this->Anrede = $o['Anrede'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->Name)) $o['Name'] = $this->Name;
        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->Notiz)) $o['Notiz'] = $this->Notiz;
        if (isset($this->Anrede)) $o['Anrede'] = $this->Anrede;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class PersonAbrechnungseinheit implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Anmerkung")
        /** @var string|null */
        public ?string $Anmerkung=null,

        // @DataMember(Name="PersonGuid")
        /** @var string */
        public string $PersonGuid='',

        // @DataMember(Name="BetrieblichePosition")
        /** @var string|null */
        public ?string $BetrieblichePosition=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Anmerkung'])) $this->Anmerkung = $o['Anmerkung'];
        if (isset($o['PersonGuid'])) $this->PersonGuid = $o['PersonGuid'];
        if (isset($o['BetrieblichePosition'])) $this->BetrieblichePosition = $o['BetrieblichePosition'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Anmerkung)) $o['Anmerkung'] = $this->Anmerkung;
        if (isset($this->PersonGuid)) $o['PersonGuid'] = $this->PersonGuid;
        if (isset($this->BetrieblichePosition)) $o['BetrieblichePosition'] = $this->BetrieblichePosition;
        return empty($o) ? new class(){} : $o;
    }
}

class Abrechnungseinheit implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Guid")
        /** @var string */
        public string $Guid='',

        // @DataMember(Name="LastModified")
        /** @var DateTime|null */
        public ?DateTime $LastModified=null,

        // @DataMember(Name="Objektnummer")
        /** @var string|null */
        public ?string $Objektnummer=null,

        // @DataMember(Name="Notiz")
        /** @var string|null */
        public ?string $Notiz=null,

        // @DataMember(Name="NotizIntern")
        /** @var string|null */
        public ?string $NotizIntern=null,

        // @DataMember(Name="NotizLegionellen")
        /** @var string|null */
        public ?string $NotizLegionellen=null,

        // @DataMember(Name="Kunde")
        /** @var Customer|null */
        public ?Customer $Kunde=null,

        // @DataMember(Name="Adresse")
        /** @var Address|null */
        public ?Address $Adresse=null,

        // @DataMember(Name="BillingPeriodEnd")
        /** @var DateTime|null */
        public ?DateTime $BillingPeriodEnd=null,

        // @DataMember(Name="PersonAbrechnungseinheit")
        /** @var array<PersonAbrechnungseinheit>|null */
        public ?array $PersonAbrechnungseinheit=null,

        // @DataMember(Name="Persons")
        /** @var array<Person>|null */
        public ?array $Persons=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Guid'])) $this->Guid = $o['Guid'];
        if (isset($o['LastModified'])) $this->LastModified = JsonConverters::from('DateTime', $o['LastModified']);
        if (isset($o['Objektnummer'])) $this->Objektnummer = $o['Objektnummer'];
        if (isset($o['Notiz'])) $this->Notiz = $o['Notiz'];
        if (isset($o['NotizIntern'])) $this->NotizIntern = $o['NotizIntern'];
        if (isset($o['NotizLegionellen'])) $this->NotizLegionellen = $o['NotizLegionellen'];
        if (isset($o['Kunde'])) $this->Kunde = JsonConverters::from('Customer', $o['Kunde']);
        if (isset($o['Adresse'])) $this->Adresse = JsonConverters::from('Address', $o['Adresse']);
        if (isset($o['BillingPeriodEnd'])) $this->BillingPeriodEnd = JsonConverters::from('DateTime', $o['BillingPeriodEnd']);
        if (isset($o['PersonAbrechnungseinheit'])) $this->PersonAbrechnungseinheit = JsonConverters::fromArray('PersonAbrechnungseinheit', $o['PersonAbrechnungseinheit']);
        if (isset($o['Persons'])) $this->Persons = JsonConverters::fromArray('Person', $o['Persons']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Guid)) $o['Guid'] = $this->Guid;
        if (isset($this->LastModified)) $o['LastModified'] = JsonConverters::to('DateTime', $this->LastModified);
        if (isset($this->Objektnummer)) $o['Objektnummer'] = $this->Objektnummer;
        if (isset($this->Notiz)) $o['Notiz'] = $this->Notiz;
        if (isset($this->NotizIntern)) $o['NotizIntern'] = $this->NotizIntern;
        if (isset($this->NotizLegionellen)) $o['NotizLegionellen'] = $this->NotizLegionellen;
        if (isset($this->Kunde)) $o['Kunde'] = JsonConverters::to('Customer', $this->Kunde);
        if (isset($this->Adresse)) $o['Adresse'] = JsonConverters::to('Address', $this->Adresse);
        if (isset($this->BillingPeriodEnd)) $o['BillingPeriodEnd'] = JsonConverters::to('DateTime', $this->BillingPeriodEnd);
        if (isset($this->PersonAbrechnungseinheit)) $o['PersonAbrechnungseinheit'] = JsonConverters::toArray('PersonAbrechnungseinheit', $this->PersonAbrechnungseinheit);
        if (isset($this->Persons)) $o['Persons'] = JsonConverters::toArray('Person', $this->Persons);
        return empty($o) ? new class(){} : $o;
    }
}

class GetNotesResponse implements JsonSerializable
{
    public function __construct(
        // @DataMember(Name="Nutzeinheiten")
        /** @var array<Nutzeinheit>|null */
        public ?array $Nutzeinheiten=null,

        // @DataMember(Name="Orders")
        /** @var array<Order>|null */
        public ?array $Orders=null,

        // @DataMember(Name="Abrechnungseinheiten")
        /** @var array<Abrechnungseinheit>|null */
        public ?array $Abrechnungseinheiten=null,

        /** @var ResponseStatus|null */
        public ?ResponseStatus $responseStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Nutzeinheiten'])) $this->Nutzeinheiten = JsonConverters::fromArray('Nutzeinheit', $o['Nutzeinheiten']);
        if (isset($o['Orders'])) $this->Orders = JsonConverters::fromArray('Order', $o['Orders']);
        if (isset($o['Abrechnungseinheiten'])) $this->Abrechnungseinheiten = JsonConverters::fromArray('Abrechnungseinheit', $o['Abrechnungseinheiten']);
        if (isset($o['responseStatus'])) $this->responseStatus = JsonConverters::from('ResponseStatus', $o['responseStatus']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Nutzeinheiten)) $o['Nutzeinheiten'] = JsonConverters::toArray('Nutzeinheit', $this->Nutzeinheiten);
        if (isset($this->Orders)) $o['Orders'] = JsonConverters::toArray('Order', $this->Orders);
        if (isset($this->Abrechnungseinheiten)) $o['Abrechnungseinheiten'] = JsonConverters::toArray('Abrechnungseinheit', $this->Abrechnungseinheiten);
        if (isset($this->responseStatus)) $o['responseStatus'] = JsonConverters::to('ResponseStatus', $this->responseStatus);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class GetNotes extends Eras2AppServiceModelBase implements JsonSerializable
{
    /**
     * @param string $UserId
     */
    public function __construct(
        string $UserId=''
    ) {
        parent::__construct($UserId);
    }

    /** @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 GetNotes DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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

GET /App/{UserId}/Status/Notes HTTP/1.1 
Host: faabrechnungen-servamw.eras-online.de 
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"Nutzeinheiten":[{"Guid":"00000000000000000000000000000000","LastModified":"0001-01-01T00:00:00.0000000Z","NeNummerInt":"String","Lage":"String","BegeReihenfolge":"String","Anmerkung":"String","AbrechnungseinheitGuid":"00000000000000000000000000000000","Adresse":{"Guid":"00000000000000000000000000000000","Straße":"String","Straße2":"String","Hausnummer":"String","Postleitzahl":"String","Ort":"String","Postfach":"String","Adresszusatz":"String","Breitengrad":0,"Laengengrad":0}}],"Orders":[{"Guid":"00000000000000000000000000000000","LastModified":"0001-01-01T00:00:00.0000000Z","AbrechnungseinheitGuid":"00000000000000000000000000000000","AuftragNummer":"String","Bezeichnung":"String","Anmerkung":"String","UnterschriftBenoetigt":false,"Erstellungsdatum":"0001-01-01T00:00:00.0000000Z","AuftragZustand":{"LastModified":"0001-01-01T00:00:00.0000000Z","Bearbeitungsstatus":"InProgress","AbgeschlossenDatum":"0001-01-01T00:00:00.0000000Z"},"Auftraggeber":{"Guid":"00000000000000000000000000000000","Person":{"Guid":"00000000000000000000000000000000","LastModified":"0001-01-01T00:00:00.0000000Z","Nachname1":"String","Nachname2":"String","Nachname3":"String","Vorname1":"String","Vorname2":"String","Anmerkung":"String","Anrede":"String","Titel":"String"},"BetrieblichePosition":"String"}}],"Abrechnungseinheiten":[{"Guid":"00000000000000000000000000000000","LastModified":"0001-01-01T00:00:00.0000000Z","Objektnummer":"String","Notiz":"String","NotizIntern":"String","NotizLegionellen":"String","Kunde":{"Guid":"00000000000000000000000000000000","Name":"String","Name2":"String","Name3":"String","Kundennummer":"String","Notiz":"String","Anrede":"String"},"Adresse":{"Guid":"00000000000000000000000000000000","Straße":"String","Straße2":"String","Hausnummer":"String","Postleitzahl":"String","Ort":"String","Postfach":"String","Adresszusatz":"String","Breitengrad":0,"Laengengrad":0},"BillingPeriodEnd":"0001-01-01T00:00:00.0000000Z"}],"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}