API change log

Note

The FlexMeasures API follows its own versioning scheme. This also reflects in the URL, allowing developers to upgrade at their own pace.

v2.0-2 | 2021-04-02

  • [Breaking change] Switched the interpretation of horizons to rolling horizons.

  • [Breaking change] Deprecated the use of ISO 8601 repeating time intervals to denote rolling horizons.

  • Introduced the “prior” field for postMeterData, postPrognosis, postPriceData and postWeatherData endpoints.

  • Changed the Introduction section:

    • Rewrote the subsection on prognoses to explain the horizon and prior fields.

  • Changed the Simulation section:

    • Rewrote relevant examples using horizon and prior fields.

v2.0-1 | 2021-02-19

  • REST endpoints for managing users: /users/ (GET), /user/<id> (GET, PATCH) and /user/<id>/password-reset (PATCH).

v2.0-0 | 2020-11-14

  • REST endpoints for managing assets: /assets/ (GET, POST) and /asset/<id> (GET, PATCH, DELETE).

v1.3.9 | 2021-04-XX

Affects all versions since v1.0.

  • Fixed regression by partially reverting the breaking change of v1.3-8: Re-instantiated automatic inference of horizons for Post requests for API versions below v2.0, but changed to inference policy: now inferring the data was recorded right after each event took place (leading to a zero horizon for each data point) rather than after the last event took place (which led to a different horizon for each data point); the latter had been the inference policy before v1.3-8.

v1.3-8 | 2020-04-02

Affects all versions since v1.0.

  • [Breaking change, partially reverted in v1.3-9] Deprecated the automatic inference of horizons for postMeterData, postPrognosis, postPriceData and postWeatherData endpoints for API version below v2.0.

v1.3-7 | 2020-12-16

Affects all versions since v1.0.

  • Separated the dual purpose of the “horizon” field in the getMeterData and getPrognosis endpoints by introducing the “prior” field:

    • The “horizon” field in GET endpoints is now always interpreted as a rolling horizon, regardless of whether it is stated as an ISO 8601 repeating time interval.

    • The getMeterData and getPrognosis endpoints now accept an optional “prior” field to select only data recorded before a certain ISO 8601 timestamp (replacing the unintuitive usage of the horizon field for specifying a latest time of belief).

v1.3-6 | 2020-12-11

Affects all versions since v1.0.

  • The getMeterData and getPrognosis endpoints now return the INVALID_SOURCE status 400 response in case the optional “source” field is used and no relevant sources can be found.

v1.3-5 | 2020-10-29

Affects all versions since v1.0.

  • Endpoints to POST meter data will now check incoming data to see if the required asset’s resolution is being used ― upsampling is done if possible. These endpoints can now return the REQUIRED_INFO_MISSING status 400 response.

  • Endpoints to GET meter data will return data in the asset’s resolution ― downsampling to the “resolution” field is done if possible.

  • As they need to determine the asset, all of the mentioned POST and GET endpoints can now return the UNRECOGNIZED_ASSET status 4000 response.

v1.3-4 | 2020-06-18

  • Improved support for use cases of the getDeviceMessage endpoint in which a longer duration, between posting UDI events and retrieving device messages based on those UDI events, is required; the default time to live of UDI event identifiers is prolonged from 500 seconds to 7 days, and can be set as a config variable (FLEXMEASURES_PLANNING_TTL)

v1.3-3 | 2020-06-07

  • Changed backend support (API specifications unaffected) for scheduling charging stations to scheduling Electric Vehicle Supply Equipment (EVSE), in accordance with the Open Charge Point Interface (OCPI).

v1.3-2 | 2020-03-11

  • Fixed example entity addresses in simulation section

v1.3-1 | 2020-02-08

  • Backend change: the default planning horizon can now be set in FlexMeasures’s configuration (FLEXMEASURES_PLANNING_HORIZON)

