Telemetries Data

Timeseries APIs

Timeseries APIs are mainly used when you want to obtain, for a certain type of data, a detailed trend, which allows you to perform real-time analysis and representations, for a customized time window.

These type of APIs are always structured as follows:

The path, which allows you to point to the desired resources, always requires the following parameters:

  • {power,frequency,wind,temperature,voltage,current,energy,kpis}: the type of resource to point to. This parameter does not specify the actual data you want to obtain, but the general category to which the desired data belongs (please note that an API call only accepts one category at a time, it is not currently possible to make BULK calls);
  • {entityID}: it can be a plant or a device EID. In the first case, the value obtained takes into account the aggregation of all the devices, for which that value exists, at the plant level; in the second case, the value obtained referred to the single device of interest;
  • {dataType}: represents the actual data to be obtained. The available dataTypes vary according to the resources pointed at, a detailed description is available directly in the OpenAPIs Swagger;
  • {valuetype}: represents the type of aggregation criterion with which the requested data is to be obtained.

The queries, that allow you to filter the requested data, always require the following parameters:

  • {sampleSize}: defines the sampling rate with which to obtain data. The longer the sampling rate, the shorter the length of the data array obtained in response (a sampleTime equal to Min5 will have more samples in the response array than a sampleTime equal to Min15);
  • {startDate}: the lower-bound that allows to define the beginning of the time window of interest. Its format is always YYYYMMGG (eg: 20220321);
  • {endDate}: the upper-bound which allows to define the end of the time window of interest. Its format is always YYYYMMGG (eg: 20220322) and it must be temporally subsequent to the {startDate};
  • {timezone}: allows to guide the API call to a correct data recovery according to the requested time zone. The choice of timeZone affects the epochs returned within the response array.

A timeseries call usually provides an array of values as response.
The length of the array directly depends on the {sampleSize} value and on the time window defined by the {startDate} and {endDate} parameters. Once a reference time window has been defined, the {sampleSize} value will slice that window more or less frequently thus consequently modifying the length of the array in response: the greater the {sampleSize} value, the sparsely the time window will be sliced therefore resulting in less elements in the response array.
It is worth looking at a direct example to better explain these concepts.

The principle on the presence/absence of certain fields in the response elements of a timeseries API (expressed in the last lines of the example above) is of fundamental importance: it does not apply only in the case of future samples, but also and above all in the case of complete absence of data on Aurora Vision. This allows to provide coherence to the responses obtained from the telemetries APIs, because when the value field is present, it means that that value actually exists on Aurora Vision otherwise it would not be present.

As was the case for aggregated calls, also for timeseries calls the {valuetype} parameter is of great importance because it varies according to the category of resources, therefore of {dataType}, to be obtained and is also affected by the {sampleSize}.

For a {dataType} belonging to the category {power,frequency,wind,temperature,voltage,current,kpis}, the {valueType} can assume three different values:

  • Maximum: returns the maximum value found among all the samples inside every time slice, determined by the {sampleSize} value, in the defined {startDate} and {endDate} time window, for the requested {dataType};
  • Minimum: returns the minimum value found among all the samples inside every time slice, determined by the {sampleSize} value, in the defined {startDate} and {endDate} time window, for the requested {dataType};
  • Average: returns the average value of all the samples inside every time slice, determined by the {sampleSize} value, in the defined {startDate} and {endDate} time window, for the requested {dataType};

NOTE: for the kpis category, the above considerations are valid only if Power-Based KPIs are called. For more details, please refer to OpenAPIs Swagger.


Let’s take a look at some use cases, where we consider a plant ( entityID: 12345678 ) with a single registered inverter device ( entityID : 87654321 ):

For a {dataType} belonging to the category {energy,kpis}, the {valueType} can assume two different values:

  • Cumulative: returns the last cumulative value available inside every time slice, determined by the {sampleSize} value, in the defined {startDate} and {endDate} time window, for the requested {dataType};
  • Delta: returns the difference between the last and the first cumulative value available inside every time slice, determined by the {sampleSize} value, in the defined {startDate} and {endDate} time window, for the requested {dataType};

NOTE: for the kpis category, the above considerations are valid only if Energy-Based KPIs are called. For more details, please refer to OpenAPIs Swagger.


Let’s take a look at some use cases, where we consider a plant ( entityID: 12345678 ) with a single registered inverter device ( entityID : 87654321 ):