fetch("https://yourdomain.edge.zerokey.com/v3/modules/historian/workflowCompletions", { 
  method: "POST", 
  headers: { 
    "Content-Type": "application/json", 
    "Authorization": "Bearer <YOUR_ACCESS_TOKEN>" 
  }, 
  body: JSON.stringify({ 
    "StartTime": "2025-07-01T08:00:00Z", 
    "EndTime": "2025-07-01T18:00:00Z", 
    "StepTypes": ["BoltSequence"],          
    "IncludeStepData": true      
  }) 
}) 
.then(res => res.json()) 
.then(data => console.log("TaskID:", data.TaskID));
{ 
  "Timestamp": "2025-10-08T15:42:11Z", 
  "WorkflowID": "WF-TRK-042", 
  "StepType": "BoltSequencing", 
  "OperatorID": "E0:05:6E:B9:C1:0A", 
  "Status": "Completed", 
  "Bolts": [ 
    { "ID": 1, "TorqueNm": 320.4, "Status": "OK" }, 
    { "ID": 2, "TorqueNm": 322.1, "Status": "OK" }, 
    { "ID": 3, "TorqueNm": 319.7, "Status": "OK" }, 
    { "ID": 4, "TorqueNm": 318.9, "Status": "OK" } 
  ], 
  "Summary": { 
    "CompletedBolts": 4, 
    "Missed": 0, 
    "OutOfOrder": 0, 
    "AvgTorqueNm": 320.7 
  } 
}
import paho.mqtt.client as mqtt
import json

BROKER = "yourdomain.edge.zerokey.com"
TOPIC = "zerokey/tools/torqueEvents"
TOKEN = ""

def on_message(client, userdata, msg):
    data = json.loads(msg.payload)
    print(f"{data['Timestamp']} | {data['ToolID']} | {data['TorqueNm']} Nm | {data['Status']}")

client = mqtt.Client()
client.username_pw_set(username="token", password=TOKEN)
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC)
client.on_message = on_message
client.loop_forever()