v1.3-0 | 2020-01-28

  • Introduced new event type “soc-with-targets” to support scheduling charging stations (see extra example for the postUdiEvent endpoint)

  • The postUdiEvent endpoint now triggers scheduling jobs to be set up (rather than scheduling directly triggered by the getDeviceMessage endpoint)

  • The getDeviceMessage now queries the job queue and database for an available schedule

v1.2-3 | 2020-01-28

  • Updated endpoint descriptions with additional possible status 400 responses:

    • INVALID_DOMAIN for invalid entity addresses

    • UNKNOWN_PRICES for infeasible schedules due to missing prices

v1.2-2 | 2018-10-08

  • Added a list of registered types of weather sensors to the Simulation section and postWeatherData endpoint

  • Changed example for the postPriceData endpoint to reflect Korean situation

v1.2-1 | 2018-09-24

  • Added a local table of contents to the Simulation section

  • Added a description of the postPriceData endpoint in the Simulation section

  • Added a description of the postWeatherData endpoint in the Simulation section

  • Revised the subsection about posting power data in the Simulation section

  • Revised the entity address for UDI events to include the type of the event

i.e.

{
    "type": "PostUdiEventRequest",
    "event": "ea1.2018-06.io.flexmeasures.company:7:10:203:soc",
}

rather than the erroneously double-keyed:

{
    "type": "PostUdiEventRequest",
    "event": "ea1.2018-06.io.flexmeasures.company:7:10:203",
    "type": "soc"
}

v1.2-0 | 2018-09-08

  • Added a description of the postUdiEvent endpoint in the Prosumer and Simulation sections

  • Added a description of the getDeviceMessage endpoint in the Prosumer and Simulation sections

v1.1-5 | 2020-06-18

  • Fixed the getConnection endpoint where the returned list of connection names had been unnecessarily nested

v1.1-4 | 2020-03-11

  • Added support for posting daily and weekly prices for the postPriceData endpoint

v1.1-3 | 2018-09-08

  • Added the Simulation section:

    • Added information about setting up a new simulation

    • Added examples for calling the postMeterData endpoint

    • Added example for calling the getPrognosis endpoint

v1.1-2 | 2018-08-15

  • Added the postPrognosis endpoint

  • Added the postPriceData endpoint

  • Added a description of the postPrognosis endpoint in the Aggregator section

  • Added a description of the postPriceData endpoint in the Aggregator and Supplier sections

  • Added the restoreData endpoint for servers in play mode

v1.1-1 | 2018-08-06

  • Added the getConnection endpoint

  • Added the postWeatherData endpoint

  • Changed the Introduction section:

    • Added information about the sign of power values (production is negative)

    • Updated information about horizons (now anchored to the end of each time interval rather than to the start)

  • Added an optional horizon to the postMeterData endpoint

v1.1-0 | 2018-07-15

  • Added the getPrognosis endpoint

  • Changed the getMeterData endpoint to accept an optional resolution, source, and horizon

  • Changed the Introduction section:

    • Added information about timeseries resolutions

    • Added information about sources

    • Updated information about horizons

  • Added a description of the getPrognosis endpoint in the Supplier section

v1.0-1 | 2018-07-10

  • Moved specifications to be part of the platform’s Sphinx documentation:

    • Each API service is now documented in the docstring of its respective endpoint

    • Added sections listing all endpoints per version

    • Documentation includes specifications of all supported API versions (supported versions have a registered Flask blueprint)

v1.0-0 | 2018-07-10

  • Started change log

  • Added Introduction section with notes regarding:

    • Authentication

    • Relevant roles for the API

    • Key notation

    • The addressing scheme for assets

    • Connection group notation

    • Timeseries notation

    • Prognosis notation

    • Units of timeseries data

  • Added a description of the getService endpoint in the Introduction section

  • Added a description of the postMeterData endpoint in the MDC section

  • Added a description of the getMeterData endpoint in the Prosumer section