""" Options: Date: 2026-01-12 03:18:15 Version: 8.22 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://p4v8.smartdatasolutions.nl/api #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: Usage.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum class DateTimeFormat(str, Enum): IS_O8601 = 'ISO8601' UTC = 'UTC' NL = 'NL' NL_OFFSET = 'NLOffset' IN_ = 'IN' IN_OFFSET = 'INOffset' UNIX = 'Unix' UNIX_MILLIS = 'UnixMillis' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Generic: # @ApiMember(DataType="String", Description="Api-key. Used to provide credentials to the api. Can also be provided through the request headers with key: X-API-KEY", IsRequired=true, Name="ApiKey") api_key: Optional[str] = None """ Api-key. Used to provide credentials to the api. Can also be provided through the request headers with key: X-API-KEY """ # @ApiMember(DataType="Boolean", Description="Normally the result of the request is put inside a resultobject with some status information about the request. If you want the output as csv this outer object can be irritating. Default value: FALSE ", Name="OnlyPayload") only_payload: bool = False """ Normally the result of the request is put inside a resultobject with some status information about the request. If you want the output as csv this outer object can be irritating. Default value: FALSE """ # @ApiMember(DataType="Boolean", Description="Show the request as interpreted by the api. Useful to see how filters / dates are parsed. If no value us provided, the default value is: FALSE ", Name="ShowRequest") show_request: bool = False """ Show the request as interpreted by the api. Useful to see how filters / dates are parsed. If no value us provided, the default value is: FALSE """ # @ApiMember(DataType="Enum", Description="Format all DateTime in the response object. If used in browser, sometimes ISO8601 is not correctly transformed. Enum options: ISO8601 (DEFAULT), UTC, NL, NLOffset, Unix, UnixMillis", Name="DateTimeFormat") date_time_format: Optional[DateTimeFormat] = None """ Format all DateTime in the response object. If used in browser, sometimes ISO8601 is not correctly transformed. Enum options: ISO8601 (DEFAULT), UTC, NL, NLOffset, Unix, UnixMillis """ class MeasurementSource(str, Enum): DETAIL = 'Detail' DAY = 'Day' MONTH = 'Month' UNKNOWN = 'Unknown' class AggregationForAPI(str, Enum): NONE = 'None' HOUR = 'Hour' DAY = 'Day' WEEK = 'Week' MONTH = 'Month' YEAR = 'Year' class PayloadFormat(str, Enum): USAGE_RETURN_COMBINED = 'UsageReturnCombined' USAGE_RETURN = 'UsageReturn' USAGE_RETURN_AND_TARIFF = 'UsageReturnAndTariff' # @Route("/v5/meteringpoints/{Ean}/usages/{Aggregation}/{DateFrom}", "GET") # @Route("/v5/meteringpoints/{Ean}/usages/{Aggregation}/{DateFrom}/{DateTo}", "GET") # @Api(Description="Get usages from tablestorage") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Usage(Generic): """ Get usages from tablestorage """ # @ApiMember(DataType="EAN (18 numbers)", Description="Request of details of specific meteringpoint with Ean", Name="Ean") ean: Optional[str] = None """ Request of details of specific meteringpoint with Ean """ # @ApiMember(DataType="Enum", Description="Aggregation level. The None-'level' will give the most detailed level available for the requested asset. If a level is requested that is not available or can be calculate, no data is returned. Enum options: None, Hour, Day", IsRequired=true, Name="Aggregation") aggregation: Optional[AggregationForAPI] = None """ Aggregation level. The None-'level' will give the most detailed level available for the requested asset. If a level is requested that is not available or can be calculate, no data is returned. Enum options: None, Hour, Day """ # @ApiMember(DataType="Date: yyyy-mm-dd", Description="Start date the usages are requested for", IsRequired=true, Name="DateFrom") date_from: datetime.datetime = datetime.datetime(1, 1, 1) """ Start date the usages are requested for """ # @ApiMember(DataType="Date: yyyy-mm-dd", Description="End date the usages are requested for (this is included in the response). If no date is provided the DateTo will seven days from the DateFrom. ", Name="DateTo") date_to: Optional[datetime.datetime] = None """ End date the usages are requested for (this is included in the response). If no date is provided the DateTo will seven days from the DateFrom. """ # @ApiMember(DataType="Enum", Description="The output can be generated in a few formats. UsageReturnCombined: return values will be subtracted from the usage, UsageReturn: separate columns form usage and return (if available) and UsageReturnAndTariff: for both usage and return a column for tariff1 and tariff2. Default value: UsageReturnCombined", Name="PayloadFormat") payload_format: Optional[PayloadFormat] = None """ The output can be generated in a few formats. UsageReturnCombined: return values will be subtracted from the usage, UsageReturn: separate columns form usage and return (if available) and UsageReturnAndTariff: for both usage and return a column for tariff1 and tariff2. Default value: UsageReturnCombined """ # @ApiMember(DataType="Enum", Description="See filter. Usages are available from the Detail or Day channel. Default value: Detail", Name="Source") source: Optional[MeasurementSource] = None """ See filter. Usages are available from the Detail or Day channel. Default value: Detail """ # @ApiMember(DataType="Boolean", Description="Add column with Dutch day (Default: false)", Name="AddDateNL") add_date_n_l: bool = False """ Add column with Dutch day (Default: false) """ # @ApiMember(DataType="Boolean", Description="Add columns with CreatedOn and LastUpdated (Default: false)", Name="AddTimestamps") add_timestamps: bool = False """ Add columns with CreatedOn and LastUpdated (Default: false) """ # @ApiMember(DataType="Boolean", Description="Add column with ean (Default: false)", Name="AddEan") add_ean: bool = False """ Add column with ean (Default: false) """ # @ApiMember(DataType="Boolean", Description="Create a row for each register instead of a column/field for each register (Default: false)", Name="RegistersInRows") registers_in_rows: bool = False """ Create a row for each register instead of a column/field for each register (Default: false) """ # @ApiMember(DataType="Boolean", Description="Gridoperator doesn't provided tariff information for the detail channel, but this can be calculated (Default: false)", Name="CalculateDetailTariff") calculate_detail_tariff: bool = False """ Gridoperator doesn't provided tariff information for the detail channel, but this can be calculated (Default: false) """ # @ApiMember(DataType="Boolean", Description="calculate the usage of that period and divide it over the missing hours or 15 minute periods, but this can be calculated (Default: false)", Name="CalculateMissingUsages") calculate_missing_usages: bool = False """ calculate the usage of that period and divide it over the missing hours or 15 minute periods, but this can be calculated (Default: false) """