Data point subscriptions

A data point subscription is a way to listen to changes to time series data points, in ingestion order.

A single subscription can listen to many time series, and a time series can be part of many subscriptions.

You listen to subscriptions by calling the “list subscription data“ endpoint. It will return a list of data point upserts and deleted ranges, together with a cursor to retrieve the next batch of updates. Updates written since the creation of the subscription, up to 7 days ago, can be retrieved through the subscription.

Subscriptions can be defined explicitly through a list of time series external ids, or implicitly through a filter. The filter is a subset of the advanced filter query in the regular “time series search“ endpoint.

Partitions: Subscriptions can be further divided into a number of partitions, for the purpose of fetching subscription data in parallel. Each partition will return data in ingestion order, but the order between partitions is not guaranteed.

Limitations:

  • Each subscription can have at most 10000 time series
  • A time series can be part of at most 10 subscriptions
  • A project can have at most 1000 subscriptions, of which 100 filter subscriptions
  • Time series with security categories can not be shown in filter subscriptions
  • Time series without externalId cannot be added to non-filter subscriptions
  • The number of partitions cannot be changed after creation

Access control: You need READ access to subscriptions ACL to read/list subscriptions or list data, and you need WRITE access to create/update/delete subscriptions. Furthermore, you need READ access to the time series you want to get updates from. For filter subscriptions, you either need READ access to all time series, or the filter must be restricted according to your access rights (e.g. by filtering on specific data set IDs).

Subscriptions can have data sets that allow for more granular access control. The data set on a subscription does not influence the data stream, but allows you to restrict who can read/update the subscription.

Example capabilities:

[
    {"timeSeriesAcl":{"actions":["READ"], "scope":{"all":{}}}},
    {"timeSeriesSubscriptionsAcl":{"actions":["WRITE", "READ"], "scope":{"all":{}}}}
]