| GET | /App/{UserId}/Status/Notes |
|---|
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Eras2AppServiceModelBase:
user_id: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
guid: Optional[str] = None
street: Optional[str] = None
street2: Optional[str] = None
street_number: Optional[str] = None
zipcode: Optional[str] = None
city: Optional[str] = None
mailbox: Optional[str] = None
additional: Optional[str] = None
latitude: float = 0.0
longitude: float = 0.0
class UnitKind(str, Enum):
L = 'L'
KG = 'Kg'
CBM = 'CBM'
STCK = 'Stck'
KWH = 'KWH'
MWH = 'MWH'
GWH = 'GWH'
T = 'T'
RM = 'RM'
EINHEIT = 'Einheit'
QM = 'Qm'
GJ = 'GJ'
MJ = 'MJ'
NULL = 'Null'
class EstimationKind(str, Enum):
NULL = 'Null'
S1 = 'S1'
S2 = 'S2'
S3 = 'S3'
S4 = 'S4'
S5 = 'S5'
N1 = 'N1'
N2 = 'N2'
class DeviceConsumptionState(str, Enum):
NULL = 'Null'
RM_IN_ORDNUNG = 'RMInOrdnung'
RM_FEHLER = 'RMFehler'
RM_NICHT_GEPR = 'RMNichtGepr'
RM_FEHLER_TAUSCH = 'RMFehlerTausch'
KEIN_WOHNUNGSZUTRITT = 'KeinWohnungszutritt'
DEFEKT = 'Defekt'
FALSCH_LAUFEND = 'FalschLaufend'
_ÜBERLAUF = 'Überlauf'
EICHUNG_BEACHTEN = 'EichungBeachten'
PROBE_ENTNOMMEN = 'ProbeEntnommen'
PROBE_ZUM_LABOR = 'ProbeZumLabor'
PROBE_POSITIV = 'ProbePositiv'
PROBE_NEGATIV = 'ProbeNegativ'
class DeviceConsumptionOrigin(str, Enum):
UNBEKANNT = 'Unbekannt'
MANUAL = 'Manual'
EMR = 'Emr'
WALKBY = 'Walkby'
DELETED = 'Deleted'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DeviceConsumption:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
reading_date: Optional[datetime.datetime] = None
factor: float = 0.0
reading: Optional[float] = None
consumption: Optional[float] = None
change_date: Optional[datetime.datetime] = None
estimation: Optional[EstimationKind] = None
state: Optional[DeviceConsumptionState] = None
note: Optional[str] = None
is_reconstructed: bool = False
manual: Optional[float] = None
origin: Optional[DeviceConsumptionOrigin] = None
air_temperature: Optional[Decimal] = None
radiator_temperature: Optional[Decimal] = None
last_error_date: Optional[datetime.datetime] = None
error: Optional[str] = None
ampoule_colour: Optional[str] = None
readind_kind_guid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Photo:
guid: Optional[str] = None
recorded_date: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DeviceAdditionalArticle:
additional_article_guid: Optional[str] = None
quantity: Optional[Decimal] = None
last_modified: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Device:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
number: Optional[str] = None
label: Optional[str] = None
description: Optional[str] = None
installation_date: datetime.datetime = datetime.datetime(1, 1, 1)
deinstallation_date: Optional[datetime.datetime] = None
calibration_date: Optional[datetime.datetime] = None
unit: Optional[UnitKind] = None
note: Optional[str] = None
subtraction: bool = False
group_identifier: Optional[str] = None
estimation: Optional[EstimationKind] = None
first_activation: Optional[datetime.datetime] = None
firmware_version: Optional[str] = None
room_guid: Optional[str] = None
ongoing_number: Optional[str] = None
is_leased: bool = False
is_maintained: bool = False
device_catalog_guid: Optional[str] = None
device_consumptions: Optional[IList[DeviceConsumption]] = None
photos: Optional[IList[Photo]] = None
device_additional_articles: Optional[IList[DeviceAdditionalArticle]] = None
class NutzerKind(str, Enum):
LEERSTAND = 'Leerstand'
GEWERBLICH = 'Gewerblich'
PRIVAT = 'Privat'
ALLGEMEINE_NUTZUNG = 'AllgemeineNutzung'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NutzerCommunication:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
address: Optional[str] = None
note: Optional[str] = None
communication_feature_guid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NutzerPersonen:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
number_of_people: Optional[int] = None
range_from: datetime.datetime = datetime.datetime(1, 1, 1)
range_to: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NutzerCoOwnership:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
share_value: Optional[Decimal] = None
range_from: datetime.datetime = datetime.datetime(1, 1, 1)
range_to: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NutzerQuadratmeter:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
square_meters__hzg: Optional[Decimal] = None
square_meters__ww: Optional[Decimal] = None
square_meters__nk: Optional[Decimal] = None
range_from: datetime.datetime = datetime.datetime(1, 1, 1)
range_to: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Nutzer:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
kind: Optional[NutzerKind] = None
move_in_date: Optional[datetime.datetime] = None
move_out_date: Optional[datetime.datetime] = None
name1: Optional[str] = None
name2: Optional[str] = None
name3: Optional[str] = None
name4: Optional[str] = None
note: Optional[str] = None
next_appointment_date: Optional[datetime.datetime] = None
salutation: Optional[str] = None
title: Optional[str] = None
nutzer_communications: Optional[List[NutzerCommunication]] = None
nutzer_personen: Optional[List[NutzerPersonen]] = None
nutzer_co_ownership: Optional[List[NutzerCoOwnership]] = None
nutzer_quadratmeter: Optional[List[NutzerQuadratmeter]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Nutzeinheit:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
number: Optional[str] = None
location: Optional[str] = None
walk_sequence: Optional[str] = None
note: Optional[str] = None
abrechnungseinheit_guid: Optional[str] = None
address: Optional[Address] = None
devices: Optional[IList[Device]] = None
nutzer: Optional[IList[Nutzer]] = None
photos: Optional[IList[Photo]] = None
class ProcessState(str, Enum):
IN_PROGRESS = 'InProgress'
UPDATING = 'Updating'
CREATING = 'Creating'
COMPLETED = 'Completed'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OrderState:
last_modified: Optional[datetime.datetime] = None
kinds: Optional[IList[OrderKind]] = None
process_state: Optional[ProcessState] = None
completed_date: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AppointmentStoreUser:
store_user_id: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AppointmentNutzeinheit:
nutzeinheit_guid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Appointment:
guid: Optional[str] = None
from_: datetime.datetime = field(metadata=config(field_name='from'), default=datetime.datetime(1, 1, 1))
to: datetime.datetime = datetime.datetime(1, 1, 1)
appointment_store_users: Optional[IList[AppointmentStoreUser]] = None
appointment_nutzeinheiten: Optional[IList[AppointmentNutzeinheit]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NutzeinheitOrderPosition:
nutzeinheit_guid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class OrderPosition:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
note: Optional[str] = None
required_quantity: int = 0
actual_quantity: int = 0
nutzeinheit_order_positions: Optional[IList[NutzeinheitOrderPosition]] = None
article_guid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NutzeinheitOrderState:
nutzeinheit_guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
order_kinds: Optional[IList[NutzeinheitOrderKind]] = None
process_state: Optional[ProcessState] = None
completed_date: Optional[datetime.datetime] = None
os_version: Optional[str] = None
app_version: Optional[str] = None
os_platform: Optional[str] = None
app_device_number: Optional[str] = None
amw_info_key_guid: Optional[str] = None
class DeviceOrderKind(str, Enum):
ASSEMBLY = 'Assembly'
MAINTENANCE = 'Maintenance'
EXCHANGE = 'Exchange'
READING = 'Reading'
INSPECTION = 'Inspection'
MAIN_READING = 'MainReading'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DeviceOrderState:
device_guid: Optional[str] = None
order_guid: Optional[str] = None
order_kind: Optional[DeviceOrderKind] = None
process_state: Optional[ProcessState] = None
completed_date: Optional[datetime.datetime] = None
amw_info: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PersonCommunication:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
address: Optional[str] = None
note: Optional[str] = None
communication_feature_guid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Person:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
lastname1: Optional[str] = None
lastname2: Optional[str] = None
lastname3: Optional[str] = None
firstname1: Optional[str] = None
firstname2: Optional[str] = None
note: Optional[str] = None
salutation: Optional[str] = None
title: Optional[str] = None
person_communications: Optional[List[PersonCommunication]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Orderer:
guid: Optional[str] = None
person: Optional[Person] = None
business_position: Optional[str] = None
class SignatureKind(str, Enum):
NUTZER = 'Nutzer'
TECHNICIAN = 'Technician'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Signature:
guid: Optional[str] = None
recorded_date: Optional[datetime.datetime] = None
kind: Optional[SignatureKind] = None
nutzeinheit_guid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Order:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
abrechnungseinheit_guid: Optional[str] = None
number: Optional[str] = None
label: Optional[str] = None
note: Optional[str] = None
is_signature_required: bool = False
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
order_state: Optional[OrderState] = None
appointments: Optional[IList[Appointment]] = None
order_positions: Optional[IList[OrderPosition]] = None
nutzeinheit_order_states: Optional[IList[NutzeinheitOrderState]] = None
device_order_states: Optional[IList[DeviceOrderState]] = None
orderer: Optional[Orderer] = None
signatures: Optional[IList[Signature]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Customer:
guid: Optional[str] = None
name: Optional[str] = None
name2: Optional[str] = None
name3: Optional[str] = None
number: Optional[str] = None
note: Optional[str] = None
salutation: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PersonAbrechnungseinheit:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
note: Optional[str] = None
person_guid: Optional[str] = None
business_position: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Abrechnungseinheit:
guid: Optional[str] = None
last_modified: Optional[datetime.datetime] = None
number: Optional[str] = None
note: Optional[str] = None
note_internal: Optional[str] = None
note_legionella: Optional[str] = None
customer: Optional[Customer] = None
address: Optional[Address] = None
billig_period_end: Optional[datetime.datetime] = None
person_abrechnungseinheiten: Optional[IList[PersonAbrechnungseinheit]] = None
persons: Optional[IList[Person]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetNotesResponse:
nutzeinheiten: Optional[List[Nutzeinheit]] = None
orders: Optional[List[Order]] = None
abrechnungseinheiten: Optional[List[Abrechnungseinheit]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetNotes(Eras2AppServiceModelBase):
pass
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
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: dumpro-servamw.eras-online.de
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
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"}}}