@epilot/metering-client 0.8.2 → 0.9.1
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/dist/definition.js +1 -1
- package/dist/openapi.d.ts +318 -28
- package/dist/openapi.json +231 -41
- package/package.json +14 -13
- package/LICENSE +0 -21
package/dist/definition.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var e={390:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var s=n(r(871));t.default=s.default},871:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"Metering API","version":"1.0.0"},"tags":[{"name":"ECP","description":"APIs defined for a portal user"},{"name":"ECP Admin","description":"APIs defined for a ECP Admin"},{"name":"meter_schema","x-displayName":"Meter","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/Meter\\" />\\n"},{"name":"meter_counter_schema","x-displayName":"Meter Counter","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/MeterCounter\\" />\\n"}],"x-tagGroups":[{"name":"APIs","tags":["ECP","ECP Admin"]},{"name":"Schemas","tags":["meter_schema","meter_counter_schema"]}],"security":[{"EpilotAuth":[]},{"PortalAuth":[]},{"EitherAuth":[]}],"paths":{"/v1/metering/meter":{"get":{"operationId":"getCustomerMeters","summary":"Get Customer Meters","description":"Retrieves all meters related to a customer.","tags":["ECP"],"security":[{"PortalAuth":[]}],"responses":{"200":{"description":"Customer meters retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/Meter"},{"type":"object","properties":{"journey_actions":{"$ref":"#/components/schemas/JourneyActions"}}},{"type":"object","properties":{"last_reading":{"type":"string","example":"2022-10-10T00:00:00.000Z","description":"The timestamp of the last reading"},"current_consumption":{"type":"number","example":100.5,"description":"The current consumption of the meter"}}}]}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/contract/meters/{contract_id}":{"get":{"operationId":"getMetersByContractId","summary":"getMetersByContractId","description":"Retrieves all meters related to a contract.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"contract_id","schema":{"$ref":"#/components/schemas/EntityId"},"required":true,"description":"The ID of the Contract."}],"responses":{"200":{"description":"Meters related to the contract retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Meter"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/meter/{id}":{"patch":{"operationId":"updateMeter","summary":"Update Meter","description":"Updates the details of a meter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"$ref":"#/components/schemas/EntityId"},"required":true,"description":"The ID of the meter."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"}}}},"responses":{"200":{"description":"Meter updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Meter"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestUpdateMeter"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"get":{"operationId":"getMeter","summary":"Get Meter","description":"Retrieves the details of a meter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"$ref":"#/components/schemas/EntityId"},"required":true,"description":"The ID of the meter."}],"responses":{"200":{"description":"Meter retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Meter"},"journey_actions":{"$ref":"#/components/schemas/JourneyActions"},"relations":{"type":"array","items":{"$ref":"#/components/schemas/EntityItem"}}}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/counter":{"get":{"operationId":"getMeterCounters","summary":"Get Meter Counters","description":"Retrieves all counters for a given meter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"query","name":"meter_id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}}],"responses":{"200":{"description":"Counters retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeterCounter"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/counter/{counter_id}":{"get":{"operationId":"getCounterDetails","summary":"Get Counter Details","description":"Retrieves the details of a meter counter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter."}],"responses":{"200":{"description":"Counter details retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterCounter"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading":{"post":{"operationId":"createMeterReading","summary":"Create Meter Reading","description":"Inserts a new meter reading.","tags":["ECP Admin","ECP"],"security":[{"EitherAuth":[]}],"requestBody":{"description":"Meter reading payload.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeterReading"}}}},"responses":{"200":{"description":"Meter reading created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterReading"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReading"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/readings":{"post":{"operationId":"createMeterReadings","summary":"Create Meter Readings","description":"Inserts multiple meter readings at once. Limited to 100 readings per request.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"query","name":"async","description":"Don\'t wait for the reading to become available in GetReadings API. Useful for large migrations","required":false,"schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/ActivityIdQueryParam"},{"$ref":"#/components/parameters/SkipValidationQueryParam"}],"requestBody":{"description":"Meter readings payload. Limited to 100 readings per request.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"readings":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}}}}}}},"responses":{"200":{"description":"Meter readings created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReadings"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v2/metering/readings":{"post":{"operationId":"batchWriteMeterReadings","summary":"Batch Write Readings","description":"Upserts/Deletes multiple meter readings at once. Limited to 100 readings per request.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"query","name":"async","description":"Don\'t wait for the reading to become available in GetReadings API. Useful for large migrations","required":false,"schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/SkipValidationQueryParam"},{"$ref":"#/components/parameters/ActivityIdQueryParam"}],"requestBody":{"description":"Meter readings payload. Limited to 100 readings per request.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"readings":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/MeterReading"},{"properties":{"operation":{"type":"string","enum":["create","update","delete"],"default":"create"}}}]}}}}}}},"responses":{"200":{"description":"Meter readings created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReadings"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading/submission":{"post":{"operationId":"createMeterReadingFromSubmission","summary":"Create Meter Reading from Submission","description":"Creates a reading from a journey submission.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"requestBody":{"description":"Meter reading payload.","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"org_id":{"type":"string","example":"123","description":"ID of the organization"},"entity":{"type":"object","additionalProperties":true,"properties":{"_org":{"type":"string","example":"123","description":"ID of the organization"},"meterReadings":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionMeterReading"}}}}}}}}},"responses":{"200":{"description":"Meter reading created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","enum":["Successfully Processed"]}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReadingFromSubmission"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/allowed/reading/{meter_id}":{"get":{"operationId":"getAllowedReadingForMeter","summary":"getAllowedReadingForMeter","description":"Get allowed reading for the given meter","tags":["ECP Admin","ECP"],"security":[{"EitherAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter."},{"in":"query","name":"timestamp","required":false,"description":"If not provided, the system will default to now.","schema":{"type":"string","example":"2022-10-01T10:10:00.000Z"}}],"responses":{"200":{"description":"Recent reading for the meter fetched successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"counter_id":{"$ref":"#/components/schemas/Id"},"min_value":{"type":"number","description":"Minimum allowed reading value for the meter"},"max_value":{"type":"number","description":"Maximum allowed reading value for the meter"}}}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading/with-meter":{"post":{"operationId":"createReadingWithMeter","summary":"Create Reading with Meter","description":"Creates a reading along with a meter.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"requestBody":{"description":"Meter reading payload.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadingWithMeter"}}}},"responses":{"200":{"description":"Reading with meter created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterReading"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateReadingWithMeter"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading/{meter_id}/{counter_id}":{"get":{"operationId":"getReadingsByInterval","summary":"Get Readings by Interval","description":"Retrieves all readings specified in an interval.\\nIf the start_date and end_date are equal, then it returns the readings of the specified date.\\nThe start_date should be less than or equal to the end_date.\\n","tags":["ECP Admin","ECP"],"security":[{"EitherAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter."},{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter."},{"in":"query","name":"start_date","required":false,"description":"If not provided, the system will default to 2000-01-01.","schema":{"type":"string","example":"2022-10-01"}},{"in":"query","name":"end_date","required":false,"description":"If not provided, the system will default to today\'s date.","schema":{"type":"string","example":"2022-10-10"}},{"in":"query","name":"direction","required":false,"schema":{"$ref":"#/components/schemas/Direction"}},{"in":"query","name":"size","description":"Returns the first n results after the specified offset (from).\\nIf this value is provided as -1, then it returns all results at once.\\n","required":false,"schema":{"type":"number","example":20,"default":20}},{"in":"query","name":"from","required":false,"schema":{"type":"number","example":0,"default":0}},{"in":"query","name":"type","required":true,"description":"Since meter readings are cumulative, users may need to request actual consumptions, which are the difference between consecutive measurements.\\nIf this value is provided as \\"cumulative\\", then actual readings will be returned.\\nIf this value is provided as \\"relative\\", then actual consumption will be returned.\\n","schema":{"type":"string","default":"cumulative","enum":["cumulative","relative"]}},{"in":"query","name":"sort","required":false,"schema":{"type":"string","default":"asc","enum":["asc","desc"]},"description":"If this value is provided as \\"asc\\", then the results will be sorted by the timestamp field in ascending order.\\nIf this value is provided as \\"desc\\", then the results will be sorted by the timestamp field in descending order.\\n"}],"responses":{"200":{"description":"Readings retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}},"hits":{"type":"number","example":120},"firstRecordCreatedAt":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"put":{"operationId":"updateMeterReading","summary":"Update Meter Reading","description":"Updates a meter reading.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter entity."},{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter entity."},{"in":"query","name":"timestamp","required":true,"description":"The timestamp when the reading was created.","schema":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}],"requestBody":{"description":"Update meter reading payload.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeterReading"}}}},"responses":{"200":{"description":"Meter reading updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterReading"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestUpdateMeterReading"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"delete":{"operationId":"deleteMeterReading","summary":"Delete Meter Reading","description":"Deletes a meter reading.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter entity."},{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter entity."},{"in":"query","name":"timestamp","required":true,"description":"The timestamp when the reading was created.","schema":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}],"responses":{"200":{"description":"Meter reading deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"meterId":{"$ref":"#/components/schemas/Id"},"counterId":{"$ref":"#/components/schemas/Id"},"timestamp":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}},"components":{"responses":{"InvalidRequest":{"description":"The request could not be validated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"Unauthorized":{"description":"Could not authenticate the user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"Forbidden":{"description":"The user is not allowed to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"InvalidRequestUpdateMeter":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["missing_params"]}}}]}}}},"InvalidRequestCreateMeterReading":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["contract_period","no_counter","no_direction","timestamp_future","less_than_previous","greater_than_subsequent","meter_decommissioned"]}}}]}}}},"InvalidRequestCreateMeterReadings":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["too_many_records","timestamp_future","duplicate_reading","less_than_previous"]}}}]}}}},"InvalidRequestCreateMeterReadingFromSubmission":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["timestamp_future","less_than_previous","greater_than_subsequent"]}}}]}}}},"InvalidRequestCreateReadingWithMeter":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["missing_params","timestamp_future","less_than_previous","contract_period","greater_than_subsequent"]}}}]}}}},"InvalidRequestUpdateMeterReading":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["missing_params","timestamp_future","less_than_previous","greater_than_subsequent"]}}}]}}}}},"securitySchemes":{"EpilotAuth":{"type":"http","scheme":"bearer","description":"Authorization header with ePilot OAuth2 bearer token","bearerFormat":"JWT"},"PortalAuth":{"type":"http","scheme":"bearer","description":"Authorization header with customer portal OAuth2 bearer token","bearerFormat":"JWT"},"EitherAuth":{"type":"http","scheme":"bearer","description":"Portal or Epilot Bearer Token"},"AsOrganization":{"type":"apiKey","in":"header","name":"x-ivy-org-id","description":"Set organization id as internal user"}},"schemas":{"ErrorResp":{"type":"object","properties":{"message":{"type":"string","description":"Error message"}}},"EntityId":{"type":"string","format":"uuid"},"EntitySlug":{"description":"URL-friendly identifier for the entity schema","type":"string","example":"contact"},"BaseEntity":{"type":"object","properties":{"_id":{"$ref":"#/components/schemas/EntityId","description":"Entity ID","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"_title":{"type":"string","description":"Title of the entity","example":"Example Entity"},"_org":{"type":"string","description":"Organization ID the entity belongs to","example":"123"},"_tags":{"type":"array","items":{"type":"string"},"description":"Array of entity tags","example":["example","mock"]},"_created_at":{"type":"string","format":"date-time","description":"Creation timestamp of the entity","example":"2021-02-09T12:41:43.662Z"},"_updated_at":{"type":"string","format":"date-time","description":"Last update timestamp of the entity","example":"2021-02-09T12:41:43.662Z"}},"required":["_id","_title","_org","_created_at","_updated_at"]},"Entity":{"type":"object","properties":{},"additionalProperties":true},"EntityItem":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"$ref":"#/components/schemas/Entity"}]},"Id":{"type":"string"},"EntityRelation":{"type":"object","properties":{"entity_id":{"$ref":"#/components/schemas/EntityId"},"_slug":{"type":"string","enum":["contact","contract"]}}},"Meter":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"type":"object","required":["_schema"],"properties":{"_schema":{"type":"string","enum":["meter"],"description":"The schema type of the meter"},"ma_lo_id":{"type":"string","example":"A09-123","description":"The MA-LO ID of the meter"},"status":{"type":"string","enum":["active","decommissioned"],"description":"The status of the meter"},"meter_type":{"type":"string","enum":["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"],"description":"The type of the meter"},"tariff_type":{"type":"string","example":"Peak load tariff","description":"The tariff type of the meter"},"meter_number":{"type":"string","example":"J-1093-1AK","description":"The number of the meter"},"sector":{"type":"string","enum":["power","water","gas","district_heating","waste_water"],"description":"The sector to which the meter belongs"},"location":{"type":"object","example":[{"country":"Germany","city":"Koln","postal_code":81475,"street":"Melatengürtel","street_number":71,"additional_info":"5. Etage","_tags":["billing","delivery"]}],"description":"The location information of the meter"},"used_for":{"type":"string","example":"Domestic Usage","description":"The usage purpose of the meter"},"manufacturer":{"type":"string","example":"Energy One","description":"The manufacturer of the meter"},"calibration_date":{"type":"string","example":"2022-10-10T00:00:00.000Z","description":"The calibration date of the meter"},"contract":{"type":"object","properties":{"$relation":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelation"}}},"description":"The contract associated with the meter"},"customer":{"type":"object","properties":{"$relation":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelation"}}},"description":"The customer associated with the meter"}}}]},"Direction":{"type":"string","enum":["feed-in","feed-out"]},"TariffType":{"type":"string","enum":["ht","nt"]},"Reason":{"type":"string","nullable":true,"example":"Storing the feed-in record","description":"The reason for recording the reading"},"ReadBy":{"type":"string","nullable":true,"example":"John Doe","description":"The person who recorded the reading"},"ReadingStatus":{"type":"string","nullable":true,"enum":["valid","in-validation","implausible",null,""]},"MeterReading":{"type":"object","required":["value","meter_id","source"],"properties":{"value":{"type":"number","example":240,"description":"The reading value of the meter"},"read_by":{"$ref":"#/components/schemas/ReadBy"},"reason":{"$ref":"#/components/schemas/Reason"},"meter_id":{"$ref":"#/components/schemas/EntityId","description":"The ID of the associated meter"},"counter_id":{"$ref":"#/components/schemas/EntityId","description":"The ID of the associated meter counter"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the reading (feed-in or feed-out)"},"timestamp":{"type":"string","description":"If the value is not provided, the system will be set with the time the request is processed.","example":"2022-10-10T00:00:00.000Z"},"source":{"$ref":"#/components/schemas/Source","description":"The source of the reading"},"status":{"$ref":"#/components/schemas/ReadingStatus","description":"The status of the reading"}}},"MeterCounter":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"type":"object","required":["_schema"],"properties":{"_id":{"$ref":"#/components/schemas/EntityId"},"_schema":{"type":"string","enum":["meter_counter"]},"obis_number":{"type":"string","example":"A-34","description":"The OBIS number of the meter counter"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the meter counter"},"transformer_ratio":{"type":"number","example":70,"description":"The transformer ratio of the meter counter"},"unit":{"$ref":"#/components/schemas/Unit","description":"The unit of measurement for the meter counter"},"forecast_reading_value":{"type":"string","example":270,"description":"The forecast reading value of the meter counter"},"forecast_as_of":{"type":"string","example":"2022-12-10T00:00:00.000Z","description":"The date as of which the forecast reading value is applicable"},"current_consumption":{"type":"number","example":240,"description":"The current consumption value of the meter counter"},"last_reading":{"type":"string","example":"2022-10-10T00:00:00.000Z","description":"The timestamp of the last reading"},"conversion_factor":{"type":"number","example":3,"description":"The conversion factor for the meter counter"},"tariff_type":{"$ref":"#/components/schemas/TariffType","description":"The tariff type of the meter counter"}}}]},"CounterReadingOnSubmission":{"type":"object","required":["counterId","direction","value"],"properties":{"counterId":{"$ref":"#/components/schemas/Id","description":"The ID of the associated meter counter"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the reading (feed-in or feed-out)"},"unit":{"type":"string","enum":["w","wh","kw","kWh","kvarh","mw","mWh","unit","cubic-meter","hour","day","month","year","percentage"],"description":"The unit of measurement for the reading"},"value":{"type":"number","example":240,"description":"The reading value of the meter counter"}}},"SubmissionMeterReading":{"type":"object","required":["meterId"],"nullable":true,"properties":{"meterId":{"$ref":"#/components/schemas/Id","description":"The ID of the associated meter"},"readings":{"type":"array","items":{"$ref":"#/components/schemas/CounterReadingOnSubmission"},"description":"- The counter readings of a meter\\n- This is only sent when the user is authenticated while submitting a journey\\n"},"readingValue":{"type":"number","example":240,"description":"The reading value of the meter when the counterId is passed or when the meterType is one-tariff"},"readingDate":{"type":"string","description":"If the value is not provided, the system will be set with the time the request is processed.","example":"2022-10-10T10:10:00.000Z"},"readBy":{"type":"string","example":"John Doe","description":"The person who recorded the reading"},"reason":{"$ref":"#/components/schemas/Reason"},"maloId":{"type":"string","example":"A09-123","description":"The MA-LO ID of the meter"},"obisNumber":{"type":"string","example":"A-34","description":"The OBIS number of the meter counter"},"readingUnit":{"$ref":"#/components/schemas/Unit","description":"The unit of measurement for the reading"},"meterType":{"type":"string","enum":["one_tariff","two_tariff","bi_directional"],"description":"The type of the meter"},"feedInValue":{"type":"number","example":240,"description":"The feed-in value of the meter when meterType is one-tariff or bi-directional"},"feedOutValue":{"type":"number","example":240,"description":"The feed-out value of the meter when meterType is bi-directional"},"htValue":{"type":"number","example":240,"description":"The high-peak tariff value of the meter when meterType is two-tariff"},"ntValue":{"type":"number","example":240,"description":"The off-peak tariff value of the meter when meterType is two-tariff"}}},"Unit":{"type":"string","enum":["w","wh","kw","kWh","kvarh","mw","mWh","unit","cubic-meter","hour","day","month","year","percentage"]},"Source":{"type":"string","enum":["ECP","ERP","360","journey-submission"]},"ActionLabel":{"type":"object","properties":{"en":{"type":"string","nullable":true},"de":{"type":"string","nullable":true}}},"Rule":{"type":"object","properties":{"entity":{"type":"string","nullable":true},"attribute":{"type":"string","nullable":true},"attribute_value":{"type":"string","nullable":true}}},"JourneyActions":{"type":"object","properties":{"journey_id":{"type":"string","nullable":true},"action_label":{"type":"object","$ref":"#/components/schemas/ActionLabel","nullable":true},"slug":{"type":"string","nullable":true},"rules":{"type":"array","items":{"$ref":"#/components/schemas/Rule"},"nullable":true}}},"ReadingWithMeter":{"type":"object","properties":{"ma_lo_id":{"type":"string","example":"A09-123","description":"The MA-LO ID of the meter"},"meter_id":{"$ref":"#/components/schemas/Id","description":"The ID of the associated meter"},"obis_number":{"type":"string","example":"A-34","description":"The OBIS number of the meter counter"},"unit":{"$ref":"#/components/schemas/Unit","description":"The unit of measurement for the reading"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the reading"},"tariff_type":{"$ref":"#/components/schemas/TariffType","description":"The tariff type of the reading"},"value":{"type":"number","example":240,"description":"The reading value"},"read_by":{"$ref":"#/components/schemas/ReadBy"},"reason":{"$ref":"#/components/schemas/Reason"},"timestamp":{"type":"string","description":"If the value is not provided, the system will be set with the time the request is processed.","example":"2022-10-10T10:10:00.000Z"},"source":{"$ref":"#/components/schemas/Source","description":"The source of the reading"}}},"ActivityId":{"type":"string","format":"ulid","description":"See https://github.com/ulid/spec","example":"01F130Q52Q6MWSNS8N2AVXV4JN"}},"parameters":{"ActivityIdQueryParam":{"name":"activity_id","description":"Activity to include in event feed","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}},"SkipValidationQueryParam":{"name":"skip_validation","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"When set to true, all validations will be skipped and the system will allow the reading to be created.\\nIf set to false or not provided, the system performs the following validations:\\n Validation Rules (when not skipped)\\n - Previous Reading Check:\\n The new reading must be greater than the previous reading.\\n Example: If the previous reading is 100 and the new reading is 50, the system will reject it.\\n - Subsequent Reading Check\\n The new reading must be less than the next (subsequent) reading, if one exists.\\n Example: If a future reading for 2022-10-10 is 200, and you try to enter 250 for 2022-10-09, it will be rejected.\\n - Future Timestamp Check\\n The reading timestamp must be less than or equal to the current time.\\n Example: If the current time is 2022-10-10T20:00:00Z, a reading with timestamp 2022-10-11T20:00:00Z will not be accepted.\\n - Duplicate Check\\n A reading is not allowed if there\'s already a record with the same meter_id, counter_id, and timestamp`.\\n - Update Check\\n When updating a reading, the system will look for an existing record with the same meter_id, counter_id, and timestamp.\\n If no such record exists, it won\'t throw an error — the update simply won\'t take effect.\\n"}}},"servers":[{"url":"https://metering.sls.epilot.io"}]}')}},t={},r=function r(n){var s=t[n];if(void 0!==s)return s.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}(390),n=exports;for(var s in r)n[s]=r[s];r.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})})();
|
|
1
|
+
(()=>{"use strict";var e={914:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var s=n(r(534));t.default=s.default},534:e=>{e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"Metering API","version":"1.0.0"},"tags":[{"name":"ECP","description":"APIs defined for a portal user"},{"name":"ECP Admin","description":"APIs defined for a ECP Admin"},{"name":"meter_schema","x-displayName":"Meter","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/Meter\\" />\\n"},{"name":"meter_counter_schema","x-displayName":"Meter Counter","description":"<SchemaDefinition schemaRef=\\"#/components/schemas/MeterCounter\\" />\\n"}],"x-tagGroups":[{"name":"APIs","tags":["ECP","ECP Admin"]},{"name":"Schemas","tags":["meter_schema","meter_counter_schema"]}],"security":[{"EpilotAuth":[]},{"PortalAuth":[]},{"EitherAuth":[]}],"paths":{"/v1/metering/meter":{"get":{"operationId":"getCustomerMeters","summary":"Get Customer Meters","description":"Retrieves all meters related to a customer.","tags":["ECP"],"security":[{"PortalAuth":[]}],"responses":{"200":{"description":"Customer meters retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/Meter"},{"type":"object","properties":{"journey_actions":{"$ref":"#/components/schemas/JourneyActions"}}},{"type":"object","properties":{"last_reading":{"type":"string","example":"2022-10-10T00:00:00.000Z","description":"The timestamp of the last reading"},"current_consumption":{"type":"number","example":100.5,"description":"The current consumption of the meter"}}}]}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/contract/meters/{contract_id}":{"get":{"operationId":"getMetersByContractId","summary":"getMetersByContractId","description":"Retrieves all meters related to a contract.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"contract_id","schema":{"$ref":"#/components/schemas/EntityId"},"required":true,"description":"The ID of the Contract."}],"responses":{"200":{"description":"Meters related to the contract retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Meter"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/meter/{id}":{"patch":{"operationId":"updateMeter","summary":"Update Meter","description":"Updates the details of a meter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"$ref":"#/components/schemas/EntityId"},"required":true,"description":"The ID of the meter."}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"}}}},"responses":{"200":{"description":"Meter updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Meter"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestUpdateMeter"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"get":{"operationId":"getMeter","summary":"Get Meter","description":"Retrieves the details of a meter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"id","schema":{"$ref":"#/components/schemas/EntityId"},"required":true,"description":"The ID of the meter."}],"responses":{"200":{"description":"Meter retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Meter"},"journey_actions":{"$ref":"#/components/schemas/JourneyActions"},"relations":{"type":"array","items":{"$ref":"#/components/schemas/EntityItem"}}}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/counter":{"get":{"operationId":"getMeterCounters","summary":"Get Meter Counters","description":"Retrieves all counters for a given meter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"query","name":"meter_id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}}],"responses":{"200":{"description":"Counters retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeterCounter"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/counter/{counter_id}":{"get":{"operationId":"getCounterDetails","summary":"Get Counter Details","description":"Retrieves the details of a meter counter.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter."}],"responses":{"200":{"description":"Counter details retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterCounter"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading":{"post":{"operationId":"createMeterReading","summary":"Create Meter Reading","description":"Inserts a new meter reading.","tags":["ECP Admin","ECP"],"security":[{"EitherAuth":[]}],"requestBody":{"description":"Meter reading payload.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeterReading"}}}},"responses":{"200":{"description":"Meter reading created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterReading"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReading"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/readings":{"post":{"operationId":"createMeterReadings","summary":"Create Meter Readings","description":"Inserts multiple meter readings at once. Limited to 100 readings per request.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"query","name":"async","description":"Don\'t wait for the reading to become available in GetReadings API. Useful for large migrations","required":false,"schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/ActivityIdQueryParam"},{"$ref":"#/components/parameters/SkipValidationQueryParam"}],"requestBody":{"description":"Meter readings payload. Limited to 100 readings per request.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"readings":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}}}}}}},"responses":{"200":{"description":"Meter readings created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReadings"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/readings/{meter_id}":{"post":{"operationId":"createPortalMeterReadings","summary":"createPortalMeterReadings","description":"Inserts multiple meter readings at once for a given meter. Limited to 2 readings per request.","tags":["ECP"],"security":[{"PortalAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter."}],"requestBody":{"description":"Meter readings payload. Limited to 2 readings per request.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"readings":{"type":"array","items":{"$ref":"#/components/schemas/PortalMeterReading"}}}}}}},"responses":{"200":{"description":"Meter readings created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReadings"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v2/metering/readings":{"post":{"operationId":"batchWriteMeterReadings","summary":"Batch Write Readings","description":"Upserts/Deletes multiple meter readings at once. Limited to 100 readings per request.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"query","name":"async","description":"Don\'t wait for the reading to become available in GetReadings API. Useful for large migrations","required":false,"schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/SkipValidationQueryParam"},{"$ref":"#/components/parameters/ActivityIdQueryParam"}],"requestBody":{"description":"Meter readings payload. Limited to 100 readings per request.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"identifiers":{"type":"array","items":{"type":"string","description":"The identifier of the meter reading."},"description":"- By default, the system will use combination of counter_id, meter_id, direction, and timestamp to identify a meter reading.\\n- Additional identifiers can be provided to identify a meter reading uniquely.\\n- Example:\\n - [\\"metadata.registration_id\\", \\"metadata.business_unit\\"]\\n - [\\"metadata.registration_id\\", \\"metadata.business_unit\\", \\"external_id\\"]\\n"},"readings":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/MeterReading"},{"properties":{"operation":{"type":"string","enum":["create","update","delete"],"default":"create"}}}]}}}}}}},"responses":{"200":{"description":"Meter readings created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReadings"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading/submission":{"post":{"operationId":"createMeterReadingFromSubmission","summary":"Create Meter Reading from Submission","description":"Creates a reading from a journey submission.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"requestBody":{"description":"Meter reading payload.","required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"org_id":{"type":"string","example":"123","description":"ID of the organization"},"entity":{"type":"object","additionalProperties":true,"properties":{"_org":{"type":"string","example":"123","description":"ID of the organization"},"meterReadings":{"type":"array","items":{"$ref":"#/components/schemas/SubmissionMeterReading"}}}}}}}}},"responses":{"200":{"description":"Meter reading created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","enum":["Successfully Processed"]}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateMeterReadingFromSubmission"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/allowed/reading/{meter_id}":{"get":{"operationId":"getAllowedReadingForMeter","summary":"getAllowedReadingForMeter","description":"Get allowed reading for the given meter","tags":["ECP Admin","ECP"],"security":[{"EitherAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter."},{"in":"query","name":"timestamp","required":false,"description":"If not provided, the system will default to now.","schema":{"type":"string","example":"2022-10-01T10:10:00.000Z"}}],"responses":{"200":{"description":"Recent reading for the meter fetched successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"counter_id":{"$ref":"#/components/schemas/Id"},"min_value":{"type":"number","description":"Minimum allowed reading value for the meter"},"max_value":{"type":"number","description":"Maximum allowed reading value for the meter"}}}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading/with-meter":{"post":{"operationId":"createReadingWithMeter","summary":"Create Reading with Meter","description":"Creates a reading along with a meter.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"requestBody":{"description":"Meter reading payload.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadingWithMeter"}}}},"responses":{"200":{"description":"Reading with meter created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterReading"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestCreateReadingWithMeter"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}},"/v1/metering/reading/{meter_id}/{counter_id}":{"get":{"operationId":"getReadingsByInterval","summary":"Get Readings by Interval","description":"Retrieves all readings specified in an interval.\\nIf the start_date and end_date are equal, then it returns the readings of the specified date.\\nThe start_date should be less than or equal to the end_date.\\n","tags":["ECP Admin","ECP"],"security":[{"EitherAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter."},{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter."},{"in":"query","name":"start_date","required":false,"description":"If not provided, the system will default to 2000-01-01.","schema":{"type":"string","example":"2022-10-01"}},{"in":"query","name":"end_date","required":false,"description":"If not provided, the system will default to today\'s date.","schema":{"type":"string","example":"2022-10-10"}},{"in":"query","name":"direction","required":false,"schema":{"$ref":"#/components/schemas/Direction"}},{"in":"query","name":"size","description":"Returns the first n results after the specified offset (from).\\nIf this value is provided as -1, then it returns all results at once.\\n","required":false,"schema":{"type":"number","example":20,"default":20}},{"in":"query","name":"from","required":false,"schema":{"type":"number","example":0,"default":0}},{"in":"query","name":"type","required":true,"description":"Since meter readings are cumulative, users may need to request actual consumptions, which are the difference between consecutive measurements.\\nIf this value is provided as \\"cumulative\\", then actual readings will be returned.\\nIf this value is provided as \\"relative\\", then actual consumption will be returned.\\n","schema":{"type":"string","default":"cumulative","enum":["cumulative","relative"]}},{"in":"query","name":"sort","required":false,"schema":{"type":"string","default":"asc","enum":["asc","desc"]},"description":"If this value is provided as \\"asc\\", then the results will be sorted by the timestamp field in ascending order.\\nIf this value is provided as \\"desc\\", then the results will be sorted by the timestamp field in descending order.\\n"}],"responses":{"200":{"description":"Readings retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/MeterReading"}},"hits":{"type":"number","example":120},"firstRecordCreatedAt":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"put":{"operationId":"updateMeterReading","summary":"Update Meter Reading","description":"Updates a meter reading.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter entity."},{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter entity."},{"in":"query","name":"timestamp","required":true,"description":"The timestamp when the reading was created.","schema":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}],"requestBody":{"description":"Update meter reading payload.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMeterReading"}}}},"responses":{"200":{"description":"Meter reading updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MeterReading"}}}}}},"400":{"$ref":"#/components/responses/InvalidRequestUpdateMeterReading"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}},"delete":{"operationId":"deleteMeterReading","summary":"Delete Meter Reading","description":"Deletes a meter reading.","tags":["ECP Admin"],"security":[{"EpilotAuth":[]}],"parameters":[{"in":"path","name":"meter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the meter entity."},{"in":"path","name":"counter_id","schema":{"$ref":"#/components/schemas/Id"},"required":true,"description":"The ID of the counter entity."},{"in":"query","name":"timestamp","required":true,"description":"The timestamp when the reading was created.","schema":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}],"responses":{"200":{"description":"Meter reading deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"meterId":{"$ref":"#/components/schemas/Id"},"counterId":{"$ref":"#/components/schemas/Id"},"timestamp":{"type":"string","example":"2022-10-01T20:00:00.000Z"}}}}}}}},"400":{"$ref":"#/components/responses/InvalidRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}},"components":{"responses":{"InvalidRequest":{"description":"The request could not be validated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"Unauthorized":{"description":"Could not authenticate the user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"Forbidden":{"description":"The user is not allowed to access this resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResp"}}}},"InvalidRequestUpdateMeter":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["missing_params"]}}}]}}}},"InvalidRequestCreateMeterReading":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["contract_period","no_counter","no_direction","timestamp_future","less_than_previous","greater_than_subsequent","meter_decommissioned"]}}}]}}}},"InvalidRequestCreateMeterReadings":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["too_many_records","timestamp_future","duplicate_reading","less_than_previous","invalid_identifiers","multiple_readings_found"]}}}]}}}},"InvalidRequestCreateMeterReadingFromSubmission":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["timestamp_future","less_than_previous","greater_than_subsequent"]}}}]}}}},"InvalidRequestCreateReadingWithMeter":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["missing_params","timestamp_future","less_than_previous","contract_period","greater_than_subsequent"]}}}]}}}},"InvalidRequestUpdateMeterReading":{"description":"The request could not be validated","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResp"},{"properties":{"reason":{"type":"string","enum":["missing_params","timestamp_future","less_than_previous","greater_than_subsequent"]}}}]}}}}},"securitySchemes":{"EpilotAuth":{"type":"http","scheme":"bearer","description":"Authorization header with ePilot OAuth2 bearer token","bearerFormat":"JWT"},"PortalAuth":{"type":"http","scheme":"bearer","description":"Authorization header with customer portal OAuth2 bearer token","bearerFormat":"JWT"},"EitherAuth":{"type":"http","scheme":"bearer","description":"Portal or Epilot Bearer Token"},"AsOrganization":{"type":"apiKey","in":"header","name":"x-ivy-org-id","description":"Set organization id as internal user"}},"schemas":{"ErrorResp":{"type":"object","properties":{"message":{"type":"string","description":"Error message"}}},"EntityId":{"type":"string","format":"uuid"},"EntitySlug":{"description":"URL-friendly identifier for the entity schema","type":"string","example":"contact"},"BaseEntity":{"type":"object","properties":{"_id":{"$ref":"#/components/schemas/EntityId","description":"Entity ID","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"_title":{"type":"string","description":"Title of the entity","example":"Example Entity"},"_org":{"type":"string","description":"Organization ID the entity belongs to","example":"123"},"_tags":{"type":"array","items":{"type":"string"},"description":"Array of entity tags","example":["example","mock"]},"_created_at":{"type":"string","format":"date-time","description":"Creation timestamp of the entity","example":"2021-02-09T12:41:43.662Z"},"_updated_at":{"type":"string","format":"date-time","description":"Last update timestamp of the entity","example":"2021-02-09T12:41:43.662Z"}},"required":["_id","_title","_org","_created_at","_updated_at"]},"Entity":{"type":"object","properties":{},"additionalProperties":true},"EntityItem":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"$ref":"#/components/schemas/Entity"}]},"Id":{"type":"string"},"EntityRelation":{"type":"object","properties":{"entity_id":{"$ref":"#/components/schemas/EntityId"},"_slug":{"type":"string","enum":["contact","contract"]}}},"Meter":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"type":"object","required":["_schema"],"properties":{"_schema":{"type":"string","enum":["meter"],"description":"The schema type of the meter"},"ma_lo_id":{"type":"string","example":"A09-123","description":"The MA-LO ID of the meter"},"status":{"type":"string","enum":["active","decommissioned"],"description":"The status of the meter"},"meter_type":{"type":"string","enum":["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"],"description":"The type of the meter"},"tariff_type":{"type":"string","example":"Peak load tariff","description":"The tariff type of the meter"},"meter_number":{"type":"string","example":"J-1093-1AK","description":"The number of the meter"},"sector":{"type":"string","enum":["power","water","gas","district_heating","waste_water"],"description":"The sector to which the meter belongs"},"location":{"type":"object","example":[{"country":"Germany","city":"Koln","postal_code":81475,"street":"Melatengürtel","street_number":71,"additional_info":"5. Etage","_tags":["billing","delivery"]}],"description":"The location information of the meter"},"used_for":{"type":"string","example":"Domestic Usage","description":"The usage purpose of the meter"},"manufacturer":{"type":"string","example":"Energy One","description":"The manufacturer of the meter"},"calibration_date":{"type":"string","example":"2022-10-10T00:00:00.000Z","description":"The calibration date of the meter"},"contract":{"type":"object","properties":{"$relation":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelation"}}},"description":"The contract associated with the meter"},"customer":{"type":"object","properties":{"$relation":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelation"}}},"description":"The customer associated with the meter"}}}]},"Direction":{"type":"string","enum":["feed-in","feed-out"]},"TariffType":{"type":"string","enum":["ht","nt"]},"Reason":{"type":"string","nullable":true,"description":"The reason for recording the reading\\nIf no reason is specified or left empty, the Epilot UI will show \'Regular\' as the default display text\\n","enum":["","regular","irregular","last","first","meter_change","contract_change","meter_adjustment"]},"ReasonString":{"type":"string","nullable":true,"deprecated":true,"description":"This field is deprecated. Please use the Reason enum instead.\\n"},"ReadBy":{"type":"string","nullable":true,"example":"John Doe","description":"The person who recorded the reading"},"ReadingStatus":{"type":"string","nullable":true,"enum":["valid","in-validation","implausible",null,""]},"Reading":{"type":"object","required":["value","source"],"properties":{"value":{"type":"number","example":240,"description":"The reading value of the meter"},"read_by":{"$ref":"#/components/schemas/ReadBy"},"reason":{"$ref":"#/components/schemas/Reason"},"meter_id":{"$ref":"#/components/schemas/EntityId","description":"The ID of the associated meter"},"counter_id":{"$ref":"#/components/schemas/EntityId","description":"The ID of the associated meter counter"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the reading (feed-in or feed-out)"},"timestamp":{"type":"string","description":"If the value is not provided, the system will be set with the time the request is processed.","example":"2022-10-10T00:00:00.000Z","format":"date-time"},"source":{"$ref":"#/components/schemas/Source","description":"The source of the reading"},"status":{"$ref":"#/components/schemas/ReadingStatus","description":"The status of the reading"},"external_id":{"type":"string","description":"The external ID of the reading"},"remark":{"type":"string","nullable":true,"description":"A remark or comment for the reading","example":"Customer reported unusual consumption"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional metadata for the reading","example":{"registration_id":"1234567890","business_unit":"ABC"}},"note":{"type":"string","description":"Notes to record a meter reading"},"unit":{"$ref":"#/components/schemas/Unit","description":"The unit of measurement for the reading"}}},"MeterReading":{"allOf":[{"$ref":"#/components/schemas/Reading"},{"required":["meter_id"]}]},"PortalMeterReading":{"allOf":[{"$ref":"#/components/schemas/Reading"},{"required":["counter_id"]}]},"UpdateMeterReading":{"type":"object","required":["value","meter_id","source"],"properties":{"value":{"type":"number","example":240,"description":"The reading value of the meter"},"read_by":{"$ref":"#/components/schemas/ReadBy"},"reason":{"$ref":"#/components/schemas/ReasonString"},"meter_id":{"$ref":"#/components/schemas/EntityId","description":"The ID of the associated meter"},"counter_id":{"$ref":"#/components/schemas/EntityId","description":"The ID of the associated meter counter"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the reading (feed-in or feed-out)"},"timestamp":{"type":"string","description":"If the value is not provided, the system will be set with the time the request is processed.","example":"2022-10-10T00:00:00.000Z","format":"date-time"},"source":{"$ref":"#/components/schemas/Source","description":"The source of the reading"},"status":{"$ref":"#/components/schemas/ReadingStatus","description":"The status of the reading"},"external_id":{"type":"string","description":"The external ID of the reading"},"remark":{"type":"string","nullable":true,"description":"A remark or comment for the reading","example":"Customer reported unusual consumption"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional metadata for the reading","example":{"registration_id":"1234567890","business_unit":"ABC"}}}},"MeterCounter":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"type":"object","required":["_schema"],"properties":{"_id":{"$ref":"#/components/schemas/EntityId"},"_schema":{"type":"string","enum":["meter_counter"]},"obis_number":{"type":"string","example":"A-34","description":"The OBIS number of the meter counter"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the meter counter"},"transformer_ratio":{"type":"number","example":70,"description":"The transformer ratio of the meter counter"},"unit":{"$ref":"#/components/schemas/Unit","description":"The unit of measurement for the meter counter"},"forecast_reading_value":{"type":"string","example":270,"description":"The forecast reading value of the meter counter"},"forecast_as_of":{"type":"string","example":"2022-12-10T00:00:00.000Z","description":"The date as of which the forecast reading value is applicable"},"current_consumption":{"type":"number","example":240,"description":"The current consumption value of the meter counter"},"last_reading":{"type":"string","example":"2022-10-10T00:00:00.000Z","description":"The timestamp of the last reading"},"conversion_factor":{"type":"number","example":3,"description":"The conversion factor for the meter counter"},"tariff_type":{"$ref":"#/components/schemas/TariffType","description":"The tariff type of the meter counter"}}}]},"CounterReadingOnSubmission":{"type":"object","required":["counterId","direction","value"],"properties":{"counterId":{"$ref":"#/components/schemas/Id","description":"The ID of the associated meter counter"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the reading (feed-in or feed-out)"},"unit":{"$ref":"#/components/schemas/Unit"},"value":{"type":"number","example":240,"description":"The reading value of the meter counter"}}},"SubmissionMeterReading":{"type":"object","required":["meterId"],"nullable":true,"properties":{"meterId":{"$ref":"#/components/schemas/Id","description":"The ID of the associated meter"},"readings":{"type":"array","items":{"$ref":"#/components/schemas/CounterReadingOnSubmission"},"description":"- The counter readings of a meter\\n- This is only sent when the user is authenticated while submitting a journey\\n"},"readingValue":{"type":"number","example":240,"description":"The reading value of the meter when the counterId is passed or when the meterType is one-tariff"},"readingDate":{"type":"string","description":"If the value is not provided, the system will be set with the time the request is processed.","example":"2022-10-10T10:10:00.000Z"},"readBy":{"type":"string","example":"John Doe","description":"The person who recorded the reading"},"reason":{"$ref":"#/components/schemas/Reason"},"maloId":{"type":"string","example":"A09-123","description":"The MA-LO ID of the meter"},"obisNumber":{"type":"string","example":"A-34","description":"The OBIS number of the meter counter"},"readingUnit":{"$ref":"#/components/schemas/Unit","description":"The unit of measurement for the reading"},"meterType":{"type":"string","enum":["one_tariff","two_tariff","bi_directional"],"description":"The type of the meter"},"feedInValue":{"type":"number","example":240,"description":"The feed-in value of the meter when meterType is one-tariff or bi-directional"},"feedOutValue":{"type":"number","example":240,"description":"The feed-out value of the meter when meterType is bi-directional"},"htValue":{"type":"number","example":240,"description":"The high-peak tariff value of the meter when meterType is two-tariff"},"ntValue":{"type":"number","example":240,"description":"The off-peak tariff value of the meter when meterType is two-tariff"}}},"Unit":{"type":"string"},"Source":{"type":"string","enum":["ECP","ERP","360","journey-submission"]},"ActionLabel":{"type":"object","properties":{"en":{"type":"string","nullable":true},"de":{"type":"string","nullable":true}}},"Rule":{"type":"object","properties":{"entity":{"type":"string","nullable":true},"attribute":{"type":"string","nullable":true},"attribute_value":{"type":"string","nullable":true}}},"JourneyActions":{"type":"object","properties":{"journey_id":{"type":"string","nullable":true},"action_label":{"type":"object","$ref":"#/components/schemas/ActionLabel","nullable":true},"slug":{"type":"string","nullable":true},"rules":{"type":"array","items":{"$ref":"#/components/schemas/Rule"},"nullable":true}}},"ReadingWithMeter":{"type":"object","properties":{"ma_lo_id":{"type":"string","example":"A09-123","description":"The MA-LO ID of the meter"},"meter_id":{"$ref":"#/components/schemas/Id","description":"The ID of the associated meter"},"obis_number":{"type":"string","example":"A-34","description":"The OBIS number of the meter counter"},"unit":{"$ref":"#/components/schemas/Unit","description":"The unit of measurement for the reading"},"direction":{"$ref":"#/components/schemas/Direction","description":"The direction of the reading"},"tariff_type":{"$ref":"#/components/schemas/TariffType","description":"The tariff type of the reading"},"value":{"type":"number","example":240,"description":"The reading value"},"read_by":{"$ref":"#/components/schemas/ReadBy"},"reason":{"$ref":"#/components/schemas/Reason"},"timestamp":{"type":"string","description":"If the value is not provided, the system will be set with the time the request is processed.","example":"2022-10-10T10:10:00.000Z"},"source":{"$ref":"#/components/schemas/Source","description":"The source of the reading"}}},"ActivityId":{"type":"string","format":"ulid","description":"See https://github.com/ulid/spec","example":"01F130Q52Q6MWSNS8N2AVXV4JN"}},"parameters":{"ActivityIdQueryParam":{"name":"activity_id","description":"Activity to include in event feed","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}},"SkipValidationQueryParam":{"name":"skip_validation","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"When set to true, all validations will be skipped and the system will allow the reading to be created.\\nIf set to false or not provided, the system performs the following validations:\\n Validation Rules (when not skipped)\\n - Previous Reading Check:\\n The new reading must be greater than the previous reading.\\n Example: If the previous reading is 100 and the new reading is 50, the system will reject it.\\n - Subsequent Reading Check\\n The new reading must be less than the next (subsequent) reading, if one exists.\\n Example: If a future reading for 2022-10-10 is 200, and you try to enter 250 for 2022-10-09, it will be rejected.\\n - Future Timestamp Check\\n The reading timestamp must be less than or equal to the current time.\\n Example: If the current time is 2022-10-10T20:00:00Z, a reading with timestamp 2022-10-11T20:00:00Z will not be accepted.\\n - Duplicate Check\\n A reading is not allowed if there\'s already a record with the same meter_id, counter_id, and timestamp`.\\n - Update Check\\n When updating a reading, the system will look for an existing record with the same meter_id, counter_id, and timestamp.\\n If no such record exists, it won\'t throw an error — the update simply won\'t take effect.\\n"}}},"servers":[{"url":"https://metering.sls.epilot.io"}]}')}},t={},r=function r(n){var s=t[n];if(void 0!==s)return s.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}(914),n=exports;for(var s in r)n[s]=r[s];r.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})})();
|
package/dist/openapi.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ declare namespace Components {
|
|
|
45
45
|
* Error message
|
|
46
46
|
*/
|
|
47
47
|
message?: string;
|
|
48
|
-
reason?: "too_many_records" | "timestamp_future" | "duplicate_reading" | "less_than_previous";
|
|
48
|
+
reason?: "too_many_records" | "timestamp_future" | "duplicate_reading" | "less_than_previous" | "invalid_identifiers" | "multiple_readings_found";
|
|
49
49
|
}
|
|
50
50
|
export interface InvalidRequestCreateReadingWithMeter {
|
|
51
51
|
/**
|
|
@@ -132,10 +132,7 @@ declare namespace Components {
|
|
|
132
132
|
* The direction of the reading (feed-in or feed-out)
|
|
133
133
|
*/
|
|
134
134
|
direction: Direction;
|
|
135
|
-
|
|
136
|
-
* The unit of measurement for the reading
|
|
137
|
-
*/
|
|
138
|
-
unit?: "w" | "wh" | "kw" | "kWh" | "kvarh" | "mw" | "mWh" | "unit" | "cubic-meter" | "hour" | "day" | "month" | "year" | "percentage";
|
|
135
|
+
unit?: Unit;
|
|
139
136
|
/**
|
|
140
137
|
* The reading value of the meter counter
|
|
141
138
|
* example:
|
|
@@ -426,14 +423,134 @@ declare namespace Components {
|
|
|
426
423
|
ReadBy;
|
|
427
424
|
reason?: /**
|
|
428
425
|
* The reason for recording the reading
|
|
426
|
+
* If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
|
|
427
|
+
*
|
|
428
|
+
*/
|
|
429
|
+
Reason;
|
|
430
|
+
meter_id: EntityId /* uuid */;
|
|
431
|
+
counter_id?: EntityId /* uuid */;
|
|
432
|
+
direction?: Direction;
|
|
433
|
+
/**
|
|
434
|
+
* If the value is not provided, the system will be set with the time the request is processed.
|
|
435
|
+
* example:
|
|
436
|
+
* 2022-10-10T00:00:00.000Z
|
|
437
|
+
*/
|
|
438
|
+
timestamp?: string; // date-time
|
|
439
|
+
source: Source;
|
|
440
|
+
status?: ReadingStatus;
|
|
441
|
+
/**
|
|
442
|
+
* The external ID of the reading
|
|
443
|
+
*/
|
|
444
|
+
external_id?: string;
|
|
445
|
+
/**
|
|
446
|
+
* A remark or comment for the reading
|
|
447
|
+
* example:
|
|
448
|
+
* Customer reported unusual consumption
|
|
449
|
+
*/
|
|
450
|
+
remark?: string | null;
|
|
451
|
+
/**
|
|
452
|
+
* Additional metadata for the reading
|
|
453
|
+
* example:
|
|
454
|
+
* {
|
|
455
|
+
* "registration_id": "1234567890",
|
|
456
|
+
* "business_unit": "ABC"
|
|
457
|
+
* }
|
|
458
|
+
*/
|
|
459
|
+
metadata?: {
|
|
460
|
+
[name: string]: string;
|
|
461
|
+
};
|
|
462
|
+
/**
|
|
463
|
+
* Notes to record a meter reading
|
|
464
|
+
*/
|
|
465
|
+
note?: string;
|
|
466
|
+
unit?: Unit;
|
|
467
|
+
}
|
|
468
|
+
export interface PortalMeterReading {
|
|
469
|
+
/**
|
|
470
|
+
* The reading value of the meter
|
|
471
|
+
* example:
|
|
472
|
+
* 240
|
|
473
|
+
*/
|
|
474
|
+
value: number;
|
|
475
|
+
read_by?: /**
|
|
476
|
+
* The person who recorded the reading
|
|
429
477
|
* example:
|
|
430
|
-
*
|
|
478
|
+
* John Doe
|
|
479
|
+
*/
|
|
480
|
+
ReadBy;
|
|
481
|
+
reason?: /**
|
|
482
|
+
* The reason for recording the reading
|
|
483
|
+
* If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
|
|
484
|
+
*
|
|
485
|
+
*/
|
|
486
|
+
Reason;
|
|
487
|
+
meter_id?: EntityId /* uuid */;
|
|
488
|
+
counter_id: EntityId /* uuid */;
|
|
489
|
+
direction?: Direction;
|
|
490
|
+
/**
|
|
491
|
+
* If the value is not provided, the system will be set with the time the request is processed.
|
|
492
|
+
* example:
|
|
493
|
+
* 2022-10-10T00:00:00.000Z
|
|
494
|
+
*/
|
|
495
|
+
timestamp?: string; // date-time
|
|
496
|
+
source: Source;
|
|
497
|
+
status?: ReadingStatus;
|
|
498
|
+
/**
|
|
499
|
+
* The external ID of the reading
|
|
500
|
+
*/
|
|
501
|
+
external_id?: string;
|
|
502
|
+
/**
|
|
503
|
+
* A remark or comment for the reading
|
|
504
|
+
* example:
|
|
505
|
+
* Customer reported unusual consumption
|
|
506
|
+
*/
|
|
507
|
+
remark?: string | null;
|
|
508
|
+
/**
|
|
509
|
+
* Additional metadata for the reading
|
|
510
|
+
* example:
|
|
511
|
+
* {
|
|
512
|
+
* "registration_id": "1234567890",
|
|
513
|
+
* "business_unit": "ABC"
|
|
514
|
+
* }
|
|
515
|
+
*/
|
|
516
|
+
metadata?: {
|
|
517
|
+
[name: string]: string;
|
|
518
|
+
};
|
|
519
|
+
/**
|
|
520
|
+
* Notes to record a meter reading
|
|
521
|
+
*/
|
|
522
|
+
note?: string;
|
|
523
|
+
unit?: Unit;
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* The person who recorded the reading
|
|
527
|
+
* example:
|
|
528
|
+
* John Doe
|
|
529
|
+
*/
|
|
530
|
+
export type ReadBy = string | null;
|
|
531
|
+
export interface Reading {
|
|
532
|
+
/**
|
|
533
|
+
* The reading value of the meter
|
|
534
|
+
* example:
|
|
535
|
+
* 240
|
|
536
|
+
*/
|
|
537
|
+
value: number;
|
|
538
|
+
read_by?: /**
|
|
539
|
+
* The person who recorded the reading
|
|
540
|
+
* example:
|
|
541
|
+
* John Doe
|
|
542
|
+
*/
|
|
543
|
+
ReadBy;
|
|
544
|
+
reason?: /**
|
|
545
|
+
* The reason for recording the reading
|
|
546
|
+
* If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
|
|
547
|
+
*
|
|
431
548
|
*/
|
|
432
549
|
Reason;
|
|
433
550
|
/**
|
|
434
551
|
* The ID of the associated meter
|
|
435
552
|
*/
|
|
436
|
-
meter_id
|
|
553
|
+
meter_id?: EntityId /* uuid */;
|
|
437
554
|
/**
|
|
438
555
|
* The ID of the associated meter counter
|
|
439
556
|
*/
|
|
@@ -447,7 +564,7 @@ declare namespace Components {
|
|
|
447
564
|
* example:
|
|
448
565
|
* 2022-10-10T00:00:00.000Z
|
|
449
566
|
*/
|
|
450
|
-
timestamp?: string;
|
|
567
|
+
timestamp?: string; // date-time
|
|
451
568
|
/**
|
|
452
569
|
* The source of the reading
|
|
453
570
|
*/
|
|
@@ -456,13 +573,36 @@ declare namespace Components {
|
|
|
456
573
|
* The status of the reading
|
|
457
574
|
*/
|
|
458
575
|
status?: ReadingStatus;
|
|
576
|
+
/**
|
|
577
|
+
* The external ID of the reading
|
|
578
|
+
*/
|
|
579
|
+
external_id?: string;
|
|
580
|
+
/**
|
|
581
|
+
* A remark or comment for the reading
|
|
582
|
+
* example:
|
|
583
|
+
* Customer reported unusual consumption
|
|
584
|
+
*/
|
|
585
|
+
remark?: string | null;
|
|
586
|
+
/**
|
|
587
|
+
* Additional metadata for the reading
|
|
588
|
+
* example:
|
|
589
|
+
* {
|
|
590
|
+
* "registration_id": "1234567890",
|
|
591
|
+
* "business_unit": "ABC"
|
|
592
|
+
* }
|
|
593
|
+
*/
|
|
594
|
+
metadata?: {
|
|
595
|
+
[name: string]: string;
|
|
596
|
+
};
|
|
597
|
+
/**
|
|
598
|
+
* Notes to record a meter reading
|
|
599
|
+
*/
|
|
600
|
+
note?: string;
|
|
601
|
+
/**
|
|
602
|
+
* The unit of measurement for the reading
|
|
603
|
+
*/
|
|
604
|
+
unit?: Unit;
|
|
459
605
|
}
|
|
460
|
-
/**
|
|
461
|
-
* The person who recorded the reading
|
|
462
|
-
* example:
|
|
463
|
-
* John Doe
|
|
464
|
-
*/
|
|
465
|
-
export type ReadBy = string | null;
|
|
466
606
|
export type ReadingStatus = "valid" | "in-validation" | "implausible" | null | "";
|
|
467
607
|
export interface ReadingWithMeter {
|
|
468
608
|
/**
|
|
@@ -507,8 +647,8 @@ declare namespace Components {
|
|
|
507
647
|
ReadBy;
|
|
508
648
|
reason?: /**
|
|
509
649
|
* The reason for recording the reading
|
|
510
|
-
*
|
|
511
|
-
*
|
|
650
|
+
* If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
|
|
651
|
+
*
|
|
512
652
|
*/
|
|
513
653
|
Reason;
|
|
514
654
|
/**
|
|
@@ -524,10 +664,15 @@ declare namespace Components {
|
|
|
524
664
|
}
|
|
525
665
|
/**
|
|
526
666
|
* The reason for recording the reading
|
|
527
|
-
*
|
|
528
|
-
*
|
|
667
|
+
* If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
|
|
668
|
+
*
|
|
529
669
|
*/
|
|
530
|
-
export type Reason =
|
|
670
|
+
export type Reason = "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment";
|
|
671
|
+
/**
|
|
672
|
+
* This field is deprecated. Please use the Reason enum instead.
|
|
673
|
+
*
|
|
674
|
+
*/
|
|
675
|
+
export type ReasonString = string | null;
|
|
531
676
|
export interface Rule {
|
|
532
677
|
entity?: string | null;
|
|
533
678
|
attribute?: string | null;
|
|
@@ -565,8 +710,8 @@ declare namespace Components {
|
|
|
565
710
|
readBy?: string;
|
|
566
711
|
reason?: /**
|
|
567
712
|
* The reason for recording the reading
|
|
568
|
-
*
|
|
569
|
-
*
|
|
713
|
+
* If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
|
|
714
|
+
*
|
|
570
715
|
*/
|
|
571
716
|
Reason;
|
|
572
717
|
/**
|
|
@@ -615,7 +760,73 @@ declare namespace Components {
|
|
|
615
760
|
ntValue?: number;
|
|
616
761
|
} | null;
|
|
617
762
|
export type TariffType = "ht" | "nt";
|
|
618
|
-
export type Unit =
|
|
763
|
+
export type Unit = string;
|
|
764
|
+
export interface UpdateMeterReading {
|
|
765
|
+
/**
|
|
766
|
+
* The reading value of the meter
|
|
767
|
+
* example:
|
|
768
|
+
* 240
|
|
769
|
+
*/
|
|
770
|
+
value: number;
|
|
771
|
+
read_by?: /**
|
|
772
|
+
* The person who recorded the reading
|
|
773
|
+
* example:
|
|
774
|
+
* John Doe
|
|
775
|
+
*/
|
|
776
|
+
ReadBy;
|
|
777
|
+
reason?: /**
|
|
778
|
+
* This field is deprecated. Please use the Reason enum instead.
|
|
779
|
+
*
|
|
780
|
+
*/
|
|
781
|
+
ReasonString;
|
|
782
|
+
/**
|
|
783
|
+
* The ID of the associated meter
|
|
784
|
+
*/
|
|
785
|
+
meter_id: EntityId /* uuid */;
|
|
786
|
+
/**
|
|
787
|
+
* The ID of the associated meter counter
|
|
788
|
+
*/
|
|
789
|
+
counter_id?: EntityId /* uuid */;
|
|
790
|
+
/**
|
|
791
|
+
* The direction of the reading (feed-in or feed-out)
|
|
792
|
+
*/
|
|
793
|
+
direction?: Direction;
|
|
794
|
+
/**
|
|
795
|
+
* If the value is not provided, the system will be set with the time the request is processed.
|
|
796
|
+
* example:
|
|
797
|
+
* 2022-10-10T00:00:00.000Z
|
|
798
|
+
*/
|
|
799
|
+
timestamp?: string; // date-time
|
|
800
|
+
/**
|
|
801
|
+
* The source of the reading
|
|
802
|
+
*/
|
|
803
|
+
source: Source;
|
|
804
|
+
/**
|
|
805
|
+
* The status of the reading
|
|
806
|
+
*/
|
|
807
|
+
status?: ReadingStatus;
|
|
808
|
+
/**
|
|
809
|
+
* The external ID of the reading
|
|
810
|
+
*/
|
|
811
|
+
external_id?: string;
|
|
812
|
+
/**
|
|
813
|
+
* A remark or comment for the reading
|
|
814
|
+
* example:
|
|
815
|
+
* Customer reported unusual consumption
|
|
816
|
+
*/
|
|
817
|
+
remark?: string | null;
|
|
818
|
+
/**
|
|
819
|
+
* Additional metadata for the reading
|
|
820
|
+
* example:
|
|
821
|
+
* {
|
|
822
|
+
* "registration_id": "1234567890",
|
|
823
|
+
* "business_unit": "ABC"
|
|
824
|
+
* }
|
|
825
|
+
*/
|
|
826
|
+
metadata?: {
|
|
827
|
+
[name: string]: string;
|
|
828
|
+
};
|
|
829
|
+
}
|
|
619
830
|
}
|
|
620
831
|
}
|
|
621
832
|
declare namespace Paths {
|
|
@@ -636,6 +847,15 @@ declare namespace Paths {
|
|
|
636
847
|
activity_id?: Parameters.ActivityId;
|
|
637
848
|
}
|
|
638
849
|
export interface RequestBody {
|
|
850
|
+
/**
|
|
851
|
+
* - By default, the system will use combination of counter_id, meter_id, direction, and timestamp to identify a meter reading.
|
|
852
|
+
* - Additional identifiers can be provided to identify a meter reading uniquely.
|
|
853
|
+
* - Example:
|
|
854
|
+
* - ["metadata.registration_id", "metadata.business_unit"]
|
|
855
|
+
* - ["metadata.registration_id", "metadata.business_unit", "external_id"]
|
|
856
|
+
*
|
|
857
|
+
*/
|
|
858
|
+
identifiers?: string[];
|
|
639
859
|
readings?: {
|
|
640
860
|
/**
|
|
641
861
|
* The reading value of the meter
|
|
@@ -651,8 +871,8 @@ declare namespace Paths {
|
|
|
651
871
|
Components.Schemas.ReadBy;
|
|
652
872
|
reason?: /**
|
|
653
873
|
* The reason for recording the reading
|
|
654
|
-
*
|
|
655
|
-
*
|
|
874
|
+
* If no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text
|
|
875
|
+
*
|
|
656
876
|
*/
|
|
657
877
|
Components.Schemas.Reason;
|
|
658
878
|
meter_id: Components.Schemas.EntityId /* uuid */;
|
|
@@ -663,9 +883,35 @@ declare namespace Paths {
|
|
|
663
883
|
* example:
|
|
664
884
|
* 2022-10-10T00:00:00.000Z
|
|
665
885
|
*/
|
|
666
|
-
timestamp?: string;
|
|
886
|
+
timestamp?: string; // date-time
|
|
667
887
|
source: Components.Schemas.Source;
|
|
668
888
|
status?: Components.Schemas.ReadingStatus;
|
|
889
|
+
/**
|
|
890
|
+
* The external ID of the reading
|
|
891
|
+
*/
|
|
892
|
+
external_id?: string;
|
|
893
|
+
/**
|
|
894
|
+
* A remark or comment for the reading
|
|
895
|
+
* example:
|
|
896
|
+
* Customer reported unusual consumption
|
|
897
|
+
*/
|
|
898
|
+
remark?: string | null;
|
|
899
|
+
/**
|
|
900
|
+
* Additional metadata for the reading
|
|
901
|
+
* example:
|
|
902
|
+
* {
|
|
903
|
+
* "registration_id": "1234567890",
|
|
904
|
+
* "business_unit": "ABC"
|
|
905
|
+
* }
|
|
906
|
+
*/
|
|
907
|
+
metadata?: {
|
|
908
|
+
[name: string]: string;
|
|
909
|
+
};
|
|
910
|
+
/**
|
|
911
|
+
* Notes to record a meter reading
|
|
912
|
+
*/
|
|
913
|
+
note?: string;
|
|
914
|
+
unit?: Components.Schemas.Unit;
|
|
669
915
|
operation?: "create" | "update" | "delete";
|
|
670
916
|
}[];
|
|
671
917
|
}
|
|
@@ -750,6 +996,26 @@ declare namespace Paths {
|
|
|
750
996
|
export type $500 = Components.Responses.InternalServerError;
|
|
751
997
|
}
|
|
752
998
|
}
|
|
999
|
+
namespace CreatePortalMeterReadings {
|
|
1000
|
+
namespace Parameters {
|
|
1001
|
+
export type MeterId = Components.Schemas.Id;
|
|
1002
|
+
}
|
|
1003
|
+
export interface PathParameters {
|
|
1004
|
+
meter_id: Parameters.MeterId;
|
|
1005
|
+
}
|
|
1006
|
+
export interface RequestBody {
|
|
1007
|
+
readings?: Components.Schemas.PortalMeterReading[];
|
|
1008
|
+
}
|
|
1009
|
+
namespace Responses {
|
|
1010
|
+
export interface $200 {
|
|
1011
|
+
data?: Components.Schemas.MeterReading[];
|
|
1012
|
+
}
|
|
1013
|
+
export type $400 = Components.Responses.InvalidRequestCreateMeterReadings;
|
|
1014
|
+
export type $401 = Components.Responses.Unauthorized;
|
|
1015
|
+
export type $403 = Components.Responses.Forbidden;
|
|
1016
|
+
export type $500 = Components.Responses.InternalServerError;
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
753
1019
|
namespace CreateReadingWithMeter {
|
|
754
1020
|
export type RequestBody = Components.Schemas.ReadingWithMeter;
|
|
755
1021
|
namespace Responses {
|
|
@@ -1172,7 +1438,7 @@ declare namespace Paths {
|
|
|
1172
1438
|
*/
|
|
1173
1439
|
Parameters.Timestamp;
|
|
1174
1440
|
}
|
|
1175
|
-
export type RequestBody = Components.Schemas.
|
|
1441
|
+
export type RequestBody = Components.Schemas.UpdateMeterReading;
|
|
1176
1442
|
namespace Responses {
|
|
1177
1443
|
export interface $200 {
|
|
1178
1444
|
data?: Components.Schemas.MeterReading;
|
|
@@ -1185,7 +1451,6 @@ declare namespace Paths {
|
|
|
1185
1451
|
}
|
|
1186
1452
|
}
|
|
1187
1453
|
|
|
1188
|
-
|
|
1189
1454
|
export interface OperationMethods {
|
|
1190
1455
|
/**
|
|
1191
1456
|
* getCustomerMeters - Get Customer Meters
|
|
@@ -1267,6 +1532,16 @@ export interface OperationMethods {
|
|
|
1267
1532
|
data?: Paths.CreateMeterReadings.RequestBody,
|
|
1268
1533
|
config?: AxiosRequestConfig
|
|
1269
1534
|
): OperationResponse<Paths.CreateMeterReadings.Responses.$200>
|
|
1535
|
+
/**
|
|
1536
|
+
* createPortalMeterReadings - createPortalMeterReadings
|
|
1537
|
+
*
|
|
1538
|
+
* Inserts multiple meter readings at once for a given meter. Limited to 2 readings per request.
|
|
1539
|
+
*/
|
|
1540
|
+
'createPortalMeterReadings'(
|
|
1541
|
+
parameters?: Parameters<Paths.CreatePortalMeterReadings.PathParameters> | null,
|
|
1542
|
+
data?: Paths.CreatePortalMeterReadings.RequestBody,
|
|
1543
|
+
config?: AxiosRequestConfig
|
|
1544
|
+
): OperationResponse<Paths.CreatePortalMeterReadings.Responses.$200>
|
|
1270
1545
|
/**
|
|
1271
1546
|
* batchWriteMeterReadings - Batch Write Readings
|
|
1272
1547
|
*
|
|
@@ -1437,6 +1712,18 @@ export interface PathsDictionary {
|
|
|
1437
1712
|
config?: AxiosRequestConfig
|
|
1438
1713
|
): OperationResponse<Paths.CreateMeterReadings.Responses.$200>
|
|
1439
1714
|
}
|
|
1715
|
+
['/v1/metering/readings/{meter_id}']: {
|
|
1716
|
+
/**
|
|
1717
|
+
* createPortalMeterReadings - createPortalMeterReadings
|
|
1718
|
+
*
|
|
1719
|
+
* Inserts multiple meter readings at once for a given meter. Limited to 2 readings per request.
|
|
1720
|
+
*/
|
|
1721
|
+
'post'(
|
|
1722
|
+
parameters?: Parameters<Paths.CreatePortalMeterReadings.PathParameters> | null,
|
|
1723
|
+
data?: Paths.CreatePortalMeterReadings.RequestBody,
|
|
1724
|
+
config?: AxiosRequestConfig
|
|
1725
|
+
): OperationResponse<Paths.CreatePortalMeterReadings.Responses.$200>
|
|
1726
|
+
}
|
|
1440
1727
|
['/v2/metering/readings']: {
|
|
1441
1728
|
/**
|
|
1442
1729
|
* batchWriteMeterReadings - Batch Write Readings
|
|
@@ -1524,7 +1811,6 @@ export interface PathsDictionary {
|
|
|
1524
1811
|
|
|
1525
1812
|
export type Client = OpenAPIClient<OperationMethods, PathsDictionary>
|
|
1526
1813
|
|
|
1527
|
-
|
|
1528
1814
|
export type ActionLabel = Components.Schemas.ActionLabel;
|
|
1529
1815
|
export type ActivityId = Components.Schemas.ActivityId;
|
|
1530
1816
|
export type BaseEntity = Components.Schemas.BaseEntity;
|
|
@@ -1541,12 +1827,16 @@ export type JourneyActions = Components.Schemas.JourneyActions;
|
|
|
1541
1827
|
export type Meter = Components.Schemas.Meter;
|
|
1542
1828
|
export type MeterCounter = Components.Schemas.MeterCounter;
|
|
1543
1829
|
export type MeterReading = Components.Schemas.MeterReading;
|
|
1830
|
+
export type PortalMeterReading = Components.Schemas.PortalMeterReading;
|
|
1544
1831
|
export type ReadBy = Components.Schemas.ReadBy;
|
|
1832
|
+
export type Reading = Components.Schemas.Reading;
|
|
1545
1833
|
export type ReadingStatus = Components.Schemas.ReadingStatus;
|
|
1546
1834
|
export type ReadingWithMeter = Components.Schemas.ReadingWithMeter;
|
|
1547
1835
|
export type Reason = Components.Schemas.Reason;
|
|
1836
|
+
export type ReasonString = Components.Schemas.ReasonString;
|
|
1548
1837
|
export type Rule = Components.Schemas.Rule;
|
|
1549
1838
|
export type Source = Components.Schemas.Source;
|
|
1550
1839
|
export type SubmissionMeterReading = Components.Schemas.SubmissionMeterReading;
|
|
1551
1840
|
export type TariffType = Components.Schemas.TariffType;
|
|
1552
1841
|
export type Unit = Components.Schemas.Unit;
|
|
1842
|
+
export type UpdateMeterReading = Components.Schemas.UpdateMeterReading;
|
package/dist/openapi.json
CHANGED
|
@@ -567,6 +567,83 @@
|
|
|
567
567
|
}
|
|
568
568
|
}
|
|
569
569
|
},
|
|
570
|
+
"/v1/metering/readings/{meter_id}": {
|
|
571
|
+
"post": {
|
|
572
|
+
"operationId": "createPortalMeterReadings",
|
|
573
|
+
"summary": "createPortalMeterReadings",
|
|
574
|
+
"description": "Inserts multiple meter readings at once for a given meter. Limited to 2 readings per request.",
|
|
575
|
+
"tags": [
|
|
576
|
+
"ECP"
|
|
577
|
+
],
|
|
578
|
+
"security": [
|
|
579
|
+
{
|
|
580
|
+
"PortalAuth": []
|
|
581
|
+
}
|
|
582
|
+
],
|
|
583
|
+
"parameters": [
|
|
584
|
+
{
|
|
585
|
+
"in": "path",
|
|
586
|
+
"name": "meter_id",
|
|
587
|
+
"schema": {
|
|
588
|
+
"$ref": "#/components/schemas/Id"
|
|
589
|
+
},
|
|
590
|
+
"required": true,
|
|
591
|
+
"description": "The ID of the meter."
|
|
592
|
+
}
|
|
593
|
+
],
|
|
594
|
+
"requestBody": {
|
|
595
|
+
"description": "Meter readings payload. Limited to 2 readings per request.",
|
|
596
|
+
"required": true,
|
|
597
|
+
"content": {
|
|
598
|
+
"application/json": {
|
|
599
|
+
"schema": {
|
|
600
|
+
"type": "object",
|
|
601
|
+
"properties": {
|
|
602
|
+
"readings": {
|
|
603
|
+
"type": "array",
|
|
604
|
+
"items": {
|
|
605
|
+
"$ref": "#/components/schemas/PortalMeterReading"
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
"responses": {
|
|
614
|
+
"200": {
|
|
615
|
+
"description": "Meter readings created successfully.",
|
|
616
|
+
"content": {
|
|
617
|
+
"application/json": {
|
|
618
|
+
"schema": {
|
|
619
|
+
"type": "object",
|
|
620
|
+
"properties": {
|
|
621
|
+
"data": {
|
|
622
|
+
"type": "array",
|
|
623
|
+
"items": {
|
|
624
|
+
"$ref": "#/components/schemas/MeterReading"
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
},
|
|
632
|
+
"400": {
|
|
633
|
+
"$ref": "#/components/responses/InvalidRequestCreateMeterReadings"
|
|
634
|
+
},
|
|
635
|
+
"401": {
|
|
636
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
637
|
+
},
|
|
638
|
+
"403": {
|
|
639
|
+
"$ref": "#/components/responses/Forbidden"
|
|
640
|
+
},
|
|
641
|
+
"500": {
|
|
642
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
},
|
|
570
647
|
"/v2/metering/readings": {
|
|
571
648
|
"post": {
|
|
572
649
|
"operationId": "batchWriteMeterReadings",
|
|
@@ -606,6 +683,14 @@
|
|
|
606
683
|
"schema": {
|
|
607
684
|
"type": "object",
|
|
608
685
|
"properties": {
|
|
686
|
+
"identifiers": {
|
|
687
|
+
"type": "array",
|
|
688
|
+
"items": {
|
|
689
|
+
"type": "string",
|
|
690
|
+
"description": "The identifier of the meter reading."
|
|
691
|
+
},
|
|
692
|
+
"description": "- By default, the system will use combination of counter_id, meter_id, direction, and timestamp to identify a meter reading.\n- Additional identifiers can be provided to identify a meter reading uniquely.\n- Example:\n - [\"metadata.registration_id\", \"metadata.business_unit\"]\n - [\"metadata.registration_id\", \"metadata.business_unit\", \"external_id\"]\n"
|
|
693
|
+
},
|
|
609
694
|
"readings": {
|
|
610
695
|
"type": "array",
|
|
611
696
|
"items": {
|
|
@@ -1088,7 +1173,7 @@
|
|
|
1088
1173
|
"content": {
|
|
1089
1174
|
"application/json": {
|
|
1090
1175
|
"schema": {
|
|
1091
|
-
"$ref": "#/components/schemas/
|
|
1176
|
+
"$ref": "#/components/schemas/UpdateMeterReading"
|
|
1092
1177
|
}
|
|
1093
1178
|
}
|
|
1094
1179
|
}
|
|
@@ -1332,7 +1417,9 @@
|
|
|
1332
1417
|
"too_many_records",
|
|
1333
1418
|
"timestamp_future",
|
|
1334
1419
|
"duplicate_reading",
|
|
1335
|
-
"less_than_previous"
|
|
1420
|
+
"less_than_previous",
|
|
1421
|
+
"invalid_identifiers",
|
|
1422
|
+
"multiple_readings_found"
|
|
1336
1423
|
]
|
|
1337
1424
|
}
|
|
1338
1425
|
}
|
|
@@ -1699,8 +1786,23 @@
|
|
|
1699
1786
|
"Reason": {
|
|
1700
1787
|
"type": "string",
|
|
1701
1788
|
"nullable": true,
|
|
1702
|
-
"
|
|
1703
|
-
"
|
|
1789
|
+
"description": "The reason for recording the reading\nIf no reason is specified or left empty, the Epilot UI will show 'Regular' as the default display text\n",
|
|
1790
|
+
"enum": [
|
|
1791
|
+
"",
|
|
1792
|
+
"regular",
|
|
1793
|
+
"irregular",
|
|
1794
|
+
"last",
|
|
1795
|
+
"first",
|
|
1796
|
+
"meter_change",
|
|
1797
|
+
"contract_change",
|
|
1798
|
+
"meter_adjustment"
|
|
1799
|
+
]
|
|
1800
|
+
},
|
|
1801
|
+
"ReasonString": {
|
|
1802
|
+
"type": "string",
|
|
1803
|
+
"nullable": true,
|
|
1804
|
+
"deprecated": true,
|
|
1805
|
+
"description": "This field is deprecated. Please use the Reason enum instead.\n"
|
|
1704
1806
|
},
|
|
1705
1807
|
"ReadBy": {
|
|
1706
1808
|
"type": "string",
|
|
@@ -1719,7 +1821,106 @@
|
|
|
1719
1821
|
""
|
|
1720
1822
|
]
|
|
1721
1823
|
},
|
|
1824
|
+
"Reading": {
|
|
1825
|
+
"type": "object",
|
|
1826
|
+
"required": [
|
|
1827
|
+
"value",
|
|
1828
|
+
"source"
|
|
1829
|
+
],
|
|
1830
|
+
"properties": {
|
|
1831
|
+
"value": {
|
|
1832
|
+
"type": "number",
|
|
1833
|
+
"example": 240,
|
|
1834
|
+
"description": "The reading value of the meter"
|
|
1835
|
+
},
|
|
1836
|
+
"read_by": {
|
|
1837
|
+
"$ref": "#/components/schemas/ReadBy"
|
|
1838
|
+
},
|
|
1839
|
+
"reason": {
|
|
1840
|
+
"$ref": "#/components/schemas/Reason"
|
|
1841
|
+
},
|
|
1842
|
+
"meter_id": {
|
|
1843
|
+
"$ref": "#/components/schemas/EntityId",
|
|
1844
|
+
"description": "The ID of the associated meter"
|
|
1845
|
+
},
|
|
1846
|
+
"counter_id": {
|
|
1847
|
+
"$ref": "#/components/schemas/EntityId",
|
|
1848
|
+
"description": "The ID of the associated meter counter"
|
|
1849
|
+
},
|
|
1850
|
+
"direction": {
|
|
1851
|
+
"$ref": "#/components/schemas/Direction",
|
|
1852
|
+
"description": "The direction of the reading (feed-in or feed-out)"
|
|
1853
|
+
},
|
|
1854
|
+
"timestamp": {
|
|
1855
|
+
"type": "string",
|
|
1856
|
+
"description": "If the value is not provided, the system will be set with the time the request is processed.",
|
|
1857
|
+
"example": "2022-10-10T00:00:00.000Z",
|
|
1858
|
+
"format": "date-time"
|
|
1859
|
+
},
|
|
1860
|
+
"source": {
|
|
1861
|
+
"$ref": "#/components/schemas/Source",
|
|
1862
|
+
"description": "The source of the reading"
|
|
1863
|
+
},
|
|
1864
|
+
"status": {
|
|
1865
|
+
"$ref": "#/components/schemas/ReadingStatus",
|
|
1866
|
+
"description": "The status of the reading"
|
|
1867
|
+
},
|
|
1868
|
+
"external_id": {
|
|
1869
|
+
"type": "string",
|
|
1870
|
+
"description": "The external ID of the reading"
|
|
1871
|
+
},
|
|
1872
|
+
"remark": {
|
|
1873
|
+
"type": "string",
|
|
1874
|
+
"nullable": true,
|
|
1875
|
+
"description": "A remark or comment for the reading",
|
|
1876
|
+
"example": "Customer reported unusual consumption"
|
|
1877
|
+
},
|
|
1878
|
+
"metadata": {
|
|
1879
|
+
"type": "object",
|
|
1880
|
+
"additionalProperties": {
|
|
1881
|
+
"type": "string"
|
|
1882
|
+
},
|
|
1883
|
+
"description": "Additional metadata for the reading",
|
|
1884
|
+
"example": {
|
|
1885
|
+
"registration_id": "1234567890",
|
|
1886
|
+
"business_unit": "ABC"
|
|
1887
|
+
}
|
|
1888
|
+
},
|
|
1889
|
+
"note": {
|
|
1890
|
+
"type": "string",
|
|
1891
|
+
"description": "Notes to record a meter reading"
|
|
1892
|
+
},
|
|
1893
|
+
"unit": {
|
|
1894
|
+
"$ref": "#/components/schemas/Unit",
|
|
1895
|
+
"description": "The unit of measurement for the reading"
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
},
|
|
1722
1899
|
"MeterReading": {
|
|
1900
|
+
"allOf": [
|
|
1901
|
+
{
|
|
1902
|
+
"$ref": "#/components/schemas/Reading"
|
|
1903
|
+
},
|
|
1904
|
+
{
|
|
1905
|
+
"required": [
|
|
1906
|
+
"meter_id"
|
|
1907
|
+
]
|
|
1908
|
+
}
|
|
1909
|
+
]
|
|
1910
|
+
},
|
|
1911
|
+
"PortalMeterReading": {
|
|
1912
|
+
"allOf": [
|
|
1913
|
+
{
|
|
1914
|
+
"$ref": "#/components/schemas/Reading"
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
"required": [
|
|
1918
|
+
"counter_id"
|
|
1919
|
+
]
|
|
1920
|
+
}
|
|
1921
|
+
]
|
|
1922
|
+
},
|
|
1923
|
+
"UpdateMeterReading": {
|
|
1723
1924
|
"type": "object",
|
|
1724
1925
|
"required": [
|
|
1725
1926
|
"value",
|
|
@@ -1736,7 +1937,7 @@
|
|
|
1736
1937
|
"$ref": "#/components/schemas/ReadBy"
|
|
1737
1938
|
},
|
|
1738
1939
|
"reason": {
|
|
1739
|
-
"$ref": "#/components/schemas/
|
|
1940
|
+
"$ref": "#/components/schemas/ReasonString"
|
|
1740
1941
|
},
|
|
1741
1942
|
"meter_id": {
|
|
1742
1943
|
"$ref": "#/components/schemas/EntityId",
|
|
@@ -1753,7 +1954,8 @@
|
|
|
1753
1954
|
"timestamp": {
|
|
1754
1955
|
"type": "string",
|
|
1755
1956
|
"description": "If the value is not provided, the system will be set with the time the request is processed.",
|
|
1756
|
-
"example": "2022-10-10T00:00:00.000Z"
|
|
1957
|
+
"example": "2022-10-10T00:00:00.000Z",
|
|
1958
|
+
"format": "date-time"
|
|
1757
1959
|
},
|
|
1758
1960
|
"source": {
|
|
1759
1961
|
"$ref": "#/components/schemas/Source",
|
|
@@ -1762,6 +1964,27 @@
|
|
|
1762
1964
|
"status": {
|
|
1763
1965
|
"$ref": "#/components/schemas/ReadingStatus",
|
|
1764
1966
|
"description": "The status of the reading"
|
|
1967
|
+
},
|
|
1968
|
+
"external_id": {
|
|
1969
|
+
"type": "string",
|
|
1970
|
+
"description": "The external ID of the reading"
|
|
1971
|
+
},
|
|
1972
|
+
"remark": {
|
|
1973
|
+
"type": "string",
|
|
1974
|
+
"nullable": true,
|
|
1975
|
+
"description": "A remark or comment for the reading",
|
|
1976
|
+
"example": "Customer reported unusual consumption"
|
|
1977
|
+
},
|
|
1978
|
+
"metadata": {
|
|
1979
|
+
"type": "object",
|
|
1980
|
+
"additionalProperties": {
|
|
1981
|
+
"type": "string"
|
|
1982
|
+
},
|
|
1983
|
+
"description": "Additional metadata for the reading",
|
|
1984
|
+
"example": {
|
|
1985
|
+
"registration_id": "1234567890",
|
|
1986
|
+
"business_unit": "ABC"
|
|
1987
|
+
}
|
|
1765
1988
|
}
|
|
1766
1989
|
}
|
|
1767
1990
|
},
|
|
@@ -1853,24 +2076,7 @@
|
|
|
1853
2076
|
"description": "The direction of the reading (feed-in or feed-out)"
|
|
1854
2077
|
},
|
|
1855
2078
|
"unit": {
|
|
1856
|
-
"
|
|
1857
|
-
"enum": [
|
|
1858
|
-
"w",
|
|
1859
|
-
"wh",
|
|
1860
|
-
"kw",
|
|
1861
|
-
"kWh",
|
|
1862
|
-
"kvarh",
|
|
1863
|
-
"mw",
|
|
1864
|
-
"mWh",
|
|
1865
|
-
"unit",
|
|
1866
|
-
"cubic-meter",
|
|
1867
|
-
"hour",
|
|
1868
|
-
"day",
|
|
1869
|
-
"month",
|
|
1870
|
-
"year",
|
|
1871
|
-
"percentage"
|
|
1872
|
-
],
|
|
1873
|
-
"description": "The unit of measurement for the reading"
|
|
2079
|
+
"$ref": "#/components/schemas/Unit"
|
|
1874
2080
|
},
|
|
1875
2081
|
"value": {
|
|
1876
2082
|
"type": "number",
|
|
@@ -1961,23 +2167,7 @@
|
|
|
1961
2167
|
}
|
|
1962
2168
|
},
|
|
1963
2169
|
"Unit": {
|
|
1964
|
-
"type": "string"
|
|
1965
|
-
"enum": [
|
|
1966
|
-
"w",
|
|
1967
|
-
"wh",
|
|
1968
|
-
"kw",
|
|
1969
|
-
"kWh",
|
|
1970
|
-
"kvarh",
|
|
1971
|
-
"mw",
|
|
1972
|
-
"mWh",
|
|
1973
|
-
"unit",
|
|
1974
|
-
"cubic-meter",
|
|
1975
|
-
"hour",
|
|
1976
|
-
"day",
|
|
1977
|
-
"month",
|
|
1978
|
-
"year",
|
|
1979
|
-
"percentage"
|
|
1980
|
-
]
|
|
2170
|
+
"type": "string"
|
|
1981
2171
|
},
|
|
1982
2172
|
"Source": {
|
|
1983
2173
|
"type": "string",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epilot/metering-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "API Client for epilot Metering API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -18,6 +18,18 @@
|
|
|
18
18
|
"sdk",
|
|
19
19
|
"metering"
|
|
20
20
|
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"test": "jest",
|
|
23
|
+
"typescript": "tsc",
|
|
24
|
+
"bundle-definition": "webpack",
|
|
25
|
+
"openapi": "node ../../scripts/update-openapi.js https://docs.api.epilot.io/metering.yaml",
|
|
26
|
+
"typegen": "openapi typegen src/openapi.json --client -b '/* eslint-disable */' > src/openapi.d.ts",
|
|
27
|
+
"build": "tsc && npm run build:patch && npm run bundle-definition",
|
|
28
|
+
"build:patch": "sed -i'' -e '/^__exportStar.*openapi.*$/d' dist/index.js",
|
|
29
|
+
"build:watch": "npm run build && tsc -w",
|
|
30
|
+
"prepublishOnly": "npm run typegen && npm run build",
|
|
31
|
+
"lint": "pnpm exec eslint src"
|
|
32
|
+
},
|
|
21
33
|
"files": [
|
|
22
34
|
"*.js",
|
|
23
35
|
"*.d.ts",
|
|
@@ -58,16 +70,5 @@
|
|
|
58
70
|
"typescript": "^4.1.3",
|
|
59
71
|
"webpack": "^5.18.0",
|
|
60
72
|
"webpack-cli": "^4.4.0"
|
|
61
|
-
},
|
|
62
|
-
"scripts": {
|
|
63
|
-
"test": "jest",
|
|
64
|
-
"typescript": "tsc",
|
|
65
|
-
"bundle-definition": "webpack",
|
|
66
|
-
"openapi": "node ../../scripts/update-openapi.js https://docs.api.epilot.io/metering.yaml",
|
|
67
|
-
"typegen": "openapi typegen src/openapi.json --client -b '/* eslint-disable */' > src/openapi.d.ts",
|
|
68
|
-
"build": "tsc && npm run build:patch && npm run bundle-definition",
|
|
69
|
-
"build:patch": "sed -i'' -e '/^__exportStar.*openapi.*$/d' dist/index.js",
|
|
70
|
-
"build:watch": "npm run build && tsc -w",
|
|
71
|
-
"lint": "pnpm exec eslint src"
|
|
72
73
|
}
|
|
73
|
-
}
|
|
74
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 epilot GmbH
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|