@epilot/sdk 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/event-catalog-runtime.json +1 -1
- package/definitions/event-catalog.json +256 -1
- package/definitions/integration-toolkit-runtime.json +1 -1
- package/definitions/integration-toolkit.json +480 -4
- package/definitions/metering-runtime.json +1 -1
- package/definitions/metering.json +728 -64
- package/definitions/webhooks.json +19 -4
- package/dist/apis/access-token.cjs +6 -6
- package/dist/apis/access-token.js +1 -1
- package/dist/apis/address-suggestions.cjs +6 -6
- package/dist/apis/address-suggestions.js +1 -1
- package/dist/apis/address.cjs +6 -6
- package/dist/apis/address.js +1 -1
- package/dist/apis/ai-agents.cjs +6 -6
- package/dist/apis/ai-agents.js +1 -1
- package/dist/apis/app.cjs +6 -6
- package/dist/apis/app.js +1 -1
- package/dist/apis/audit-logs.cjs +6 -6
- package/dist/apis/audit-logs.js +1 -1
- package/dist/apis/automation.cjs +6 -6
- package/dist/apis/automation.js +1 -1
- package/dist/apis/billing.cjs +6 -6
- package/dist/apis/billing.js +1 -1
- package/dist/apis/blueprint-manifest.cjs +6 -6
- package/dist/apis/blueprint-manifest.js +1 -1
- package/dist/apis/calendar.cjs +6 -6
- package/dist/apis/calendar.js +1 -1
- package/dist/apis/configuration-hub.cjs +6 -6
- package/dist/apis/configuration-hub.js +1 -1
- package/dist/apis/consent.cjs +6 -6
- package/dist/apis/consent.js +1 -1
- package/dist/apis/customer-portal.cjs +6 -6
- package/dist/apis/customer-portal.js +1 -1
- package/dist/apis/dashboard.cjs +6 -6
- package/dist/apis/dashboard.js +1 -1
- package/dist/apis/data-governance.cjs +6 -6
- package/dist/apis/data-governance.js +1 -1
- package/dist/apis/deduplication.cjs +6 -6
- package/dist/apis/deduplication.js +1 -1
- package/dist/apis/design.cjs +6 -6
- package/dist/apis/design.js +1 -1
- package/dist/apis/document.cjs +6 -6
- package/dist/apis/document.js +1 -1
- package/dist/apis/email-settings.cjs +6 -6
- package/dist/apis/email-settings.js +1 -1
- package/dist/apis/email-template.cjs +6 -6
- package/dist/apis/email-template.js +1 -1
- package/dist/apis/entity-mapping.cjs +6 -6
- package/dist/apis/entity-mapping.js +1 -1
- package/dist/apis/entity.cjs +6 -6
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.js +1 -1
- package/dist/apis/event-catalog.cjs +8 -8
- package/dist/apis/event-catalog.d.cts +2 -2
- package/dist/apis/event-catalog.d.ts +2 -2
- package/dist/apis/event-catalog.js +2 -2
- package/dist/apis/file.cjs +6 -6
- package/dist/apis/file.js +1 -1
- package/dist/apis/iban.cjs +6 -6
- package/dist/apis/iban.js +1 -1
- package/dist/apis/integration-toolkit.cjs +8 -8
- package/dist/apis/integration-toolkit.d.cts +2 -2
- package/dist/apis/integration-toolkit.d.ts +2 -2
- package/dist/apis/integration-toolkit.js +2 -2
- package/dist/apis/journey.cjs +6 -6
- package/dist/apis/journey.js +1 -1
- package/dist/apis/kanban.cjs +6 -6
- package/dist/apis/kanban.js +1 -1
- package/dist/apis/message.cjs +6 -6
- package/dist/apis/message.js +1 -1
- package/dist/apis/metering.cjs +8 -8
- package/dist/apis/metering.d.cts +2 -2
- package/dist/apis/metering.d.ts +2 -2
- package/dist/apis/metering.js +2 -2
- package/dist/apis/notes.cjs +6 -6
- package/dist/apis/notes.js +1 -1
- package/dist/apis/notification.cjs +6 -6
- package/dist/apis/notification.js +1 -1
- package/dist/apis/organization.cjs +6 -6
- package/dist/apis/organization.js +1 -1
- package/dist/apis/partner-directory.cjs +6 -6
- package/dist/apis/partner-directory.js +1 -1
- package/dist/apis/permissions.cjs +6 -6
- package/dist/apis/permissions.js +1 -1
- package/dist/apis/pricing-tier.cjs +6 -6
- package/dist/apis/pricing-tier.js +1 -1
- package/dist/apis/pricing.cjs +6 -6
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/query.cjs +6 -6
- package/dist/apis/query.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/sharing.cjs +6 -6
- package/dist/apis/sharing.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/target.cjs +6 -6
- package/dist/apis/target.js +1 -1
- package/dist/apis/targeting.cjs +6 -6
- package/dist/apis/targeting.js +1 -1
- package/dist/apis/template-variables.cjs +6 -6
- package/dist/apis/template-variables.js +1 -1
- package/dist/apis/user.cjs +6 -6
- package/dist/apis/user.js +1 -1
- package/dist/apis/validation-rules.cjs +6 -6
- package/dist/apis/validation-rules.js +1 -1
- package/dist/apis/webhooks.cjs +6 -6
- package/dist/apis/webhooks.d.cts +2 -2
- package/dist/apis/webhooks.d.ts +2 -2
- package/dist/apis/webhooks.js +1 -1
- package/dist/apis/workflow-definition.cjs +6 -6
- package/dist/apis/workflow-definition.js +1 -1
- package/dist/apis/workflow.cjs +6 -6
- package/dist/apis/workflow.js +1 -1
- package/dist/{chunk-C7GDYBXX.cjs → chunk-35CN2YFK.cjs} +7 -7
- package/dist/{chunk-JTFWOEZF.cjs → chunk-4FFGRWLS.cjs} +1 -1
- package/dist/chunk-56MMZJOD.js +14 -0
- package/dist/{chunk-BLNXQAMX.cjs → chunk-CBDKPGO5.cjs} +1 -1
- package/dist/{chunk-WRD2XFHY.js → chunk-JB7LITSP.js} +7 -7
- package/dist/{chunk-TME4YJNP.js → chunk-OCMIXJWC.js} +1 -1
- package/dist/chunk-T6A22LSD.cjs +14 -0
- package/dist/chunk-WM74R3BD.js +14 -0
- package/dist/event-catalog-37B6JC7G.js +7 -0
- package/dist/event-catalog-5JBHJJ2I.cjs +7 -0
- package/dist/{event-catalog-runtime-5HQSAJVX.cjs → event-catalog-runtime-B2BPKQVG.cjs} +2 -2
- package/dist/{event-catalog-runtime-6FA3SCRI.js → event-catalog-runtime-N262TQ3Y.js} +1 -1
- package/dist/{event-catalog.d-ENw6HO-w.d.cts → event-catalog.d-mQJLSYUo.d.cts} +351 -6
- package/dist/{event-catalog.d-ENw6HO-w.d.ts → event-catalog.d-mQJLSYUo.d.ts} +351 -6
- package/dist/index.cjs +14 -14
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/integration-toolkit-3I3IPVFN.cjs +7 -0
- package/dist/integration-toolkit-XAFQXNQY.js +7 -0
- package/dist/{integration-toolkit-runtime-5KG3LGXF.cjs → integration-toolkit-runtime-YHTU4X5J.cjs} +2 -2
- package/dist/{integration-toolkit-runtime-LYHFVIRW.js → integration-toolkit-runtime-YR4CIMKH.js} +1 -1
- package/dist/{integration-toolkit.d-Ry-KC9ow.d.cts → integration-toolkit.d-BstNqiJb.d.cts} +460 -20
- package/dist/{integration-toolkit.d-Ry-KC9ow.d.ts → integration-toolkit.d-BstNqiJb.d.ts} +460 -20
- package/dist/metering-3IUSYAGN.js +7 -0
- package/dist/metering-MHBFU7QH.cjs +7 -0
- package/dist/{metering-runtime-HAIWXZXJ.cjs → metering-runtime-IUZJHBVS.cjs} +2 -2
- package/dist/{metering-runtime-NJ6NEUMB.js → metering-runtime-KZMJKKUZ.js} +1 -1
- package/dist/{metering.d-DvtPv7wk.d.ts → metering.d-CUICZDiL.d.cts} +718 -130
- package/dist/{metering.d-DvtPv7wk.d.cts → metering.d-CUICZDiL.d.ts} +718 -130
- package/dist/{webhooks-XLBUXXCS.js → webhooks-NZHJBT64.js} +1 -1
- package/dist/{webhooks-NZ3TM3AY.cjs → webhooks-SK2STDKR.cjs} +1 -1
- package/dist/{webhooks.d-D79qib9f.d.cts → webhooks.d-ByePoUWs.d.cts} +40 -4
- package/dist/{webhooks.d-D79qib9f.d.ts → webhooks.d-ByePoUWs.d.ts} +40 -4
- package/docs/event-catalog.md +247 -1
- package/docs/integration-toolkit.md +334 -19
- package/docs/metering.md +570 -48
- package/docs/webhooks.md +3 -1
- package/package.json +1 -1
- package/dist/chunk-265TE2OV.js +0 -14
- package/dist/chunk-4ZMLRFDX.cjs +0 -14
- package/dist/chunk-U4PUHKZC.js +0 -14
- package/dist/event-catalog-C45ISVMP.cjs +0 -7
- package/dist/event-catalog-D7VJ7WRS.js +0 -7
- package/dist/integration-toolkit-FRPFOYT2.js +0 -7
- package/dist/integration-toolkit-VNMDI55O.cjs +0 -7
- package/dist/metering-DZNZPPY6.cjs +0 -7
- package/dist/metering-KOSCPPKB.js +0 -7
package/docs/metering.md
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# Metering API
|
|
2
2
|
|
|
3
|
-
- **Base URL:** `https://metering.sls.epilot.io`
|
|
4
3
|
- **Full API Docs:** [https://docs.epilot.io/api/metering](https://docs.epilot.io/api/metering)
|
|
5
4
|
|
|
6
5
|
## Usage
|
|
@@ -44,6 +43,12 @@ const { data } = await meteringClient.getCustomerMeters(...)
|
|
|
44
43
|
- [`updateMeterReading`](#updatemeterreading)
|
|
45
44
|
- [`deleteMeterReading`](#deletemeterreading)
|
|
46
45
|
|
|
46
|
+
**Metering**
|
|
47
|
+
- [`getReadingChangesets`](#getreadingchangesets)
|
|
48
|
+
- [`applyReadingChangeset`](#applyreadingchangeset)
|
|
49
|
+
- [`dismissReadingChangeset`](#dismissreadingchangeset)
|
|
50
|
+
- [`updateReadingChangeset`](#updatereadingchangeset)
|
|
51
|
+
|
|
47
52
|
**Schemas**
|
|
48
53
|
- [`ErrorResp`](#errorresp)
|
|
49
54
|
- [`EntityId`](#entityid)
|
|
@@ -63,6 +68,10 @@ const { data } = await meteringClient.getCustomerMeters(...)
|
|
|
63
68
|
- [`Reading`](#reading)
|
|
64
69
|
- [`MeterReading`](#meterreading)
|
|
65
70
|
- [`PortalMeterReading`](#portalmeterreading)
|
|
71
|
+
- [`BatchReadingBase`](#batchreadingbase)
|
|
72
|
+
- [`CreateOrUpdateBatchReading`](#createorupdatebatchreading)
|
|
73
|
+
- [`DeleteBatchReading`](#deletebatchreading)
|
|
74
|
+
- [`BatchReading`](#batchreading)
|
|
66
75
|
- [`UpdateMeterReading`](#updatemeterreading)
|
|
67
76
|
- [`MeterCounter`](#metercounter)
|
|
68
77
|
- [`CounterReadingOnSubmission`](#counterreadingonsubmission)
|
|
@@ -73,16 +82,23 @@ const { data } = await meteringClient.getCustomerMeters(...)
|
|
|
73
82
|
- [`Rule`](#rule)
|
|
74
83
|
- [`JourneyActions`](#journeyactions)
|
|
75
84
|
- [`ReadingWithMeter`](#readingwithmeter)
|
|
85
|
+
- [`MeterReadingChangeset`](#meterreadingchangeset)
|
|
86
|
+
- [`FuzzyConfig`](#fuzzyconfig)
|
|
87
|
+
- [`ProposedReading`](#proposedreading)
|
|
88
|
+
- [`ChangesetCreator`](#changesetcreator)
|
|
89
|
+
- [`TimestampTolerance`](#timestamptolerance)
|
|
76
90
|
- [`ActivityId`](#activityid)
|
|
77
91
|
|
|
78
92
|
### `getCustomerMeters`
|
|
79
93
|
|
|
80
|
-
|
|
94
|
+
Retrieves all meters associated with the authenticated portal customer.
|
|
81
95
|
|
|
82
96
|
`GET /v1/metering/meter`
|
|
83
97
|
|
|
84
98
|
```ts
|
|
85
|
-
const { data } = await client.getCustomerMeters(
|
|
99
|
+
const { data } = await client.getCustomerMeters({
|
|
100
|
+
include_pending_changesets: true,
|
|
101
|
+
})
|
|
86
102
|
```
|
|
87
103
|
|
|
88
104
|
<details>
|
|
@@ -118,7 +134,7 @@ const { data } = await client.getCustomerMeters()
|
|
|
118
134
|
],
|
|
119
135
|
"used_for": "Domestic Usage",
|
|
120
136
|
"manufacturer": "Energy One",
|
|
121
|
-
"calibration_date": "2022-10-
|
|
137
|
+
"calibration_date": "2022-10-10",
|
|
122
138
|
"contract": {
|
|
123
139
|
"$relation": [
|
|
124
140
|
{
|
|
@@ -150,7 +166,7 @@ const { data } = await client.getCustomerMeters()
|
|
|
150
166
|
}
|
|
151
167
|
]
|
|
152
168
|
},
|
|
153
|
-
"last_reading": "2022-10-
|
|
169
|
+
"last_reading": "2022-10-10",
|
|
154
170
|
"current_consumption": 100.5
|
|
155
171
|
}
|
|
156
172
|
]
|
|
@@ -163,7 +179,7 @@ const { data } = await client.getCustomerMeters()
|
|
|
163
179
|
|
|
164
180
|
### `getMetersByContractId`
|
|
165
181
|
|
|
166
|
-
Retrieves all meters
|
|
182
|
+
Retrieves all meters associated with a given contract entity.
|
|
167
183
|
|
|
168
184
|
`GET /v1/metering/contract/meters/{contract_id}`
|
|
169
185
|
|
|
@@ -206,7 +222,7 @@ const { data } = await client.getMetersByContractId({
|
|
|
206
222
|
],
|
|
207
223
|
"used_for": "Domestic Usage",
|
|
208
224
|
"manufacturer": "Energy One",
|
|
209
|
-
"calibration_date": "2022-10-
|
|
225
|
+
"calibration_date": "2022-10-10",
|
|
210
226
|
"contract": {
|
|
211
227
|
"$relation": [
|
|
212
228
|
{
|
|
@@ -234,7 +250,7 @@ const { data } = await client.getMetersByContractId({
|
|
|
234
250
|
|
|
235
251
|
### `updateMeter`
|
|
236
252
|
|
|
237
|
-
|
|
253
|
+
Partially updates the details of a meter entity by ID.
|
|
238
254
|
|
|
239
255
|
`PATCH /v1/metering/meter/{id}`
|
|
240
256
|
|
|
@@ -279,7 +295,7 @@ const { data } = await client.updateMeter(
|
|
|
279
295
|
],
|
|
280
296
|
"used_for": "Domestic Usage",
|
|
281
297
|
"manufacturer": "Energy One",
|
|
282
|
-
"calibration_date": "2022-10-
|
|
298
|
+
"calibration_date": "2022-10-10",
|
|
283
299
|
"contract": {
|
|
284
300
|
"$relation": [
|
|
285
301
|
{
|
|
@@ -306,7 +322,7 @@ const { data } = await client.updateMeter(
|
|
|
306
322
|
|
|
307
323
|
### `getMeter`
|
|
308
324
|
|
|
309
|
-
|
|
325
|
+
Retrieves the full details of a specific meter by ID, including related entities and available journey actions.
|
|
310
326
|
|
|
311
327
|
`GET /v1/metering/meter/{id}`
|
|
312
328
|
|
|
@@ -349,7 +365,7 @@ const { data } = await client.getMeter({
|
|
|
349
365
|
],
|
|
350
366
|
"used_for": "Domestic Usage",
|
|
351
367
|
"manufacturer": "Energy One",
|
|
352
|
-
"calibration_date": "2022-10-
|
|
368
|
+
"calibration_date": "2022-10-10",
|
|
353
369
|
"contract": {
|
|
354
370
|
"$relation": [
|
|
355
371
|
{
|
|
@@ -402,7 +418,7 @@ const { data } = await client.getMeter({
|
|
|
402
418
|
|
|
403
419
|
### `getMeterCounters`
|
|
404
420
|
|
|
405
|
-
|
|
421
|
+
Retrieves all meter counters associated with a given meter.
|
|
406
422
|
|
|
407
423
|
`GET /v1/metering/counter`
|
|
408
424
|
|
|
@@ -431,9 +447,9 @@ const { data } = await client.getMeterCounters({
|
|
|
431
447
|
"transformer_ratio": 70,
|
|
432
448
|
"unit": "string",
|
|
433
449
|
"forecast_reading_value": 270,
|
|
434
|
-
"forecast_as_of": "2022-12-
|
|
450
|
+
"forecast_as_of": "2022-12-10",
|
|
435
451
|
"current_consumption": 240,
|
|
436
|
-
"last_reading": "2022-10-
|
|
452
|
+
"last_reading": "2022-10-10",
|
|
437
453
|
"conversion_factor": 3,
|
|
438
454
|
"tariff_type": "ht"
|
|
439
455
|
}
|
|
@@ -447,7 +463,7 @@ const { data } = await client.getMeterCounters({
|
|
|
447
463
|
|
|
448
464
|
### `getCounterDetails`
|
|
449
465
|
|
|
450
|
-
|
|
466
|
+
Retrieves the full details of a single meter counter by its ID.
|
|
451
467
|
|
|
452
468
|
`GET /v1/metering/counter/{counter_id}`
|
|
453
469
|
|
|
@@ -475,9 +491,9 @@ const { data } = await client.getCounterDetails({
|
|
|
475
491
|
"transformer_ratio": 70,
|
|
476
492
|
"unit": "string",
|
|
477
493
|
"forecast_reading_value": 270,
|
|
478
|
-
"forecast_as_of": "2022-12-
|
|
494
|
+
"forecast_as_of": "2022-12-10",
|
|
479
495
|
"current_consumption": 240,
|
|
480
|
-
"last_reading": "2022-10-
|
|
496
|
+
"last_reading": "2022-10-10",
|
|
481
497
|
"conversion_factor": 3,
|
|
482
498
|
"tariff_type": "ht"
|
|
483
499
|
}
|
|
@@ -490,13 +506,15 @@ const { data } = await client.getCounterDetails({
|
|
|
490
506
|
|
|
491
507
|
### `createMeterReading`
|
|
492
508
|
|
|
493
|
-
|
|
509
|
+
Inserts a new meter reading.
|
|
494
510
|
|
|
495
511
|
`POST /v1/metering/reading`
|
|
496
512
|
|
|
497
513
|
```ts
|
|
498
514
|
const { data } = await client.createMeterReading(
|
|
499
|
-
|
|
515
|
+
{
|
|
516
|
+
direct: true,
|
|
517
|
+
},
|
|
500
518
|
{
|
|
501
519
|
value: 240,
|
|
502
520
|
read_by: 'John Doe',
|
|
@@ -504,7 +522,7 @@ const { data } = await client.createMeterReading(
|
|
|
504
522
|
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
505
523
|
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
506
524
|
direction: 'feed-in',
|
|
507
|
-
timestamp: '2022-10-
|
|
525
|
+
timestamp: '2022-10-10',
|
|
508
526
|
source: 'ECP',
|
|
509
527
|
status: 'valid',
|
|
510
528
|
external_id: 'string',
|
|
@@ -531,7 +549,7 @@ const { data } = await client.createMeterReading(
|
|
|
531
549
|
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
532
550
|
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
533
551
|
"direction": "feed-in",
|
|
534
|
-
"timestamp": "2022-10-
|
|
552
|
+
"timestamp": "2022-10-10",
|
|
535
553
|
"source": "ECP",
|
|
536
554
|
"status": "valid",
|
|
537
555
|
"external_id": "string",
|
|
@@ -552,7 +570,7 @@ const { data } = await client.createMeterReading(
|
|
|
552
570
|
|
|
553
571
|
### `createMeterReadings`
|
|
554
572
|
|
|
555
|
-
|
|
573
|
+
Inserts multiple meter readings at once. Limited to 100 readings per request.
|
|
556
574
|
|
|
557
575
|
`POST /v1/metering/readings`
|
|
558
576
|
|
|
@@ -562,6 +580,7 @@ const { data } = await client.createMeterReadings(
|
|
|
562
580
|
async: true,
|
|
563
581
|
activity_id: 'example',
|
|
564
582
|
skip_validation: true,
|
|
583
|
+
direct: true,
|
|
565
584
|
},
|
|
566
585
|
{
|
|
567
586
|
readings: [
|
|
@@ -572,7 +591,7 @@ const { data } = await client.createMeterReadings(
|
|
|
572
591
|
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
573
592
|
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
574
593
|
direction: 'feed-in',
|
|
575
|
-
timestamp: '2022-10-
|
|
594
|
+
timestamp: '2022-10-10',
|
|
576
595
|
source: 'ECP',
|
|
577
596
|
status: 'valid',
|
|
578
597
|
external_id: 'string',
|
|
@@ -602,7 +621,7 @@ const { data } = await client.createMeterReadings(
|
|
|
602
621
|
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
603
622
|
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
604
623
|
"direction": "feed-in",
|
|
605
|
-
"timestamp": "2022-10-
|
|
624
|
+
"timestamp": "2022-10-10",
|
|
606
625
|
"source": "ECP",
|
|
607
626
|
"status": "valid",
|
|
608
627
|
"external_id": "string",
|
|
@@ -624,7 +643,8 @@ const { data } = await client.createMeterReadings(
|
|
|
624
643
|
|
|
625
644
|
### `createPortalMeterReadings`
|
|
626
645
|
|
|
627
|
-
Inserts multiple meter readings at once for a given meter
|
|
646
|
+
Inserts multiple meter readings at once for a given meter via the end customer portal.
|
|
647
|
+
Limited to 100 readings per request.
|
|
628
648
|
|
|
629
649
|
`POST /v1/metering/readings/{meter_id}`
|
|
630
650
|
|
|
@@ -632,6 +652,7 @@ Inserts multiple meter readings at once for a given meter. Limited to 2 readings
|
|
|
632
652
|
const { data } = await client.createPortalMeterReadings(
|
|
633
653
|
{
|
|
634
654
|
meter_id: 'example',
|
|
655
|
+
direct: true,
|
|
635
656
|
},
|
|
636
657
|
{
|
|
637
658
|
readings: [
|
|
@@ -642,7 +663,7 @@ const { data } = await client.createPortalMeterReadings(
|
|
|
642
663
|
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
643
664
|
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
644
665
|
direction: 'feed-in',
|
|
645
|
-
timestamp: '2022-10-
|
|
666
|
+
timestamp: '2022-10-10',
|
|
646
667
|
source: 'ECP',
|
|
647
668
|
status: 'valid',
|
|
648
669
|
external_id: 'string',
|
|
@@ -672,7 +693,7 @@ const { data } = await client.createPortalMeterReadings(
|
|
|
672
693
|
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
673
694
|
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
674
695
|
"direction": "feed-in",
|
|
675
|
-
"timestamp": "2022-10-
|
|
696
|
+
"timestamp": "2022-10-10",
|
|
676
697
|
"source": "ECP",
|
|
677
698
|
"status": "valid",
|
|
678
699
|
"external_id": "string",
|
|
@@ -694,7 +715,7 @@ const { data } = await client.createPortalMeterReadings(
|
|
|
694
715
|
|
|
695
716
|
### `batchWriteMeterReadings`
|
|
696
717
|
|
|
697
|
-
|
|
718
|
+
Upserts or deletes multiple meter readings at once. Limited to 100 readings per request.
|
|
698
719
|
|
|
699
720
|
`POST /v2/metering/readings`
|
|
700
721
|
|
|
@@ -704,29 +725,30 @@ const { data } = await client.batchWriteMeterReadings(
|
|
|
704
725
|
async: true,
|
|
705
726
|
skip_validation: true,
|
|
706
727
|
activity_id: 'example',
|
|
728
|
+
direct: true,
|
|
707
729
|
},
|
|
708
730
|
{
|
|
709
731
|
identifiers: ['string'],
|
|
710
732
|
readings: [
|
|
711
733
|
{
|
|
712
|
-
value: 240,
|
|
713
|
-
read_by: 'John Doe',
|
|
714
|
-
reason: '',
|
|
715
734
|
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
716
735
|
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
717
736
|
direction: 'feed-in',
|
|
718
|
-
timestamp: '2022-10-
|
|
719
|
-
source: 'ECP',
|
|
720
|
-
status: 'valid',
|
|
737
|
+
timestamp: '2022-10-10T10:00:00Z',
|
|
721
738
|
external_id: 'string',
|
|
722
|
-
remark: 'Customer reported unusual consumption',
|
|
723
739
|
metadata: {
|
|
724
740
|
registration_id: '1234567890',
|
|
725
741
|
business_unit: 'ABC'
|
|
726
742
|
},
|
|
743
|
+
operation: 'create',
|
|
744
|
+
value: 240,
|
|
745
|
+
source: 'ECP',
|
|
746
|
+
read_by: 'John Doe',
|
|
747
|
+
reason: '',
|
|
748
|
+
status: 'valid',
|
|
749
|
+
remark: 'Customer reported unusual consumption',
|
|
727
750
|
note: 'string',
|
|
728
|
-
unit: 'string'
|
|
729
|
-
operation: 'create'
|
|
751
|
+
unit: 'string'
|
|
730
752
|
}
|
|
731
753
|
]
|
|
732
754
|
},
|
|
@@ -746,7 +768,7 @@ const { data } = await client.batchWriteMeterReadings(
|
|
|
746
768
|
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
747
769
|
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
748
770
|
"direction": "feed-in",
|
|
749
|
-
"timestamp": "2022-10-
|
|
771
|
+
"timestamp": "2022-10-10",
|
|
750
772
|
"source": "ECP",
|
|
751
773
|
"status": "valid",
|
|
752
774
|
"external_id": "string",
|
|
@@ -768,7 +790,7 @@ const { data } = await client.batchWriteMeterReadings(
|
|
|
768
790
|
|
|
769
791
|
### `createMeterReadingFromSubmission`
|
|
770
792
|
|
|
771
|
-
|
|
793
|
+
Creates meter readings from a journey submission payload.
|
|
772
794
|
|
|
773
795
|
`POST /v1/metering/reading/submission`
|
|
774
796
|
|
|
@@ -824,7 +846,7 @@ const { data } = await client.createMeterReadingFromSubmission(
|
|
|
824
846
|
|
|
825
847
|
### `getAllowedReadingForMeter`
|
|
826
848
|
|
|
827
|
-
|
|
849
|
+
Returns the allowed min/max reading range for each counter of the given meter.
|
|
828
850
|
|
|
829
851
|
`GET /v1/metering/allowed/reading/{meter_id}`
|
|
830
852
|
|
|
@@ -856,7 +878,7 @@ const { data } = await client.getAllowedReadingForMeter({
|
|
|
856
878
|
|
|
857
879
|
### `createReadingWithMeter`
|
|
858
880
|
|
|
859
|
-
|
|
881
|
+
Creates a meter reading along with meter lookup or creation by MA-LO ID and OBIS number.
|
|
860
882
|
|
|
861
883
|
`POST /v1/metering/reading/with-meter`
|
|
862
884
|
|
|
@@ -891,7 +913,7 @@ const { data } = await client.createReadingWithMeter(
|
|
|
891
913
|
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
892
914
|
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
893
915
|
"direction": "feed-in",
|
|
894
|
-
"timestamp": "2022-10-
|
|
916
|
+
"timestamp": "2022-10-10",
|
|
895
917
|
"source": "ECP",
|
|
896
918
|
"status": "valid",
|
|
897
919
|
"external_id": "string",
|
|
@@ -912,7 +934,9 @@ const { data } = await client.createReadingWithMeter(
|
|
|
912
934
|
|
|
913
935
|
### `getReadingsByInterval`
|
|
914
936
|
|
|
915
|
-
|
|
937
|
+
Retrieves all readings specified in an interval.
|
|
938
|
+
If the start_date and end_date are equal, then it returns the readings of the specified date.
|
|
939
|
+
The start_date should be less than or equal to the end_da
|
|
916
940
|
|
|
917
941
|
`GET /v1/metering/reading/{meter_id}/{counter_id}`
|
|
918
942
|
|
|
@@ -927,6 +951,7 @@ const { data } = await client.getReadingsByInterval({
|
|
|
927
951
|
from: 1,
|
|
928
952
|
type: 'example',
|
|
929
953
|
sort: 'example',
|
|
954
|
+
include_pending_changesets: true,
|
|
930
955
|
})
|
|
931
956
|
```
|
|
932
957
|
|
|
@@ -943,7 +968,7 @@ const { data } = await client.getReadingsByInterval({
|
|
|
943
968
|
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
944
969
|
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
945
970
|
"direction": "feed-in",
|
|
946
|
-
"timestamp": "2022-10-
|
|
971
|
+
"timestamp": "2022-10-10",
|
|
947
972
|
"source": "ECP",
|
|
948
973
|
"status": "valid",
|
|
949
974
|
"external_id": "string",
|
|
@@ -967,7 +992,7 @@ const { data } = await client.getReadingsByInterval({
|
|
|
967
992
|
|
|
968
993
|
### `updateMeterReading`
|
|
969
994
|
|
|
970
|
-
|
|
995
|
+
Updates an existing meter reading identified by meter ID, counter ID, and timestamp.
|
|
971
996
|
|
|
972
997
|
`PUT /v1/metering/reading/{meter_id}/{counter_id}`
|
|
973
998
|
|
|
@@ -985,7 +1010,7 @@ const { data } = await client.updateMeterReading(
|
|
|
985
1010
|
meter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
986
1011
|
counter_id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
987
1012
|
direction: 'feed-in',
|
|
988
|
-
timestamp: '2022-10-
|
|
1013
|
+
timestamp: '2022-10-10',
|
|
989
1014
|
source: 'ECP',
|
|
990
1015
|
status: 'valid',
|
|
991
1016
|
external_id: 'string',
|
|
@@ -1010,7 +1035,7 @@ const { data } = await client.updateMeterReading(
|
|
|
1010
1035
|
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1011
1036
|
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1012
1037
|
"direction": "feed-in",
|
|
1013
|
-
"timestamp": "2022-10-
|
|
1038
|
+
"timestamp": "2022-10-10",
|
|
1014
1039
|
"source": "ECP",
|
|
1015
1040
|
"status": "valid",
|
|
1016
1041
|
"external_id": "string",
|
|
@@ -1031,7 +1056,7 @@ const { data } = await client.updateMeterReading(
|
|
|
1031
1056
|
|
|
1032
1057
|
### `deleteMeterReading`
|
|
1033
1058
|
|
|
1034
|
-
|
|
1059
|
+
Permanently deletes a meter reading identified by meter ID, counter ID, and timestamp.
|
|
1035
1060
|
|
|
1036
1061
|
`DELETE /v1/metering/reading/{meter_id}/{counter_id}`
|
|
1037
1062
|
|
|
@@ -1060,6 +1085,305 @@ const { data } = await client.deleteMeterReading({
|
|
|
1060
1085
|
|
|
1061
1086
|
---
|
|
1062
1087
|
|
|
1088
|
+
### `getReadingChangesets`
|
|
1089
|
+
|
|
1090
|
+
List pending reading changesets for a counter
|
|
1091
|
+
|
|
1092
|
+
`GET /v1/metering/reading/{meter_id}/{counter_id}/changesets`
|
|
1093
|
+
|
|
1094
|
+
```ts
|
|
1095
|
+
const { data } = await client.getReadingChangesets({
|
|
1096
|
+
meter_id: 'example',
|
|
1097
|
+
counter_id: 'example',
|
|
1098
|
+
})
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
<details>
|
|
1102
|
+
<summary>Response</summary>
|
|
1103
|
+
|
|
1104
|
+
```json
|
|
1105
|
+
{
|
|
1106
|
+
"changesets": [
|
|
1107
|
+
{
|
|
1108
|
+
"changeset_id": "string",
|
|
1109
|
+
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1110
|
+
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1111
|
+
"proposed": {
|
|
1112
|
+
"value": 0,
|
|
1113
|
+
"direction": "feed-in",
|
|
1114
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1115
|
+
"reason": "string",
|
|
1116
|
+
"remark": "string",
|
|
1117
|
+
"read_by": "string",
|
|
1118
|
+
"status": "valid",
|
|
1119
|
+
"external_id": "string"
|
|
1120
|
+
},
|
|
1121
|
+
"previous": {
|
|
1122
|
+
"value": 0,
|
|
1123
|
+
"direction": "feed-in",
|
|
1124
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1125
|
+
"reason": "string",
|
|
1126
|
+
"remark": "string",
|
|
1127
|
+
"read_by": "string",
|
|
1128
|
+
"status": "valid",
|
|
1129
|
+
"external_id": "string"
|
|
1130
|
+
},
|
|
1131
|
+
"edit_mode": "external",
|
|
1132
|
+
"match_strategy": "exact",
|
|
1133
|
+
"timestamp_tolerance": "exact",
|
|
1134
|
+
"created_at": "1970-01-01T00:00:00.000Z",
|
|
1135
|
+
"created_by": {
|
|
1136
|
+
"type": "user",
|
|
1137
|
+
"id": "string"
|
|
1138
|
+
},
|
|
1139
|
+
"source": "360",
|
|
1140
|
+
"fuzzy_config": {
|
|
1141
|
+
"percentage_threshold": 0.01,
|
|
1142
|
+
"absolute_threshold": 0
|
|
1143
|
+
},
|
|
1144
|
+
"dismissed_reason": "string",
|
|
1145
|
+
"dismissed_at": "1970-01-01T00:00:00.000Z"
|
|
1146
|
+
}
|
|
1147
|
+
]
|
|
1148
|
+
}
|
|
1149
|
+
```
|
|
1150
|
+
|
|
1151
|
+
</details>
|
|
1152
|
+
|
|
1153
|
+
---
|
|
1154
|
+
|
|
1155
|
+
### `applyReadingChangeset`
|
|
1156
|
+
|
|
1157
|
+
Apply (approve) a pending reading changeset
|
|
1158
|
+
|
|
1159
|
+
`POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:apply`
|
|
1160
|
+
|
|
1161
|
+
```ts
|
|
1162
|
+
const { data } = await client.applyReadingChangeset({
|
|
1163
|
+
meter_id: 'example',
|
|
1164
|
+
counter_id: 'example',
|
|
1165
|
+
changeset_id: 'example',
|
|
1166
|
+
})
|
|
1167
|
+
```
|
|
1168
|
+
|
|
1169
|
+
<details>
|
|
1170
|
+
<summary>Response</summary>
|
|
1171
|
+
|
|
1172
|
+
```json
|
|
1173
|
+
{
|
|
1174
|
+
"reading": {
|
|
1175
|
+
"value": 240,
|
|
1176
|
+
"read_by": "John Doe",
|
|
1177
|
+
"reason": "",
|
|
1178
|
+
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1179
|
+
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1180
|
+
"direction": "feed-in",
|
|
1181
|
+
"timestamp": "2022-10-10",
|
|
1182
|
+
"source": "ECP",
|
|
1183
|
+
"status": "valid",
|
|
1184
|
+
"external_id": "string",
|
|
1185
|
+
"remark": "Customer reported unusual consumption",
|
|
1186
|
+
"metadata": {
|
|
1187
|
+
"registration_id": "1234567890",
|
|
1188
|
+
"business_unit": "ABC"
|
|
1189
|
+
},
|
|
1190
|
+
"note": "string",
|
|
1191
|
+
"unit": "string"
|
|
1192
|
+
},
|
|
1193
|
+
"changeset": {
|
|
1194
|
+
"changeset_id": "string",
|
|
1195
|
+
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1196
|
+
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1197
|
+
"proposed": {
|
|
1198
|
+
"value": 0,
|
|
1199
|
+
"direction": "feed-in",
|
|
1200
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1201
|
+
"reason": "string",
|
|
1202
|
+
"remark": "string",
|
|
1203
|
+
"read_by": "string",
|
|
1204
|
+
"status": "valid",
|
|
1205
|
+
"external_id": "string"
|
|
1206
|
+
},
|
|
1207
|
+
"previous": {
|
|
1208
|
+
"value": 0,
|
|
1209
|
+
"direction": "feed-in",
|
|
1210
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1211
|
+
"reason": "string",
|
|
1212
|
+
"remark": "string",
|
|
1213
|
+
"read_by": "string",
|
|
1214
|
+
"status": "valid",
|
|
1215
|
+
"external_id": "string"
|
|
1216
|
+
},
|
|
1217
|
+
"edit_mode": "external",
|
|
1218
|
+
"match_strategy": "exact",
|
|
1219
|
+
"timestamp_tolerance": "exact",
|
|
1220
|
+
"created_at": "1970-01-01T00:00:00.000Z",
|
|
1221
|
+
"created_by": {
|
|
1222
|
+
"type": "user",
|
|
1223
|
+
"id": "string"
|
|
1224
|
+
},
|
|
1225
|
+
"source": "360",
|
|
1226
|
+
"fuzzy_config": {
|
|
1227
|
+
"percentage_threshold": 0.01,
|
|
1228
|
+
"absolute_threshold": 0
|
|
1229
|
+
},
|
|
1230
|
+
"dismissed_reason": "string",
|
|
1231
|
+
"dismissed_at": "1970-01-01T00:00:00.000Z"
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
```
|
|
1235
|
+
|
|
1236
|
+
</details>
|
|
1237
|
+
|
|
1238
|
+
---
|
|
1239
|
+
|
|
1240
|
+
### `dismissReadingChangeset`
|
|
1241
|
+
|
|
1242
|
+
Dismiss (reject) a pending reading changeset
|
|
1243
|
+
|
|
1244
|
+
`POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:dismiss`
|
|
1245
|
+
|
|
1246
|
+
```ts
|
|
1247
|
+
const { data } = await client.dismissReadingChangeset(
|
|
1248
|
+
{
|
|
1249
|
+
meter_id: 'example',
|
|
1250
|
+
counter_id: 'example',
|
|
1251
|
+
changeset_id: 'example',
|
|
1252
|
+
},
|
|
1253
|
+
{
|
|
1254
|
+
reason: 'string'
|
|
1255
|
+
},
|
|
1256
|
+
)
|
|
1257
|
+
```
|
|
1258
|
+
|
|
1259
|
+
<details>
|
|
1260
|
+
<summary>Response</summary>
|
|
1261
|
+
|
|
1262
|
+
```json
|
|
1263
|
+
{
|
|
1264
|
+
"changeset_id": "string",
|
|
1265
|
+
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1266
|
+
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1267
|
+
"proposed": {
|
|
1268
|
+
"value": 0,
|
|
1269
|
+
"direction": "feed-in",
|
|
1270
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1271
|
+
"reason": "string",
|
|
1272
|
+
"remark": "string",
|
|
1273
|
+
"read_by": "string",
|
|
1274
|
+
"status": "valid",
|
|
1275
|
+
"external_id": "string"
|
|
1276
|
+
},
|
|
1277
|
+
"previous": {
|
|
1278
|
+
"value": 0,
|
|
1279
|
+
"direction": "feed-in",
|
|
1280
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1281
|
+
"reason": "string",
|
|
1282
|
+
"remark": "string",
|
|
1283
|
+
"read_by": "string",
|
|
1284
|
+
"status": "valid",
|
|
1285
|
+
"external_id": "string"
|
|
1286
|
+
},
|
|
1287
|
+
"edit_mode": "external",
|
|
1288
|
+
"match_strategy": "exact",
|
|
1289
|
+
"timestamp_tolerance": "exact",
|
|
1290
|
+
"created_at": "1970-01-01T00:00:00.000Z",
|
|
1291
|
+
"created_by": {
|
|
1292
|
+
"type": "user",
|
|
1293
|
+
"id": "string"
|
|
1294
|
+
},
|
|
1295
|
+
"source": "360",
|
|
1296
|
+
"fuzzy_config": {
|
|
1297
|
+
"percentage_threshold": 0.01,
|
|
1298
|
+
"absolute_threshold": 0
|
|
1299
|
+
},
|
|
1300
|
+
"dismissed_reason": "string",
|
|
1301
|
+
"dismissed_at": "1970-01-01T00:00:00.000Z"
|
|
1302
|
+
}
|
|
1303
|
+
```
|
|
1304
|
+
|
|
1305
|
+
</details>
|
|
1306
|
+
|
|
1307
|
+
---
|
|
1308
|
+
|
|
1309
|
+
### `updateReadingChangeset`
|
|
1310
|
+
|
|
1311
|
+
Edit a pending reading changeset
|
|
1312
|
+
|
|
1313
|
+
`PATCH /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}`
|
|
1314
|
+
|
|
1315
|
+
```ts
|
|
1316
|
+
const { data } = await client.updateReadingChangeset(
|
|
1317
|
+
{
|
|
1318
|
+
meter_id: 'example',
|
|
1319
|
+
counter_id: 'example',
|
|
1320
|
+
changeset_id: 'example',
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
proposed: {
|
|
1324
|
+
value: 0,
|
|
1325
|
+
direction: 'feed-in',
|
|
1326
|
+
timestamp: '1970-01-01T00:00:00.000Z',
|
|
1327
|
+
reason: 'string',
|
|
1328
|
+
remark: 'string',
|
|
1329
|
+
read_by: 'string',
|
|
1330
|
+
status: 'valid',
|
|
1331
|
+
external_id: 'string'
|
|
1332
|
+
}
|
|
1333
|
+
},
|
|
1334
|
+
)
|
|
1335
|
+
```
|
|
1336
|
+
|
|
1337
|
+
<details>
|
|
1338
|
+
<summary>Response</summary>
|
|
1339
|
+
|
|
1340
|
+
```json
|
|
1341
|
+
{
|
|
1342
|
+
"changeset_id": "string",
|
|
1343
|
+
"meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1344
|
+
"counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
|
1345
|
+
"proposed": {
|
|
1346
|
+
"value": 0,
|
|
1347
|
+
"direction": "feed-in",
|
|
1348
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1349
|
+
"reason": "string",
|
|
1350
|
+
"remark": "string",
|
|
1351
|
+
"read_by": "string",
|
|
1352
|
+
"status": "valid",
|
|
1353
|
+
"external_id": "string"
|
|
1354
|
+
},
|
|
1355
|
+
"previous": {
|
|
1356
|
+
"value": 0,
|
|
1357
|
+
"direction": "feed-in",
|
|
1358
|
+
"timestamp": "1970-01-01T00:00:00.000Z",
|
|
1359
|
+
"reason": "string",
|
|
1360
|
+
"remark": "string",
|
|
1361
|
+
"read_by": "string",
|
|
1362
|
+
"status": "valid",
|
|
1363
|
+
"external_id": "string"
|
|
1364
|
+
},
|
|
1365
|
+
"edit_mode": "external",
|
|
1366
|
+
"match_strategy": "exact",
|
|
1367
|
+
"timestamp_tolerance": "exact",
|
|
1368
|
+
"created_at": "1970-01-01T00:00:00.000Z",
|
|
1369
|
+
"created_by": {
|
|
1370
|
+
"type": "user",
|
|
1371
|
+
"id": "string"
|
|
1372
|
+
},
|
|
1373
|
+
"source": "360",
|
|
1374
|
+
"fuzzy_config": {
|
|
1375
|
+
"percentage_threshold": 0.01,
|
|
1376
|
+
"absolute_threshold": 0
|
|
1377
|
+
},
|
|
1378
|
+
"dismissed_reason": "string",
|
|
1379
|
+
"dismissed_at": "1970-01-01T00:00:00.000Z"
|
|
1380
|
+
}
|
|
1381
|
+
```
|
|
1382
|
+
|
|
1383
|
+
</details>
|
|
1384
|
+
|
|
1385
|
+
---
|
|
1386
|
+
|
|
1063
1387
|
## Schemas
|
|
1064
1388
|
|
|
1065
1389
|
### `ErrorResp`
|
|
@@ -1275,6 +1599,96 @@ type PortalMeterReading = {
|
|
|
1275
1599
|
}
|
|
1276
1600
|
```
|
|
1277
1601
|
|
|
1602
|
+
### `BatchReadingBase`
|
|
1603
|
+
|
|
1604
|
+
Base properties shared by all batch reading operations
|
|
1605
|
+
|
|
1606
|
+
```ts
|
|
1607
|
+
type BatchReadingBase = {
|
|
1608
|
+
meter_id?: string // uuid
|
|
1609
|
+
counter_id?: string // uuid
|
|
1610
|
+
direction?: "feed-in" | "feed-out"
|
|
1611
|
+
timestamp?: string // date-time
|
|
1612
|
+
external_id?: string
|
|
1613
|
+
metadata?: Record<string, string>
|
|
1614
|
+
}
|
|
1615
|
+
```
|
|
1616
|
+
|
|
1617
|
+
### `CreateOrUpdateBatchReading`
|
|
1618
|
+
|
|
1619
|
+
Schema for create or update operations - requires value, source, and meter_id
|
|
1620
|
+
|
|
1621
|
+
```ts
|
|
1622
|
+
type CreateOrUpdateBatchReading = {
|
|
1623
|
+
meter_id: string // uuid
|
|
1624
|
+
counter_id?: string // uuid
|
|
1625
|
+
direction?: "feed-in" | "feed-out"
|
|
1626
|
+
timestamp?: string // date-time
|
|
1627
|
+
external_id?: string
|
|
1628
|
+
metadata?: Record<string, string>
|
|
1629
|
+
operation?: "create" | "update"
|
|
1630
|
+
value: number
|
|
1631
|
+
source: "ECP" | "ERP" | "360" | "journey-submission"
|
|
1632
|
+
read_by?: string
|
|
1633
|
+
reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
|
|
1634
|
+
status?: "valid" | "in-validation" | "implausible" | null | ""
|
|
1635
|
+
remark?: string
|
|
1636
|
+
note?: string
|
|
1637
|
+
unit?: string
|
|
1638
|
+
}
|
|
1639
|
+
```
|
|
1640
|
+
|
|
1641
|
+
### `DeleteBatchReading`
|
|
1642
|
+
|
|
1643
|
+
Schema for delete operations - only requires identifier fields specified in the identifiers parameter
|
|
1644
|
+
|
|
1645
|
+
```ts
|
|
1646
|
+
type DeleteBatchReading = {
|
|
1647
|
+
meter_id?: string // uuid
|
|
1648
|
+
counter_id?: string // uuid
|
|
1649
|
+
direction?: "feed-in" | "feed-out"
|
|
1650
|
+
timestamp?: string // date-time
|
|
1651
|
+
external_id?: string
|
|
1652
|
+
metadata?: Record<string, string>
|
|
1653
|
+
operation: "delete"
|
|
1654
|
+
}
|
|
1655
|
+
```
|
|
1656
|
+
|
|
1657
|
+
### `BatchReading`
|
|
1658
|
+
|
|
1659
|
+
A meter reading for batch operations. The required fields depend on the operation:
|
|
1660
|
+
- create/update: requires value, source, and meter_id
|
|
1661
|
+
- delete: only requires the fields specified in the identifiers parameter
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
```ts
|
|
1665
|
+
type BatchReading = {
|
|
1666
|
+
meter_id: string // uuid
|
|
1667
|
+
counter_id?: string // uuid
|
|
1668
|
+
direction?: "feed-in" | "feed-out"
|
|
1669
|
+
timestamp?: string // date-time
|
|
1670
|
+
external_id?: string
|
|
1671
|
+
metadata?: Record<string, string>
|
|
1672
|
+
operation?: "create" | "update"
|
|
1673
|
+
value: number
|
|
1674
|
+
source: "ECP" | "ERP" | "360" | "journey-submission"
|
|
1675
|
+
read_by?: string
|
|
1676
|
+
reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"
|
|
1677
|
+
status?: "valid" | "in-validation" | "implausible" | null | ""
|
|
1678
|
+
remark?: string
|
|
1679
|
+
note?: string
|
|
1680
|
+
unit?: string
|
|
1681
|
+
} | {
|
|
1682
|
+
meter_id?: string // uuid
|
|
1683
|
+
counter_id?: string // uuid
|
|
1684
|
+
direction?: "feed-in" | "feed-out"
|
|
1685
|
+
timestamp?: string // date-time
|
|
1686
|
+
external_id?: string
|
|
1687
|
+
metadata?: Record<string, string>
|
|
1688
|
+
operation: "delete"
|
|
1689
|
+
}
|
|
1690
|
+
```
|
|
1691
|
+
|
|
1278
1692
|
### `UpdateMeterReading`
|
|
1279
1693
|
|
|
1280
1694
|
```ts
|
|
@@ -1422,6 +1836,114 @@ type ReadingWithMeter = {
|
|
|
1422
1836
|
}
|
|
1423
1837
|
```
|
|
1424
1838
|
|
|
1839
|
+
### `MeterReadingChangeset`
|
|
1840
|
+
|
|
1841
|
+
```ts
|
|
1842
|
+
type MeterReadingChangeset = {
|
|
1843
|
+
changeset_id: string
|
|
1844
|
+
meter_id?: string // uuid
|
|
1845
|
+
counter_id?: string // uuid
|
|
1846
|
+
proposed: {
|
|
1847
|
+
value: number
|
|
1848
|
+
direction?: "feed-in" | "feed-out"
|
|
1849
|
+
timestamp?: string // date-time
|
|
1850
|
+
reason?: string
|
|
1851
|
+
remark?: string
|
|
1852
|
+
read_by?: string
|
|
1853
|
+
status?: "valid" | "in-validation" | "implausible"
|
|
1854
|
+
external_id?: string
|
|
1855
|
+
}
|
|
1856
|
+
previous?: {
|
|
1857
|
+
value: number
|
|
1858
|
+
direction?: "feed-in" | "feed-out"
|
|
1859
|
+
timestamp?: string // date-time
|
|
1860
|
+
reason?: string
|
|
1861
|
+
remark?: string
|
|
1862
|
+
read_by?: string
|
|
1863
|
+
status?: "valid" | "in-validation" | "implausible"
|
|
1864
|
+
external_id?: string
|
|
1865
|
+
}
|
|
1866
|
+
edit_mode: "external" | "approval"
|
|
1867
|
+
match_strategy?: "exact" | "fuzzy"
|
|
1868
|
+
timestamp_tolerance?: "exact" | {
|
|
1869
|
+
type: "same-day"
|
|
1870
|
+
timezone?: string
|
|
1871
|
+
} | {
|
|
1872
|
+
type: "within-seconds"
|
|
1873
|
+
seconds: number
|
|
1874
|
+
}
|
|
1875
|
+
created_at: string // date-time
|
|
1876
|
+
created_by?: {
|
|
1877
|
+
type?: "user" | "portal_user" | "api_client" | "automation"
|
|
1878
|
+
id?: string
|
|
1879
|
+
}
|
|
1880
|
+
source?: "360" | "ECP" | "ERP" | "journey-submission"
|
|
1881
|
+
fuzzy_config?: {
|
|
1882
|
+
percentage_threshold?: number
|
|
1883
|
+
absolute_threshold?: number
|
|
1884
|
+
}
|
|
1885
|
+
dismissed_reason?: string
|
|
1886
|
+
dismissed_at?: string // date-time
|
|
1887
|
+
}
|
|
1888
|
+
```
|
|
1889
|
+
|
|
1890
|
+
### `FuzzyConfig`
|
|
1891
|
+
|
|
1892
|
+
Numeric-threshold fuzzy matching for meter reading auto-clear.
|
|
1893
|
+
|
|
1894
|
+
NOTE: This is intentionally different from entity-api's FuzzyConfig. Entity-api's
|
|
1895
|
+
fuzzy strategies (suffix, digits_only, normalize_phone, ignore_fields,
|
|
1896
|
+
contains_entry, regex) are designed for strings and structured objects (IBAN, phone
|
|
1897
|
+
|
|
1898
|
+
```ts
|
|
1899
|
+
type FuzzyConfig = {
|
|
1900
|
+
percentage_threshold?: number
|
|
1901
|
+
absolute_threshold?: number
|
|
1902
|
+
}
|
|
1903
|
+
```
|
|
1904
|
+
|
|
1905
|
+
### `ProposedReading`
|
|
1906
|
+
|
|
1907
|
+
```ts
|
|
1908
|
+
type ProposedReading = {
|
|
1909
|
+
value: number
|
|
1910
|
+
direction?: "feed-in" | "feed-out"
|
|
1911
|
+
timestamp?: string // date-time
|
|
1912
|
+
reason?: string
|
|
1913
|
+
remark?: string
|
|
1914
|
+
read_by?: string
|
|
1915
|
+
status?: "valid" | "in-validation" | "implausible"
|
|
1916
|
+
external_id?: string
|
|
1917
|
+
}
|
|
1918
|
+
```
|
|
1919
|
+
|
|
1920
|
+
### `ChangesetCreator`
|
|
1921
|
+
|
|
1922
|
+
```ts
|
|
1923
|
+
type ChangesetCreator = {
|
|
1924
|
+
type?: "user" | "portal_user" | "api_client" | "automation"
|
|
1925
|
+
id?: string
|
|
1926
|
+
}
|
|
1927
|
+
```
|
|
1928
|
+
|
|
1929
|
+
### `TimestampTolerance`
|
|
1930
|
+
|
|
1931
|
+
Slack on `reading.timestamp` when auto-clear matches an incoming reading
|
|
1932
|
+
against a pending changeset. Both sides reference the SAME physical
|
|
1933
|
+
meter-read event — one as stored when the user submitted, the other as
|
|
1934
|
+
echoed back by the ERP. The tolerance accommodates round-trip format
|
|
1935
|
+
drift between the t
|
|
1936
|
+
|
|
1937
|
+
```ts
|
|
1938
|
+
type TimestampTolerance = "exact" | {
|
|
1939
|
+
type: "same-day"
|
|
1940
|
+
timezone?: string
|
|
1941
|
+
} | {
|
|
1942
|
+
type: "within-seconds"
|
|
1943
|
+
seconds: number
|
|
1944
|
+
}
|
|
1945
|
+
```
|
|
1946
|
+
|
|
1425
1947
|
### `ActivityId`
|
|
1426
1948
|
|
|
1427
1949
|
See https://github.com/ulid/spec
|