Metering API
- Base URL:
https://metering.sls.epilot.io - Full API Docs: https://docs.epilot.io/api/metering
Usageβ
import { epilot } from '@epilot/sdk'
epilot.authorize(() => '<token>')
const { data } = await epilot.metering.getCustomerMeters(...)
Tree-shakeable importβ
import { getClient, authorize } from '@epilot/sdk/metering'
const meteringClient = getClient()
authorize(meteringClient, () => '<token>')
const { data } = await meteringClient.getCustomerMeters(...)
Operationsβ
ECP
getCustomerMetersgetMetersByContractIdupdateMetergetMetergetMeterCountersgetCounterDetailscreatePortalMeterReadings
ECP Admin
createMeterReadingcreateMeterReadingsbatchWriteMeterReadingscreateMeterReadingFromSubmissiongetAllowedReadingForMetercreateReadingWithMetergetReadingsByIntervalupdateMeterReadingdeleteMeterReading
Schemas
ErrorRespEntityIdEntitySlugBaseEntityEntityEntityItemIdEntityRelationMeterDirectionTariffTypeReasonReasonStringReadByReadingStatusReadingMeterReadingPortalMeterReadingUpdateMeterReadingMeterCounterCounterReadingOnSubmissionSubmissionMeterReadingUnitSourceActionLabelRuleJourneyActionsReadingWithMeterActivityId
getCustomerMetersβ
Get Customer Meters
GET /v1/metering/meter
const { data } = await client.getCustomerMeters()
Response
{
"data": [
{
"_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "meter",
"ma_lo_id": "A09-123",
"status": "active",
"meter_type": "three-phase-meter",
"tariff_type": "Peak load tariff",
"meter_number": "J-1093-1AK",
"sector": "power",
"location": [
{
"country": "Germany",
"city": "Koln",
"postal_code": 81475,
"street": "MelatengΓΌrtel",
"street_number": 71,
"additional_info": "5. Etage",
"_tags": ["billing", "delivery"]
}
],
"used_for": "Domestic Usage",
"manufacturer": "Energy One",
"calibration_date": "2022-10-10T00:00:00.000Z",
"contract": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
},
"customer": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
},
"journey_actions": {
"journey_id": "string",
"action_label": {
"en": "string",
"de": "string"
},
"slug": "string",
"rules": [
{
"entity": "string",
"attribute": "string",
"attribute_value": "string"
}
]
},
"last_reading": "2022-10-10T00:00:00.000Z",
"current_consumption": 100.5
}
]
}
getMetersByContractIdβ
Retrieves all meters related to a contract.
GET /v1/metering/contract/meters/{contract_id}
const { data } = await client.getMetersByContractId({
contract_id: 'example',
})
Response
{
"data": [
{
"_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "meter",
"ma_lo_id": "A09-123",
"status": "active",
"meter_type": "three-phase-meter",
"tariff_type": "Peak load tariff",
"meter_number": "J-1093-1AK",
"sector": "power",
"location": [
{
"country": "Germany",
"city": "Koln",
"postal_code": 81475,
"street": "MelatengΓΌrtel",
"street_number": 71,
"additional_info": "5. Etage",
"_tags": ["billing", "delivery"]
}
],
"used_for": "Domestic Usage",
"manufacturer": "Energy One",
"calibration_date": "2022-10-10T00:00:00.000Z",
"contract": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
},
"customer": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
}
}
]
}
updateMeterβ
Update Meter
PATCH /v1/metering/meter/{id}
const { data } = await client.updateMeter(
{
id: '123e4567-e89b-12d3-a456-426614174000',
},
{},
)
Response
{
"data": {
"_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "meter",
"ma_lo_id": "A09-123",
"status": "active",
"meter_type": "three-phase-meter",
"tariff_type": "Peak load tariff",
"meter_number": "J-1093-1AK",
"sector": "power",
"location": [
{
"country": "Germany",
"city": "Koln",
"postal_code": 81475,
"street": "MelatengΓΌrtel",
"street_number": 71,
"additional_info": "5. Etage",
"_tags": ["billing", "delivery"]
}
],
"used_for": "Domestic Usage",
"manufacturer": "Energy One",
"calibration_date": "2022-10-10T00:00:00.000Z",
"contract": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
},
"customer": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
}
}
}
getMeterβ
Get Meter
GET /v1/metering/meter/{id}
const { data } = await client.getMeter({
id: '123e4567-e89b-12d3-a456-426614174000',
})
Response
{
"data": {
"entity": {
"_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "meter",
"ma_lo_id": "A09-123",
"status": "active",
"meter_type": "three-phase-meter",
"tariff_type": "Peak load tariff",
"meter_number": "J-1093-1AK",
"sector": "power",
"location": [
{
"country": "Germany",
"city": "Koln",
"postal_code": 81475,
"street": "MelatengΓΌrtel",
"street_number": 71,
"additional_info": "5. Etage",
"_tags": ["billing", "delivery"]
}
],
"used_for": "Domestic Usage",
"manufacturer": "Energy One",
"calibration_date": "2022-10-10T00:00:00.000Z",
"contract": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
},
"customer": {
"$relation": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_slug": "contact"
}
]
}
},
"journey_actions": {
"journey_id": "string",
"action_label": {
"en": "string",
"de": "string"
},
"slug": "string",
"rules": [
{
"entity": "string",
"attribute": "string",
"attribute_value": "string"
}
]
},
"relations": [
{
"_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z"
}
]
}
}
getMeterCountersβ
Get Meter Counters
GET /v1/metering/counter
const { data } = await client.getMeterCounters({
meter_id: 'example',
})
Response
{
"data": [
{
"_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "meter_counter",
"obis_number": "A-34",
"direction": "feed-in",
"transformer_ratio": 70,
"unit": "string",
"forecast_reading_value": 270,
"forecast_as_of": "2022-12-10T00:00:00.000Z",
"current_consumption": 240,
"last_reading": "2022-10-10T00:00:00.000Z",
"conversion_factor": 3,
"tariff_type": "ht"
}
]
}
getCounterDetailsβ
Get Counter Details
GET /v1/metering/counter/{counter_id}
const { data } = await client.getCounterDetails({
counter_id: 'example',
})
Response
{
"data": {
"_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "meter_counter",
"obis_number": "A-34",
"direction": "feed-in",
"transformer_ratio": 70,
"unit": "string",
"forecast_reading_value": 270,
"forecast_as_of": "2022-12-10T00:00:00.000Z",
"current_consumption": 240,
"last_reading": "2022-10-10T00:00:00.000Z",
"conversion_factor": 3,
"tariff_type": "ht"
}
}
createMeterReadingβ
Create Meter Reading
POST /v1/metering/reading
const { data } = await client.createMeterReading(
null,
{
value: 240,
read_by: 'John Doe',
reason: '',
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
direction: 'feed-in',
timestamp: '2022-10-10T00:00:00.000Z',
source: 'ECP',
status: 'valid',
external_id: 'string',
remark: 'Customer reported unusual consumption',
metadata: {
registration_id: '1234567890',
business_unit: 'ABC'
},
note: 'string',
unit: 'string'
},
)
Response
{
"data": {
"value": 240,
"read_by": "John Doe",
"reason": "",
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
},
"note": "string",
"unit": "string"
}
}
createMeterReadingsβ
Create Meter Readings
POST /v1/metering/readings
const { data } = await client.createMeterReadings(
{
async: true,
activity_id: 'example',
skip_validation: true,
},
{
readings: [
{
value: 240,
read_by: 'John Doe',
reason: '',
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
direction: 'feed-in',
timestamp: '2022-10-10T00:00:00.000Z',
source: 'ECP',
status: 'valid',
external_id: 'string',
remark: 'Customer reported unusual consumption',
metadata: {
registration_id: '1234567890',
business_unit: 'ABC'
},
note: 'string',
unit: 'string'
}
]
},
)
Response
{
"data": [
{
"value": 240,
"read_by": "John Doe",
"reason": "",
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
},
"note": "string",
"unit": "string"
}
]
}
createPortalMeterReadingsβ
Inserts multiple meter readings at once for a given meter. Limited to 2 readings per request.
POST /v1/metering/readings/{meter_id}
const { data } = await client.createPortalMeterReadings(
{
meter_id: 'example',
},
{
readings: [
{
value: 240,
read_by: 'John Doe',
reason: '',
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
direction: 'feed-in',
timestamp: '2022-10-10T00:00:00.000Z',
source: 'ECP',
status: 'valid',
external_id: 'string',
remark: 'Customer reported unusual consumption',
metadata: {
registration_id: '1234567890',
business_unit: 'ABC'
},
note: 'string',
unit: 'string'
}
]
},
)
Response
{
"data": [
{
"value": 240,
"read_by": "John Doe",
"reason": "",
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
},
"note": "string",
"unit": "string"
}
]
}
batchWriteMeterReadingsβ
Batch Write Readings
POST /v2/metering/readings
const { data } = await client.batchWriteMeterReadings(
{
async: true,
skip_validation: true,
activity_id: 'example',
},
{
identifiers: ['string'],
readings: [
{
value: 240,
read_by: 'John Doe',
reason: '',
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
direction: 'feed-in',
timestamp: '2022-10-10T00:00:00.000Z',
source: 'ECP',
status: 'valid',
external_id: 'string',
remark: 'Customer reported unusual consumption',
metadata: {
registration_id: '1234567890',
business_unit: 'ABC'
},
note: 'string',
unit: 'string',
operation: 'create'
}
]
},
)
Response
{
"data": [
{
"value": 240,
"read_by": "John Doe",
"reason": "",
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
},
"note": "string",
"unit": "string"
}
]
}
createMeterReadingFromSubmissionβ
Create Meter Reading from Submission
POST /v1/metering/reading/submission
const { data } = await client.createMeterReadingFromSubmission(
null,
{
org_id: '123',
entity: {
_org: '123',
meterReadings: [
{
meterId: 'string',
readings: [
{
counterId: 'string',
direction: 'feed-in',
unit: 'string',
value: 240
}
],
readingValue: 240,
readingDate: '2022-10-10T10:10:00.000Z',
readBy: 'John Doe',
reason: '',
maloId: 'A09-123',
obisNumber: 'A-34',
readingUnit: 'string',
meterType: 'one_tariff',
feedInValue: 240,
feedOutValue: 240,
htValue: 240,
ntValue: 240
}
]
}
},
)
Response
{
"message": "Successfully Processed"
}
getAllowedReadingForMeterβ
Get allowed reading for the given meter
GET /v1/metering/allowed/reading/{meter_id}
const { data } = await client.getAllowedReadingForMeter({
meter_id: 'example',
timestamp: 'example',
})
Response
{
"data": [
{
"counter_id": "string",
"min_value": 0,
"max_value": 0
}
]
}
createReadingWithMeterβ
Create Reading with Meter
POST /v1/metering/reading/with-meter
const { data } = await client.createReadingWithMeter(
null,
{
ma_lo_id: 'A09-123',
meter_id: 'string',
obis_number: 'A-34',
unit: 'string',
direction: 'feed-in',
tariff_type: 'ht',
value: 240,
read_by: 'John Doe',
reason: '',
timestamp: '2022-10-10T10:10:00.000Z',
source: 'ECP'
},
)
Response
{
"data": {
"value": 240,
"read_by": "John Doe",
"reason": "",
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
},
"note": "string",
"unit": "string"
}
}
getReadingsByIntervalβ
Get Readings by Interval
GET /v1/metering/reading/{meter_id}/{counter_id}
const { data } = await client.getReadingsByInterval({
meter_id: 'example',
counter_id: 'example',
start_date: 'example',
end_date: 'example',
direction: 'example',
size: 1,
from: 1,
type: 'example',
sort: 'example',
})
Response
{
"results": [
{
"value": 240,
"read_by": "John Doe",
"reason": "",
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
},
"note": "string",
"unit": "string"
}
],
"hits": 120,
"firstRecordCreatedAt": "2022-10-01T20:00:00.000Z"
}
updateMeterReadingβ
Update Meter Reading
PUT /v1/metering/reading/{meter_id}/{counter_id}
const { data } = await client.updateMeterReading(
{
meter_id: 'example',
counter_id: 'example',
timestamp: 'example',
},
{
value: 240,
read_by: 'John Doe',
reason: 'string',
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
direction: 'feed-in',
timestamp: '2022-10-10T00:00:00.000Z',
source: 'ECP',
status: 'valid',
external_id: 'string',
remark: 'Customer reported unusual consumption',
metadata: {
registration_id: '1234567890',
business_unit: 'ABC'
}
},
)
Response
{
"data": {
"value": 240,
"read_by": "John Doe",
"reason": "",
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
},
"note": "string",
"unit": "string"
}
}
deleteMeterReadingβ
Delete Meter Reading
DELETE /v1/metering/reading/{meter_id}/{counter_id}
const { data } = await client.deleteMeterReading({
meter_id: 'example',
counter_id: 'example',
timestamp: 'example',
})
Response
{
"data": {
"meterId": "string",
"counterId": "string",
"timestamp": "2022-10-01T20:00:00.000Z"
}
}
Schemasβ
ErrorRespβ
type ErrorResp = {
message?: string
}
EntityIdβ
type EntityId = string // uuid
EntitySlugβ
URL-friendly identifier for the entity schema
type EntitySlug = string
BaseEntityβ
type BaseEntity = {
_id: string // uuid
_title: string
_org: string
_tags?: string[]
_created_at: string // date-time
_updated_at: string // date-time
}
Entityβ
type Entity = Record<string, unknown>
EntityItemβ
type EntityItem = {
_id: string // uuid
_title: string
_org: string
_tags?: string[]
_created_at: string // date-time
_updated_at: string // date-time
}
Idβ
type Id = string
EntityRelationβ
type EntityRelation = {
entity_id?: string // uuid
_slug?: "contact" | "contract"
}
Meterβ
type Meter = {
_id: string // uuid
_title: string
_org: string
_tags?: string[]
_created_at: string // date-time
_updated_at: string // date-time
_schema: "meter"
ma_lo_id?: string
status?: "active" | "decommissioned"
meter_type?: "three-phase-meter" | "bellow-gas-meter" | "rotary-piston-meter" | "smart-meter" | "performance-meter" | "maximum-meter" | "turbine-gas-meter" | "ultrasonic-gas-meter" | "alternating-current-meter" | "modern-metering-system" | "intelligent-measuring-system" | "electronic-meter"
tariff_type?: string
meter_number?: string
sector?: "power" | "water" | "gas" | "district_heating" | "waste_water"
location?: object
used_for?: string
manufacturer?: string
calibration_date?: string
contract?: {
$relation?: Array<{
entity_id?: { ... }
_slug?: { ... }
}>
}
customer?: {
$relation?: Array<{
entity_id?: { ... }
_slug?: { ... }
}>
}
}
Directionβ
type Direction = "feed-in" | "feed-out"
TariffTypeβ
type TariffType = "ht" | "nt"
Reasonβ
The reason for recording the reading If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
type Reason = "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
ReasonStringβ
This field is deprecated. Please use the Reason enum instead.
type ReasonString = string
ReadByβ
The person who recorded the reading
type ReadBy = string
ReadingStatusβ
type ReadingStatus = "valid" | "in-validation" | "implausible" | null | ""
Readingβ
type Reading = {
value: number
read_by?: string
reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
meter_id?: string // uuid
counter_id?: string // uuid
direction?: "feed-in" | "feed-out"
timestamp?: string // date-time
source: "ECP" | "ERP" | "360" | "journey-submission"
status?: "valid" | "in-validation" | "implausible" | null | ""
external_id?: string
remark?: string
metadata?: Record<string, string>
note?: string
unit?: string
}
MeterReadingβ
type MeterReading = {
value: number
read_by?: string
reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
meter_id: string // uuid
counter_id?: string // uuid
direction?: "feed-in" | "feed-out"
timestamp?: string // date-time
source: "ECP" | "ERP" | "360" | "journey-submission"
status?: "valid" | "in-validation" | "implausible" | null | ""
external_id?: string
remark?: string
metadata?: Record<string, string>
note?: string
unit?: string
}
PortalMeterReadingβ
type PortalMeterReading = {
value: number
read_by?: string
reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
meter_id?: string // uuid
counter_id: string // uuid
direction?: "feed-in" | "feed-out"
timestamp?: string // date-time
source: "ECP" | "ERP" | "360" | "journey-submission"
status?: "valid" | "in-validation" | "implausible" | null | ""
external_id?: string
remark?: string
metadata?: Record<string, string>
note?: string
unit?: string
}
UpdateMeterReadingβ
type UpdateMeterReading = {
value: number
read_by?: string
reason?: string
meter_id: string // uuid
counter_id?: string // uuid
direction?: "feed-in" | "feed-out"
timestamp?: string // date-time
source: "ECP" | "ERP" | "360" | "journey-submission"
status?: "valid" | "in-validation" | "implausible" | null | ""
external_id?: string
remark?: string
metadata?: Record<string, string>
}
MeterCounterβ
type MeterCounter = {
_id: string // uuid
_title: string
_org: string
_tags?: string[]
_created_at: string // date-time
_updated_at: string // date-time
_schema: "meter_counter"
obis_number?: string
direction?: "feed-in" | "feed-out"
transformer_ratio?: number
unit?: string
forecast_reading_value?: string
forecast_as_of?: string
current_consumption?: number
last_reading?: string
conversion_factor?: number
tariff_type?: "ht" | "nt"
}
CounterReadingOnSubmissionβ
type CounterReadingOnSubmission = {
counterId: string
direction: "feed-in" | "feed-out"
unit?: string
value: number
}
SubmissionMeterReadingβ
type SubmissionMeterReading = {
meterId: string
readings?: Array<{
counterId: string
direction: "feed-in" | "feed-out"
unit?: string
value: number
}>
readingValue?: number
readingDate?: string
readBy?: string
reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
maloId?: string
obisNumber?: string
readingUnit?: string
meterType?: "one_tariff" | "two_tariff" | "bi_directional"
feedInValue?: number
feedOutValue?: number
htValue?: number
ntValue?: number
}
Unitβ
type Unit = string
Sourceβ
type Source = "ECP" | "ERP" | "360" | "journey-submission"
ActionLabelβ
type ActionLabel = {
en?: string
de?: string
}
Ruleβ
type Rule = {
entity?: string
attribute?: string
attribute_value?: string
}
JourneyActionsβ
type JourneyActions = {
journey_id?: string
action_label?: {
en?: string
de?: string
}
slug?: string
rules?: Array<{
entity?: string
attribute?: string
attribute_value?: string
}>
}
ReadingWithMeterβ
type ReadingWithMeter = {
ma_lo_id?: string
meter_id?: string
obis_number?: string
unit?: string
direction?: "feed-in" | "feed-out"
tariff_type?: "ht" | "nt"
value?: number
read_by?: string
reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
timestamp?: string
source?: "ECP" | "ERP" | "360" | "journey-submission"
}
ActivityIdβ
See https://github.com/ulid/spec
type ActivityId = string // ulid