The following describes the API available in the server.
Requires authentication. Writes require admin.
List all devices or create a device in the form of DeviceObject.
Get or update a specific device in the form of DeviceObject.
Requires authentication. Writes require admin.
Read-only fields: external_id
Get a list of tags in the form of TagObject[], optionally specifying a device alias.
Create a tag in the form of TagObject.
Get or update a specific tag in the form of TagObject.
Retrieve a list of values for the specified tags in the form of TagValueObject[].
Retrieve a list of history entries for the specified tag in the form of TagHistoryObject[], optionally specifying a cutoff age.
Requires authentication. Can only view your own dashboards.
Alias field is made unique automatically.
Read-only fields: alias
List all dashboards or create a dashboard in the form of DashboardObject.
Get or update a specific dashboard in the form of DashboardObject.
Update a dashboard config and widgets using JSON (Content-Type: application/json) in the form of DashboardConfigObject. Response:
{ new_alias: string }Upload a preview screenshot image for the dashboard using formData. Should include a field preview_image containing the image file. Response:
{ status: string }Requires authentication. Can only view your own widgets.
List all widgets in the form of DashboardWidgetInfoObject[], optionally specifying a dashboard alias.
Requires authentication. Writes require admin.
Get a list of schedules in the form of ScheduleObject[], optionally specifying a tag id.
Create a schedule in the form of ScheduleObject.
Get or update a specific schedule in the form of ScheduleObject.
Requires authentication. Writes require admin.
Get a list of alarm configs in the form of AlarmConfigObject[], optionally specifying a tag id.
Create an alarm config in the form of AlarmConfigObject.
Get or update a specific alarm config in the form of AlarmConfigObject.
Requires authentication.
List activated alarms.
Query Parameters:
is_active: 'true' | 'false' // Filter active or resolved alarms
threat_level: 'low' | 'high' | 'crit' // Filter by alarm config threat level
acknowledged: 'true' | 'false' // Filter by acknowledgment status
search: string // Case-insensitive search on alarm message, tag alias, or tag description
offset: number // Pagination offsetResponse:
If the limit query parameter is provided, a paginated result list:
{
count: number,
next: string | null,
previous: string | null,
results: ActivatedAlarmObject[]
}Else:
ActivatedAlarmObject[]Get the number of currently active alarms. Response:
{ count: number }Acknowledge an alarm.
Requires authentication. Updates and deletion requires admin. Can only see your own write requests.
Read-only fields: timestamp, processed, failed
List all write requests or create a write request in the form of TagWriteRequestObject.
Get or update a specific write request in the form of TagWriteRequestObject.
The following describes a set of object data types used in the API.
The modbus channel used for a tag.
'coil' | 'di' | 'hr' | 'ir'The data type of a tag.
'bool' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'float32' | 'float64' | 'string'The threat level of an alarm.
'low' | 'high' | 'crit'The communication protocol used by a device.
'tcp' | 'udp' | 'rtu'The word order used by a device.
'big' | 'little'Contains the definition of a schedule.
{
alias: string,
tag: string, // UUID of tag to affect
external_id: string,
write_value: any,
time: string, // Time of day to write the value
days: boolean[], // Days of the week to enable
enabled: boolean,
}Contains metadata about an alarm configuration.
{
tag: string, // UUID of tag watched
external_id: string,
trigger_value: any, // Value to compare
operator: 'equals' | 'greater_than' | 'less_than', // How to compare the tag value with the trigger value
enabled: boolean,
alias: string,
message: string,
threat_level: ThreatLevel,
}Contains metadata about an activated alarm.
{
config: string, // UUID of the alarm config
is_active: boolean,
acknowledged: boolean,
acknowledged_by_username: string,
acknowledged_at: string,
timestamp: string,
resolved_at: string,
}Contains data about a tag's current value.
{
id: string, // UUID of the tag
value: string | number | boolean,
age: number, // Age in seconds of the tag value
alarm: string, // Alarm config UUID if an alarm for this is currently active
}Contains a time/value pair.
{
timestamp: string,
value: any,
}Contains metadata about a tag write request.
{
tag: string,
value: any,
timestamp: string,
processed: boolean,
failed: boolean,
}Contains metadata about a tag.
{
device: string, // Alias of device
external_id: string,
alias: string,
description: string,
data_type: DataType,
channel: ChannelType,
address: number,
bit_index?: number, // Bit to index if using boolean data type on non-boolean channel
history_retention: number, // Max age of history entries in seconds
history_interval: number, // Interval to save history entries in seconds
is_active: boolean,
restricted_write: boolean, // If the value should be write protected from non-staff users
}Contains metadata about a device.
{
alias: string,
protocol: DeviceProtocol,
ip_address: string,
port: string,
word_order: DeviceWordOrder,
}Contains metadata about a user dashboard.
{
alias: string,
title: string,
config: Record<string, any>, // Stores description, column_count, and visual settings
}Contains metadata about a specific widget on a dashboard.
{
tag: string, // UUID of the tag assigned to the widget
config: Record<string, any>, // Stores visual config, position, widget_type, etc.
}Contains dashboard metadata as well as all of its widget data.
DashboardObject & {
widgets: DashboardWidgetInfoObject[]
}