This is a Websocket-based service that pushes notifications that you can subscribe to on the Enact site (such as BM or Physical/Remit). This push service will send notifications that anyone in your organisation has subscribed to.

To receive notification pushes, you must first subscribe to the Notifications push group.

Each time you subscribe to a new push group, it will count as 10 API calls towards your monthly API usage. For example, if you subscribe to the Notifications push group and you have not previously subscribed to it that day, your API usage will be incremented by 10.


Using the LCPDelta Python Package

To receive updates to a series in Enact, you must subscribe to the relevant Enact series push group using the subscribe_to_series_updates() method and the Series ID as shown below. You can then pass in your push handler method:

from lcp_delta import enact

def handle_new_information(x):
    # A callback function that will be invoked with the received series updates.
    # The function should accept one argument, which will be the data received from the series updates.
    print(x)

username = "<username>"
public_api_key = "<apiKey>"

dps_helper = enact.DPSHelper(username, public_api_key)
# Input method to handle notification pushes.
dps_helper.subscribe_to_notifications(handle_new_information)

message = None
while message != "exit()":
    message = input(">> ")

#Terminate the connection at the end
dps_helper.terminate_hub_connection()

Each DPS update from the python package will be in list format:

>>
[{'series': 'Imbalance Price (Realtime)', 'option': '', 'valueHolder': {'value': {'point': {'y': 105.09, 'z':
None, 'u': None, 'v': None, 'd': None, 'assignedType': 0, 'x': 1708007220000}, 'arrayPoint': [1708007220000, 
105.09], '_valueIndex': 1, '_valueOverride': None}, 'axisUnitEnum': 8}, 'fromTimeGmt': '2024-02-15T14:27:00Z', 
'time': '2024-02-15T14:32:44.0711007Z', 'notificationSeen': False, 'firstChoice': 'ImbalancePriceRealtime', 
'rawOptionIds': ['none'], 'countryRaw': 4, 'categoryToShow': 'Series update', 'period': '29', 'numericPeriod':
29, 'backgroundColour': 'rgb(136, 227, 222)', 'textColour': 'rgb(255,255,255)', 'bmFeedInfo': 'Series: 
Imbalance Price (Realtime)  Country: Belgium (BE) Time: 15/02/2024 14:27:00 with value 105.09', 'hoverOver': 
'Series: Imbalance Price (Realtime)  Country: Belgium (BE) Time: 15/02/2024 14:27:00 with value 105.09', 
'addToBmFeed': False, 'infoWithoutValue': 'Series: Imbalance Price (Realtime)  Country: Belgium (BE) Time: 
15/02/2024 14:27:00'}]

Using our DPS Directly

To receive updates to a series in Enact, you will need to follow the pattern detailed in Get Started with the Enact DPS in the language of your choice, but with the invocation modified such that the JoinParentCompanyNotificationPush group is joined, with no join object required:

<JOIN_RESPONSE> response = connection.InvokeAsync("JoinParentCompanyNotificationPush");
const response = connection.invoke('_JoinParentCompanyNotificationPush_');

As explained in Get Started with the Enact DPS, once subscribed you can use the 'PushName' value (in this example, your organisation or company name) from the confirmation response to handle point-level updates to the corresponding series:

Every push you receive will take the form of the JSON response object shown below:

{
  "series": "System Inertia",
  "option": "Outturn",
  "valueHolder": {
    "value": {
      "point": {
        "y": 251.0,
        "z": null,
        "u": null,
        "v": null,
        "d": null,
        "assignedType": 0,
        "x": 1707926400000
      },
      "arrayPoint": [
        1707926400000,
        251.0
      ],
      "_valueIndex": 1,
      "_valueOverride": null
    },
    "axisUnitEnum": 39
  },
  "fromTimeGmt": "2024-02-14T16:00:00Z",
  "time": "2024-02-15T15:01:26.7654494Z",
  "notificationSeen": false,
  "firstChoice": "SystemInertia",
  "rawOptionIds": [
    "Outturn"
  ],
  "countryRaw": 0,
  "categoryToShow": "Series update",
  "period": "33",
  "numericPeriod": 33,
  "backgroundColour": "rgb(136, 227, 222)",
  "textColour": "rgb(255,255,255)",
  "bmFeedInfo": "Series: System Inertia  Option: Outturn  Country: GB Time: 14/02/2024 16:00:00 with value 251",
  "hoverOver": "Series: System Inertia  Option: Outturn  Country: GB Time: 14/02/2024 16:00:00 with value 251",
  "addToBmFeed": false,
  "infoWithoutValue": "Series: System Inertia  Option: Outturn  Country: GB Time: 14/02/2024 16:00:00"
}