...
| Code Block |
|---|
[
{
"Id": <value> // Data: SonWin installation number (AINSD.INSTNR), as string
"Address": <value> // Data: street + house number (AINSD.ADRESSE + AINSD.HUSNUMMER)
"ZipCode": <value> // Data: postal code (AINSD.POSTNUM)
"City": <value> // Data: city name (IPOST.NAVN, falling back to AINSD.STED; empty string if both null)
"Properties": null // Hardcoded null: BrightLocationProperties is never populated by the mapper
// (PropertyType, NumberOfResidents, Size, HouseAge, Cars[], Heating,
// HeatingSecondary, Gadgets[] are all unused today)
"PriceZone": <value> // Derived: from ZipCode -> "DK1" if zip >= 6000, "DK2" if zip < 6000,
// null if the zip code cannot be parsed
"Services": [ // Data: the electricity service(s) for this installation (empty array if none)
{
"Id": <value> // Data: metering point id / EAN (IndividualMPoints.MeteringPointId, aka AftageNr)
"Type": <value> // Derived: mapped from SonWin forsyningsart. For electricity this is
// always Hardcoded "consumption_trade". (Other types map to water/heating/
// cooling/tv/broadband/waste/gas_trade, but only El is queried today.)
"Status": "Active" // Hardcoded: BrightServiceStatus.Active.ToString().
// NOTE: this emits the enum NAME "Active" (capital A), NOT the
// display value "active". TODO in code: derive real status from SonWin.
"MeasurementResolution": <value> // Derived from forsyningsart: electricity => "hour"
// (broadband => "none"; other types default to "none" - TODO).Hardcoded "hour"
"MeasurementId": <value> // Data: metering point id (same value as Service.Id / AftageNr)
"DeliveryPointId": null // Hardcoded null: never set by the mapper
"CostResolution": null // Hardcoded null: never set by the mapper
"CostId": null // Hardcoded null: never set by the mapper
"Properties": null // Hardcoded null: BrightServiceProperties (ShowCost,
// RealtimeMeasurements) is never populated
"StartDate": <value> // Data: current supply start date (SWMarket MeteringPointRoleOccurrence.FromDate),
// as DateTimeOffset (UTC/zero offset). Required - null fails validation.
"EndDate": <value> // Data: current supply end date (SWMarket ...ToDate), as DateTimeOffset.
// OMITTED from the JSON entirely when null (JsonIgnore WhenWritingNull);
// null/absent means the supply has no scheduled end (still active).
}
],
"Longitude": null // Hardcoded null
"Latitude": null // Hardcoded null
}
]
|
...