API Reference
Ta treść nie jest jeszcze dostępna w Twoim języku.
Basics
Section titled “Basics”Overvis provides REST-like HTTP API with request payload and response encoded in JSON format.
Base API URL is https://ocp.overvis.com/api/v1/. Further documentation will list the requests as
entrypoints with paths that should be concatenated to the base API URL. E.g. API version retrieval
endpoint is /version/, that means, the full URL of the version request should be
https://ocp.overvis.com/api/v1/version/.
All API requests require Content-Type: application/json HTTP header set.
All POST requests require HTTP payload to be a UTF-8 encoded plain-text with semantically-correct
JSON content. Empty payload is not allowed for POST requests, send null if endpoint requires no
data.
Authentication
Section titled “Authentication”All requests except /version/ and /authenticate/ require authorization HTTP header.
Authorization HTTP header has the following format:
Authorization: token <token>Here <token> is a randomly generated session token (UUID) returned by /authenticate/ request.
Session token expires after 1 hour and is not automatically prolonged when being used.
Errors
Section titled “Errors”All requests return HTTP status code 200 if executed correctly.
5xx status codes represent server-side unexpected errors and are automatically reported to the
developers.
4xx status codes represent errors that are client’s concern and should be dealt with on the
client side. These errors have JSON payload which look like this:
{ "errorCode": "ErrCode", "errorMessage": "Human-readable error message in english."}Common errors
Section titled “Common errors”These errors can be returned by any endpoint:
| Status | Code | Description |
|---|---|---|
400 | CantDecodePayloadJSON | HTTP POST payload can’t be decoded. |
400 | IncorrectRequest | Invalid request format (POST payload, querystring, or URL properties are provided incorrectly). |
400 | PayloadIsTooLarge | HTTP POST payload is exceeding the limit of 1Mb. |
400 | CantParseAuthToken | Incorrect authentication token format (should be lower-case UUID) |
400 | IncorrectContentType | HTTP request content type is not application/json |
401 | NoAuthTokenProvided | No authentication token provided. |
401 | IncorrectAuthToken | Provided authentication token is incorrect. That may also mean that session is expired. |
401 | NotAuthorized | User is not authorized to make this specific action (no access). |
403 | TooManyRequests | API key quota of requests per minute is exceeded. Please repeat request later. |
404 | ObjectNotFound | Requested object (network, device, parameter, template, etc.) doesn’t exist in the database, or user has no access. |
404 | IncorrectEndpoint | Requested API endpoint doesn’t exist (or method is wrong). |
All dates in all API requests and responses use ISO 8601 format with or without microseconds.
All dates returned in responses are in UTC. Example: 2018-05-14T16:28:59.948845Z. Requests can
provide dates in any timezone.
Endpoints
Section titled “Endpoints”POST/activation-code/:code/get-info/— Get Activation Code InfoGET/alert/:alertId/— Get Alert DataPOST/alert/:alertId/change/— Change AlertGET/alert/:alertId/log/— Get Alert LogGET/alert/:alertId/status/— Get Alert Status InformationPOST/authenticate/— LoginGET/connect-code/:code/— Get Connect Code InfoPOST/controller/get-template-id/— Get Controller Template IDGET/device-template/:templateId/— Get Device Template DataGET/device/:deviceId/— Get Device InfoPOST/device/:deviceId/change-disable/— Change Device Disabled StateGET/device/:deviceId/next-read-time/— Get Device Next Read TimeGET/device/:deviceId/tracked-params/— List Device Tracked ParametersGET/device/:deviceId/widgets/— List Device WidgetsPOST/em130/read/events/— EM-130 Read EventsPOST/global-notifications/:notificationId/dismiss/— Dismiss Runtime Global NotificationGET/gsense/aggregation/branch/:branchId/segmentation/:cadence/history/— Get G-SENSE Branch Aggregation HistoryGET/gsense/aggregation/branch/:branchId/segmentation/:cadence/last-segment/— Get G-SENSE Branch Last Aggregation SegmentGET/gsense/aggregation/tree/:treeId/branches-energy/— Get G-SENSE Tree Branch Energy SummaryGET/gsense/aggregation/tree/:treeId/root-energy/— Get G-SENSE Tree Root EnergyGET/gsense/aggregation/tree/:treeId/segmentation/:cadence/last-segment/— Get G-SENSE Tree Last Aggregation SegmentGET/gsense/hierarchy/tree/:treeId/— Get G-SENSE Hierarchy TreePOST/gsense/hierarchy/tree/:treeId/branch/:branchId/delete/— Delete G-SENSE Hierarchy BranchPOST/gsense/hierarchy/tree/:treeId/branch/:branchId/rename/— Rename G-SENSE Hierarchy BranchPOST/gsense/hierarchy/tree/:treeId/branch/create/— Create G-SENSE Hierarchy BranchPOST/gsense/hierarchy/tree/:treeId/delete/— Delete G-SENSE Hierarchy TreePOST/gsense/hierarchy/tree/:treeId/duplicate/— Duplicate G-SENSE Hierarchy TreePOST/gsense/hierarchy/tree/:treeId/rename/— Rename G-SENSE Hierarchy TreePOST/gsense/hierarchy/tree/:treeId/sensor/:sensorId/delete/— Delete G-SENSE Hierarchy SensorPOST/gsense/hierarchy/tree/:treeId/sensor/create/— Create G-SENSE Hierarchy SensorPOST/gsense/hierarchy/tree/create/— Create G-SENSE Hierarchy TreePOST/gsense/sensor/:sensorId/rename/— Rename G-SENSE SensorPOST/logout/— LogoutGET/net/:netId/— Get Network InfoPOST/net/:netId/change-disable/— Change Network Disabled StatePOST/net/:netId/change-solution/— Change Network SolutionPOST/net/:netId/change/— Change Network DetailsPOST/net/:netId/connection-status/— Get Network Connection StatusGET/net/:netId/devices/— List Network DevicesPOST/net/:netId/drop-connections/— Drop Network ConnectionsGET/org/:orgId/alerts/— Get List of AlertsPOST/org/:orgId/alerts/create/— Create AlertGET/org/:orgId/alerts/log/— Get Organization Alert LogGET/org/:orgId/dashboard/— Get Data for the DashboardPOST/org/:orgId/dashboard/add-widgets/— Add Widgets to DashboardPOST/org/:orgId/dashboard/change/— Change Dashboard SettingsGET/org/:orgId/dashboard/light/— Get Dashboard Data (Lightweight)GET/org/:orgId/get-resource-reports/— Get Org Resource ReportsGET/org/:orgId/nets/— Get Organization Networks ListPOST/org/:orgId/nets/create/— Create NetworkGET/org/:orgId/nets/device-param-tree/— Get Organization Networks-Devices-Parameters TreePOST/org/:orgId/params/get-id-by-reference/— Get Parameter ID by ReferencePOST/org/:orgId/params/get-param-values/— Get Param ValuesPOST/org/:orgId/params/increment/— Increment Parameter ValuePOST/org/:orgId/params/save-param-value/— Save Parameter ValuePOST/org/:orgId/params/toggle/— Toggle Parameter ValuePOST/org/:orgId/resource-report/create/— Create or Update Resource ReportPOST/org/:orgId/sms-settings/— Change Organization SMS SettingsGET/org/:orgId/viss/— Get Organization VisualizationsPOST/org/:orgId/viss/data/— Get Multiple Visualizations DataPOST/org/:orgId/viss/info/— Get Multiple Visualizations InfoGET/param/:paramId/dashboard-data/— Get Parameter Dashboard DataGET/param/:paramId/dashboard-widget-data/— Get Param Widget DataPOST/param/:paramId/write/— Write Parameter ValuePOST/params/change/— Change ParametersPOST/params/delete/— Delete ParametersGET/params/get-info/— Get Parameters InformationGET/params/last-readings/— Get Last Readings of ParametersGET/params/read-realtime/— Read Real-time Value of ParameterPOST/params/readings-on-time/— Get Parameters Readings on Specific TimePOST/raw/check-connection/— Raw Check ConnectionPOST/raw/check-device-read/— Raw Check Device ReadPOST/raw/read-controller-modbus-settings/— Raw Read Controller Modbus SettingsPOST/raw/read-multiple-register-group/— Raw Read Multiple Register GroupPOST/raw/read-multiple-register-groups/with-timeout/— Raw Read Multiple Register Groups With TimeoutPOST/raw/read-register-group/— Raw Read Register GroupPOST/raw/send-controller-passwords/— Raw Send Controller PasswordsPOST/raw/write-controller-modbus-settings/— Raw Write Controller Modbus SettingsPOST/raw/write-register-group/— Raw Write Register GroupGET/readings/date-range/— Get Readings Date RangePOST/readings/dispersed/— Get Dispersed ReadingsGET/readings/get/— Get ReadingsPOST/readings/min-max-range/— Range of Readings Values for a Given PeriodPOST/resource-report/branch/:branchId/chart-data/— Get Resource Report Branch Chart DataPOST/translations/— Get TranslationsGET/user/orgs/— List User Organizations AccessGET/version/— Get API Version InformationGET/vis/:visId/— Get Visualization DataGET/vis/:visId/data/— Get Visualization DataPOST/vis/:visId/data/save/— Save Visualization Data
POST /activation-code/:code/get-info/ - Get Activation Code Info
Section titled “POST /activation-code/:code/get-info/ - Get Activation Code Info”Retrieves device information and connection details for a specific activation code.
Endpoint
POST /activation-code/:code/get-info/
Parameters
Path Parameters
code(number, required): The activation code.
Authorization
- Permission: demo (access to connection retrieval)
- Requires a valid session token in the
Authorizationheader.
Response
Returns either success info or an error code.
Success Response
code(number): The activation code.mac(string): Device MAC address.ip(string): Connection IP address.port(number): Connection port.sku(string): Device SKU.
Error Response
errorCode(string): Error identifier (e.g.,InvalidActivationCode).
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{}' \ "https://ocp.overvis.com/api/v1/activation-code/123456/get-info/"GET /alert/:alertId/ - Get Alert Data
Section titled “GET /alert/:alertId/ - Get Alert Data”Returns full information about an alert’s structure, including conditions, actions, and follow-ups.
Endpoint
GET /alert/:alertId/
Parameters
Path Parameters
alertId(number, required): ID of the alert.
Response
Returns an object containing alert configuration.
Response Fields
id(number): Alert ID.name(string): Alert name.slug(string): URL-compatible slug.description(string, optional): Description.conditionLogic(string): “all” or “any”.logAs(string): Alert level.conditions(object): Dictionary of conditions keyed by ID.actions(object): Dictionary of actions keyed by ID.followUps(object): Dictionary of follow-up actions keyed by ID.
Example Request
GET /alert/4/
Example Response
{ "id": 4, "name": "AND Logic Alert", "logAs": "warning", "slug": "and-logic-alert", "conditionLogic": "all", "conditions": { "122": { "paramId": 542, "kind": "eq", "param": "542#coil@device-slug@net-slug", "value": 1 } }, "actions": {}, "followUps": {}}POST /alert/:alertId/change/ - Change Alert
Section titled “POST /alert/:alertId/change/ - Change Alert”Updates an existing alert’s configuration.
Endpoint
POST /alert/:alertId/change/
Parameters
Path Parameters
alertId(number, required): ID of the alert to change.
Body
(Same as Create Alert)
name(string, required): Name of the alert.description(string, optional): Description.conditionLogic(string, required): “all” or “any”.logAs(string, required): “none”, “info”, “warning”, “failure”, “critical”.conditions(array, required): Alert conditions.actions(array, required): Alert actions.followUps(array, optional): Alert follow-up actions.
Response
Returns a result object.
Success Response
{ "result": "success", "errors": {}}Error Response
{ "result": "error", "errors": { "name": "Name is too short" }}GET /alert/:alertId/log/ - Get Alert Log
Section titled “GET /alert/:alertId/log/ - Get Alert Log”Returns alert log records (journal) for a single alert.
Endpoint
GET /alert/:alertId/log/
Parameters
Path Parameters
alertId(number, required): Alert ID.
Query
page(number, optional): Page number (default 1).itemsOnPage(number, optional): Items per page (default 25, max 100).
Response
Returns a paginated list of alert log records.
Example Request
GET /alert/123/log/?page=1&itemsOnPage=25
Example Response
{ "records": [ { "name": "High Temperature", "startedOn": "2025-01-15T10:22:00.000Z", "resolvedOn": "2025-01-15T11:05:00.000Z", "logAs": "warning", "logAsText": "Warning", "status": "resolved", "confirmedOn": "2025-01-15T10:25:00.000Z", "details": [ { "date": "2025-01-15T10:22:00.000Z", "texts": ["Event started.", "Room Temp (Device A > Net A) = 85 C"] } ] } ], "totalRecords": 12, "currentPage": 1, "itemsOnPage": 25}GET /alert/:alertId/status/ - Get Alert Status Information
Section titled “GET /alert/:alertId/status/ - Get Alert Status Information”Returns alert status information, including current state (active or not), system ID of the last record, when it was started, confirmed, and resolved.
Endpoint
GET /alert/:alertId/status/
Parameters
Path Parameters
alertId(number, required): ID of the alert.
Response
Returns an object containing the alert’s status.
Response Fields
id(number): Alert ID.lastRecordId(number, optional): ID of the last alert record.isActive(boolean): Whether the alert is currently active.startedOn(string, optional): ISO timestamp when the alert started.closedOn(string, optional): ISO timestamp when the alert was resolved.confirmed(object, optional): Confirmation details.conditions(object): Status of each condition.
Example Request
GET /alert/4/status/
Example Response
{ "id": 4, "lastRecordId": 22, "isActive": true, "startedOn": "2020-08-17T14:30:12.569Z", "conditions": { "122": { "lastValue": 1, "isTriggered": true }, "123": { "lastValue": 1, "isTriggered": true } }}POST /authenticate/ - Login
Section titled “POST /authenticate/ - Login”Performs authentication for a given user API key. Returns a session token that should be provided
to other API endpoints in the Authorization header.
Endpoint
POST /authenticate/
Authorization
- Permission: none
- No authorization header required.
Request Body
apiKey(string, required): API key (UUID).password(string, required): API key password.
Response
token(string): Session token.expiresOn(string): Expiration time of the provided token (ISO 8601).
Error Codes
InvalidKey: API key doesn’t exist.NotAuthorized: Incorrect API key password.
Example Request
curl -s -S -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/"Example Response
{ "token": "cdf2923f-c89f-41e5-91af-f139f0c2e7d0", "expiresOn": "2020-05-07T19:49:34.213Z"}GET /connect-code/:code/ - Get Connect Code Info
Section titled “GET /connect-code/:code/ - Get Connect Code Info”Retrieves device information and connection details for a specific connect code.
Endpoint
GET /connect-code/:code/
Parameters
Path Parameters
code(string, required): The connect code (e.g.,ABCD).
Authorization
- Permission: demo (access to connection retrieval)
- Requires a valid session token in the
Authorizationheader.
Response
Returns either success info or an error code.
Success Response
code(string): The normalized connect code.macAddress(string): Device MAC address.devicePasswords(string[]): List of device passwords.sku(string, optional): Device SKU.vpnIpAddress(string, optional): VPN IP address if applicable.port(number, optional): Connection port.modbusId(number, optional): Modbus Unit ID.bindedToNet(object, optional): Info about the network this code is already binded to.
Error Response
errorCode(string): Error identifier (e.g.,InvalidCode,NotAuthorized).
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/connect-code/ABCD/"POST /controller/get-template-id/ - Get Controller Template ID
Section titled “POST /controller/get-template-id/ - Get Controller Template ID”Returns the device template ID associated with a specific controller SKU.
Endpoint
POST /controller/get-template-id/
Parameters
Body
sku(string, required): The SKU of the controller (e.g., “em130”, “opcb221”).
Response
Returns an object with the template ID if found.
Example Request
POST /controller/get-template-id/
{ "sku": "em130"}Example Response
{ "id": 5}GET /device-template/:templateId/ - Get Device Template Data
Section titled “GET /device-template/:templateId/ - Get Device Template Data”Returns details of a specific device template.
Endpoint
GET /device-template/:templateId/
Parameters
Path Parameters
templateId(number, required): ID of the device template.
Response
Returns the device template object including its configuration and parameter templates.
Example Request
GET /device-template/1/
Example Response
{ "id": 1, "name": "Standard Meter", "manufacturer": "Overvis", "version": "1.0", "readGroupSize": 10, "writeFunction": "normal", "paramTemplates": [...]}GET /device/:deviceId/ - Get Device Info
Section titled “GET /device/:deviceId/ - Get Device Info”Retrieves basic information about a specific device.
Endpoint
GET /device/:deviceId/
Parameters
Path Parameters
deviceId(number, required): The ID of the device.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
id(number): Device ID.netId(number): ID of the network this device belongs to.name(string): Device name.slug(string): URL-conformant code.modbusUnitId(number): Modbus Unit ID (0-255).disabledOn(string, optional): Timestamp when disabled.updatePeriodSec(number): Background reading period in seconds.readGroupSize(number): Max Modbus registers to read in one request.writeFunction(string): Modbus write function strategy (normal,always-6,always-16).modbusTimeoutRetriesNum(number): Number of retries on timeout.initializedFromTemplate(number, optional): ID of the template used to initialize this device.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/device/1/"POST /device/:deviceId/change-disable/ - Change Device Disabled State
Section titled “POST /device/:deviceId/change-disable/ - Change Device Disabled State”Enables or disables a device. Disabling a device stops background readings for its parameters.
Endpoint
POST /device/:deviceId/change-disable/
Parameters
Path Parameters
deviceId(number, required): The ID of the device.
Body
enabled(boolean, required):trueto enable,falseto disable.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
availableDevicesQuota(number or null): Remaining quota for active devices in the organization.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{ "enabled": false }' \ "https://ocp.overvis.com/api/v1/device/1/change-disable/"GET /device/:deviceId/next-read-time/ - Get Device Next Read Time
Section titled “GET /device/:deviceId/next-read-time/ - Get Device Next Read Time”Returns information about when the device was last read and when it is scheduled to be read next.
Endpoint
GET /device/:deviceId/next-read-time/
Parameters
Path Parameters
deviceId(number, required): The ID of the device.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
msg(string, optional): Status message (e.g.,Currently reading,Network unreachable).nextReadDate(string, optional): Scheduled timestamp for the next reading.lastReadOn(string, optional): Timestamp of the last successful reading.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/device/1/next-read-time/"GET /device/:deviceId/tracked-params/ - List Device Tracked Parameters
Section titled “GET /device/:deviceId/tracked-params/ - List Device Tracked Parameters”Returns a list of all parameters of a specific device that are marked as tracked (periodically read in the background).
Endpoint
GET /device/:deviceId/tracked-params/
Parameters
Path Parameters
deviceId(number, required): The ID of the device.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An array of parameter objects:
id(number): Parameter ID.name(string): Parameter name.fullName(string): Full name including unit and label.category(string, optional): Parameter category.label(string, optional): Mnemonic label.unitName(string, optional): Unit name.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/device/1/tracked-params/"GET /device/:deviceId/widgets/ - List Device Widgets
Section titled “GET /device/:deviceId/widgets/ - List Device Widgets”Returns a list of dashboard-style widgets for all parameters of a specific device.
Endpoint
GET /device/:deviceId/widgets/
Parameters
Path Parameters
deviceId(number, required): The ID of the device.
Query Parameters
lang(string, required): Locale for formatted values (en,pl,ru,ua).onlyParamsValues(boolean, optional): Iftrue, returns a reduced set of fields (ID and value only).
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An array of widget objects:
id(number): Parameter ID.paramId(number): Parameter ID (same asid).name(string, optional): Parameter name.fullName(string, optional): Full name with unit.lastValue(string, optional): Raw last value.formatedLastValue(string, optional): Formatted value with unit and interpretation.lastReadOn(string, optional): Last reading timestamp.isProgrammable(boolean, optional): Whether the parameter is writable.unitName(string, optional): Unit name.label(string, optional): Mnemonic label.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/device/1/widgets/?lang=en"POST /em130/read/events/ - EM-130 Read Events
Section titled “POST /em130/read/events/ - EM-130 Read Events”Read astronomic and schedule events from an EM-130 device.
Endpoint
POST /em130/read/events/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).sku(string, required): Must be “em130”.numberOfEvents(number, required): Maximum number of events to read (max 10).startWithFirst(boolean, required): Whether to start reading from the first event.connection(object, required): Connection details.deviceVersion(number, optional): Device firmware version.
Response
Returns a status object with a list of events.
Success Response
{ "status": "ok", "events": [ { "eventAddress": 1, "eventType": 1, "dayOfWeek": 1, "modeSwitchOff": 0, "modeSwitchOn": 1, "timeSwitchOff": 120, "timeSwitchOn": -60, "astronomicTimes": { "sunset": 18000, "sunrise": 6000 } } ]}Error Response
{ "status": "error", "errorMessage": "Description of error"}POST /global-notifications/:notificationId/dismiss/ - Dismiss Runtime Global Notification
Section titled “POST /global-notifications/:notificationId/dismiss/ - Dismiss Runtime Global Notification”Marks one enabled runtime global notification as dismissed for the current authenticated user.
Endpoint
POST /global-notifications/:notificationId/dismiss/
Access
Any authenticated user.
Parameters
notificationId(string, UUID, required): Notification ID.
Response
{ "status": "ok", "created": true}created = truewhen a new dismissal record is inserted.created = falsewhen the user had already dismissed this notification.
GET /gsense/aggregation/branch/:branchId/segmentation/:cadence/history/ - Get G-SENSE Branch Aggregation History
Section titled “GET /gsense/aggregation/branch/:branchId/segmentation/:cadence/history/ - Get G-SENSE Branch Aggregation History”Retrieve historical aggregated data segments for a specific hierarchy branch and time segmentation.
Endpoint
GET /gsense/aggregation/branch/:branchId/segmentation/:cadence/history/
Parameters
branchId(UUID): The ID of the branch.cadence(string): The segmentation cadence.1m,5m,15m,1h,1d.
Query Parameters
startTimeUtc(ISO 8601): The start time of the history range.endTimeUtc(ISO 8601): The end time of the history range.
Response
rows(array): A list of data segments.treeId(UUID): The ID of the tree.branchId(UUID): The ID of the branch.periodStart(ISO 8601): The start time of the segment.periodEnd(ISO 8601): The end time of the segment.powerKwMean(number | null): Average active power in kW.energyKwhSum(number | null): Total energy consumption in kWh.costEurSum(number | null): Total cost in EUR.lastCurrentA(number | null): Last measured current in A.
GET /gsense/aggregation/branch/:branchId/segmentation/:cadence/last-segment/ - Get G-SENSE Branch Last Aggregation Segment
Section titled “GET /gsense/aggregation/branch/:branchId/segmentation/:cadence/last-segment/ - Get G-SENSE Branch Last Aggregation Segment”Retrieve the last calculated data segment for a specific hierarchy branch and time segmentation.
Endpoint
GET /gsense/aggregation/branch/:branchId/segmentation/:cadence/last-segment/
Parameters
branchId(UUID): The ID of the branch.cadence(string): The segmentation cadence.1m,5m,15m,1h,1d.
Response
treeId(UUID): The ID of the tree.branchId(UUID): The ID of the branch.periodStart(ISO 8601): The start time of the segment.periodEnd(ISO 8601): The end time of the segment.powerKwMean(number | null): Average active power in kW.energyKwhSum(number | null): Total energy consumption in kWh.costEurSum(number | null): Total cost in EUR.lastCurrentA(number | null): Last measured current in A.
GET /gsense/aggregation/tree/:treeId/branches-energy/ - Get G-SENSE Tree Branch Energy Summary
Section titled “GET /gsense/aggregation/tree/:treeId/branches-energy/ - Get G-SENSE Tree Branch Energy Summary”Retrieve 24h/7d/30d aggregated energy data for all branches of a specific hierarchy tree.
Endpoint
GET /gsense/aggregation/tree/:treeId/branches-energy/
Parameters
treeId(UUID): The ID of the hierarchy tree.
Response
rows(array): A list of energy data for each branch.branchId(UUID): The ID of the branch.parentBranchId(UUID | null): The ID of the parent branch, if any.isRoot(boolean): Whether the branch is a root branch.energyKwhLast24h(number): Total energy consumption in kWh for the last 24 hours.energyKwhPrev24h(number): Total energy consumption in kWh for the previous 24 hours.energyKwhLast7d(number): Total energy consumption in kWh for the last 7 days.energyKwhPrev7d(number): Total energy consumption in kWh for the previous 7 days.energyKwhLast30d(number): Total energy consumption in kWh for the last 30 days.energyKwhPrev30d(number): Total energy consumption in kWh for the previous 30 days.
GET /gsense/aggregation/tree/:treeId/root-energy/ - Get G-SENSE Tree Root Energy
Section titled “GET /gsense/aggregation/tree/:treeId/root-energy/ - Get G-SENSE Tree Root Energy”Retrieve aggregated energy data for the root of a specific hierarchy tree across different time windows.
Endpoint
GET /gsense/aggregation/tree/:treeId/root-energy/
Parameters
treeId(UUID): The ID of the hierarchy tree.
Response
energyKwhLast30d(number): Total energy consumption in kWh for the last 30 days.energyKwhPrev30d(number): Total energy consumption in kWh for the previous 30 days.energyKwhLast7d(number): Total energy consumption in kWh for the last 7 days.energyKwhPrev7d(number): Total energy consumption in kWh for the previous 7 days.energyKwhLast24h(number): Total energy consumption in kWh for the last 24 hours.energyKwhPrev24h(number): Total energy consumption in kWh for the previous 24 hours.costEurLast30d(number): Total cost in EUR for the last 30 days.costEurLast7d(number): Total cost in EUR for the last 7 days.costEurLast24h(number): Total cost in EUR for the last 24 hours.dataOnUtc(ISO 8601): Data reference timestamp used for the aggregation.
GET /gsense/aggregation/tree/:treeId/segmentation/:cadence/last-segment/ - Get G-SENSE Tree Last Aggregation Segment
Section titled “GET /gsense/aggregation/tree/:treeId/segmentation/:cadence/last-segment/ - Get G-SENSE Tree Last Aggregation Segment”Returns the last completed aggregation segment for all branches in a hierarchy tree.
Endpoint
GET /gsense/aggregation/tree/:treeId/segmentation/:cadence/last-segment/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.cadence(string, required): The segmentation cadence. One of:1m,5m,15m,1h,1d.
Response
A JSON object containing an array of segments.
Segment Object:
treeId(string): The UUID of the tree.branchId(string, optional): The UUID of the branch (omitted for root).periodStart,periodEnd(string): The time range of the segment (ISO 8601).powerKwMean(number | null): Mean power in kW.energyKwhSum(number | null): Sum of energy in kWh.costEurSum(number | null): Sum of cost in EUR.lastCurrentA(number | null): Last measured current in Amperes.
Example Request
GET /gsense/aggregation/tree/550e8400-e29b-41d4-a716-446655440000/segmentation/1h/last-segment/
Example Response
{ "segments": [ { "treeId": "...", "periodStart": "2023-01-01T12:00:00Z", "periodEnd": "2023-01-01T13:00:00Z", "powerKwMean": 10.5, ... } ]}GET /gsense/hierarchy/tree/:treeId/ - Get G-SENSE Hierarchy Tree
Section titled “GET /gsense/hierarchy/tree/:treeId/ - Get G-SENSE Hierarchy Tree”Returns the full structure of a hierarchy tree, including all branches and sensors.
Endpoint
GET /gsense/hierarchy/tree/:treeId/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.
Response
A JSON object with:
tree: The tree metadata and nested branch structure.branchesById: A flat dictionary of all branches in the tree.sensorsById: A flat dictionary of all sensors in the tree.
Example Request
GET /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/
Example Response
{ "tree": { "id": "...", "name": "Factory A", "branches": [ { "id": "...", "name": "Main Hall", "children": [...] } ] }, "branchesById": { ... }, "sensorsById": { ... }}POST /gsense/hierarchy/tree/:treeId/branch/:branchId/delete/ - Delete G-SENSE Hierarchy Branch
Section titled “POST /gsense/hierarchy/tree/:treeId/branch/:branchId/delete/ - Delete G-SENSE Hierarchy Branch”Deletes an existing branch within a hierarchy tree.
Endpoint
POST /gsense/hierarchy/tree/:treeId/branch/:branchId/delete/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.branchId(string, required): The UUID of the branch to delete.
Response
An empty object on success.
Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/branch/550e8400-e29b-41d4-a716-446655440001/delete/
{}Example Response
{}POST /gsense/hierarchy/tree/:treeId/branch/:branchId/rename/ - Rename G-SENSE Hierarchy Branch
Section titled “POST /gsense/hierarchy/tree/:treeId/branch/:branchId/rename/ - Rename G-SENSE Hierarchy Branch”Updates the name of an existing branch within a hierarchy tree.
Endpoint
POST /gsense/hierarchy/tree/:treeId/branch/:branchId/rename/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.branchId(string, required): The UUID of the branch.
Body
name(string, required): The new name for the branch.
Response
An empty object on success.
Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/branch/550e8400-e29b-41d4-a716-446655440001/rename/
{ "name": "Second Floor"}Example Response
{}POST /gsense/hierarchy/tree/:treeId/branch/create/ - Create G-SENSE Hierarchy Branch
Section titled “POST /gsense/hierarchy/tree/:treeId/branch/create/ - Create G-SENSE Hierarchy Branch”Creates a new branch within a hierarchy tree.
Endpoint
POST /gsense/hierarchy/tree/:treeId/branch/create/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.
Body
name(string, required): The name of the branch (max 255 chars).parentBranchId(string, optional): The UUID of the parent branch. If omitted, the branch is created at the root level.
Response
A JSON object containing the branchId (UUID) of the created branch.
Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/branch/create/
{ "name": "First Floor", "parentBranchId": "..."}Example Response
{ "branchId": "550e8400-e29b-41d4-a716-446655440001"}POST /gsense/hierarchy/tree/:treeId/delete/ - Delete G-SENSE Hierarchy Tree
Section titled “POST /gsense/hierarchy/tree/:treeId/delete/ - Delete G-SENSE Hierarchy Tree”Deletes an existing hierarchy tree and all its associated branches and sensor references.
Endpoint
POST /gsense/hierarchy/tree/:treeId/delete/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.
Response
An empty object on success.
Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/delete/
{}Example Response
{}POST /gsense/hierarchy/tree/:treeId/duplicate/ - Duplicate G-SENSE Hierarchy Tree
Section titled “POST /gsense/hierarchy/tree/:treeId/duplicate/ - Duplicate G-SENSE Hierarchy Tree”Creates a new hierarchy tree by copying all branches and sensors from an existing tree.
Endpoint
POST /gsense/hierarchy/tree/:treeId/duplicate/
Parameters
Path Parameters
treeId(string, required): The UUID of the source tree.
Body
name(string, required): The name for the new tree.description(string, optional): The description for the new tree.
Response
{ "treeId": "uuid"}Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/duplicate/
{ "name": "Main Building (Copy)", "description": "Duplicated hierarchy for testing"}Example Response
{ "treeId": "11111111-2222-3333-4444-555555555555"}POST /gsense/hierarchy/tree/:treeId/rename/ - Rename G-SENSE Hierarchy Tree
Section titled “POST /gsense/hierarchy/tree/:treeId/rename/ - Rename G-SENSE Hierarchy Tree”Updates the name and/or description of an existing hierarchy tree.
Endpoint
POST /gsense/hierarchy/tree/:treeId/rename/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.
Body
name(string, required): The new name for the tree.description(string, optional): The new description for the tree.
Response
An empty object on success.
Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/rename/
{ "name": "New Factory Layout", "description": "Updated layout for 2024"}Example Response
{}POST /gsense/hierarchy/tree/:treeId/sensor/:sensorId/delete/ - Delete G-SENSE Hierarchy Sensor
Section titled “POST /gsense/hierarchy/tree/:treeId/sensor/:sensorId/delete/ - Delete G-SENSE Hierarchy Sensor”Deletes a power sensor from the system.
Endpoint
POST /gsense/hierarchy/tree/:treeId/sensor/:sensorId/delete/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.sensorId(string, required): The UUID of the sensor to delete.
Response
An empty object on success.
Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/sensor/550e8400-e29b-41d4-a716-446655440002/delete/
{}Example Response
{}POST /gsense/hierarchy/tree/:treeId/sensor/create/ - Create G-SENSE Hierarchy Sensor
Section titled “POST /gsense/hierarchy/tree/:treeId/sensor/create/ - Create G-SENSE Hierarchy Sensor”Creates a new power sensor, attempts to read its serial number from the device, and attaches it to a branch in a hierarchy tree.
Endpoint
POST /gsense/hierarchy/tree/:treeId/sensor/create/
Parameters
Path Parameters
treeId(string, required): The UUID of the tree.
Body
branchId(string, required): The UUID of the branch to attach the sensor to.deviceId(integer, required): The ID of the device the sensor is connected to.sensorIdx(integer, required): The index of the sensor on the device (0-31).name(string, required): The name of the sensor (max 255 chars).description(string, optional): A description of the sensor.isThreePhase(boolean, required): Whether the sensor is three-phase.
Response
A JSON object containing the sensorId (UUID) of the created sensor.
Example Request
POST /gsense/hierarchy/tree/550e8400-e29b-41d4-a716-446655440000/sensor/create/
{ "branchId": "550e8400-e29b-41d4-a716-446655440001", "deviceId": 12, "sensorIdx": 0, "name": "Main Transformer", "isThreePhase": true}Example Response
{ "sensorId": "550e8400-e29b-41d4-a716-446655440002"}POST /gsense/hierarchy/tree/create/ - Create G-SENSE Hierarchy Tree
Section titled “POST /gsense/hierarchy/tree/create/ - Create G-SENSE Hierarchy Tree”Creates a new hierarchy tree for an organization.
Endpoint
POST /gsense/hierarchy/tree/create/
Parameters
Body
orgId(integer, required): The ID of the organization.name(string, required): The name of the tree (max 255 chars).description(string, optional): A description of the tree.
Response
A JSON object containing the treeId (UUID) of the created tree.
Example Request
POST /gsense/hierarchy/tree/create/
{ "orgId": 1, "name": "Factory A Hierarchy", "description": "Main hierarchy for energy monitoring in Factory A"}Example Response
{ "treeId": "550e8400-e29b-41d4-a716-446655440000"}POST /gsense/sensor/:sensorId/rename/ - Rename G-SENSE Sensor
Section titled “POST /gsense/sensor/:sensorId/rename/ - Rename G-SENSE Sensor”Updates the name and/or description of an existing power sensor.
Endpoint
POST /gsense/sensor/:sensorId/rename/
Parameters
Path Parameters
sensorId(string, required): The UUID of the sensor.
Body
name(string, required): The new name for the sensor.description(string, optional): The new description for the sensor.
Response
An empty object on success.
Example Request
POST /gsense/sensor/550e8400-e29b-41d4-a716-446655440002/rename/
{ "name": "Main Transformer Red", "description": "Updated sensor location"}Example Response
{}POST /logout/ - Logout
Section titled “POST /logout/ - Logout”Deletes session token immediately.
Endpoint
POST /logout/
Authorization
- Permission: none
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{}' \ "https://ocp.overvis.com/api/v1/logout/"Example Response
{}GET /net/:netId/ - Get Network Info
Section titled “GET /net/:netId/ - Get Network Info”Retrieves basic information about one network.
Endpoint
GET /net/:netId/
Parameters
Path Parameters
netId(number, required): The ID of the network.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
Returns a network object or null.
id(number): Unique network ID.orgId(number): ID of the organization.name(string): User-provided name.slug(string): URL-conformant code.createdOn(string): Creation timestamp.description(string, optional): Description.disabledOn(string, optional): Timestamp when disabled.disabledBy(string, optional): Actor who disabled the network (admin,billing,user).disableNote(string, optional): Reason for disabling.ip(string): Network IP address.port(number): Connection port.mac(string, optional): MAC address for backward connections.protocol(string): Communication protocol (modbustcp).sku(string, optional): Device SKU.controllerModbusUnitId(number): Modbus Unit ID.devicePasswords(string[]): Passwords for controller authentication.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/net/1/"Example Response
{ "id": 1, "orgId": 1, "name": "Some Network", "slug": "some-network", "createdOn": "2020-05-06T22:28:54.331Z", "ip": "127.0.0.1", "port": 502, "protocol": "modbustcp", "controllerModbusUnitId": 111, "devicePasswords": ["mypass"]}POST /net/:netId/change-disable/ - Change Network Disabled State
Section titled “POST /net/:netId/change-disable/ - Change Network Disabled State”Enables or disables a network. Disabling a network stops all background Modbus communication.
Endpoint
POST /net/:netId/change-disable/
Parameters
Path Parameters
netId(number, required): The ID of the network.
Body
enabled(boolean, required):trueto enable,falseto disable.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Error Codes
NotAuthorized: Insufficient balance or unauthorized access.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{ "enabled": false }' \ "https://ocp.overvis.com/api/v1/net/1/change-disable/"POST /net/:netId/change-solution/ - Change Network Solution
Section titled “POST /net/:netId/change-solution/ - Change Network Solution”Updates the configuration, connection details, and solution settings for an existing network. The solution type (kind) must match the existing one.
Endpoint
POST /net/:netId/change-solution/
Parameters
Path Parameters
netId(number, required): The ID of the network.
Body
name(string, required): Network name.description(string, optional): Network description.language(string, required): Preferred language (en,ru,pl,ua).controllerModbusUnitId(number, required): Modbus Unit ID for the controller.sku(string, optional): Device SKU.devicePasswords(string[], required): List of device passwords.maxInflightRequestsNum(number, required): Max parallel Modbus requests.disabled(boolean, required): Whether the network should be disabled.connection(object, required): Connection details.kind:connect-code,activation-code,direct, ornet-id.
solution(object, required): Network solution type.kind: Must match current network solution kind.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
status:okorerror.netSlug(string, if ok): The (possibly updated) slug of the network.
Example Request
{ "name": "Updated Warehouse A", "language": "en", "controllerModbusUnitId": 1, "devicePasswords": ["newpass"], "maxInflightRequestsNum": 2, "disabled": false, "connection": { "kind": "direct", "ip": "192.168.1.11", "port": 502 }, "solution": { "kind": "standalone", "devices": [{ "modbusId": 10 }, { "modbusId": 11 }] }}POST /net/:netId/change/ - Change Network Details
Section titled “POST /net/:netId/change/ - Change Network Details”Manually updates network fields. This is a low-level endpoint for updating specific fields like name, description, or connection details without necessarily re-applying a full solution.
Endpoint
POST /net/:netId/change/
Parameters
Path Parameters
netId(number, required): The ID of the network.
Body
All fields are optional:
name(string): Network name.description(string): Network description.devicePasswords(string[]): Controller passwords.controllerModbusUnitId(number): Modbus Unit ID (0-255).sku(string): Device SKU.solution(string): Solution type.connectionType(string):direct,backward, orvpn.mac(string): MAC address.ip(string): IP address.port(number): Port.connectCode(string): Connect code.maxInflightRequestsNum(number): Max parallel requests.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
status:ok.netSlug: Current slug of the network.
Example Request
{ "name": "Updated Name", "description": "Manual update"}POST /net/:netId/connection-status/ - Get Network Connection Status
Section titled “POST /net/:netId/connection-status/ - Get Network Connection Status”Returns the current connectivity status of a network.
Endpoint
POST /net/:netId/connection-status/
Parameters
Path Parameters
netId(number, required): The ID of the network.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
Returns either connected or disconnected object.
Connected Response
connected:since(string, optional): Timestamp since when the network is connected.
Disconnected Response
disconnected:lastSeenOn(string, optional): Last time the network was seen online.reason(string): Reason for disconnection.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{}' \ "https://ocp.overvis.com/api/v1/net/1/connection-status/"GET /net/:netId/devices/ - List Network Devices
Section titled “GET /net/:netId/devices/ - List Network Devices”Returns a list of devices belonging to a specific network.
Endpoint
GET /net/:netId/devices/
Parameters
Path Parameters
netId(number, required): The ID of the network.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
devices: Array of device objects.id(number): Device ID.name(string): Device name.disabledOn(string, optional): Timestamp when disabled.disabledBy(string, optional): Reason for disabling.
availableDevicesQuota: Remaining quota for adding devices (ornullif unlimited).
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/net/1/devices/"POST /net/:netId/drop-connections/ - Drop Network Connections
Section titled “POST /net/:netId/drop-connections/ - Drop Network Connections”Immediately closes all active socket connections for a network.
Endpoint
POST /net/:netId/drop-connections/
Parameters
Path Parameters
netId(number, required): The ID of the network.
Authorization
- Permission: operator (send data to org devices)
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{}' \ "https://ocp.overvis.com/api/v1/net/1/drop-connections/"GET /org/:orgId/alerts/ - Get List of Alerts
Section titled “GET /org/:orgId/alerts/ - Get List of Alerts”Returns an array with basic information about all alerts that belong to the organization.
Endpoint
GET /org/:orgId/alerts/
Parameters
Path Parameters
orgId(number, required): ID of the organization.
Response
Returns an array of alert objects.
Response Fields
id(number): System ID of the alert.name(string): Alert name.slug(string): URL-compatible code for the alert.
Example Request
GET /org/1/alerts/
Example Response
[ { "id": 4, "name": "AND Logic Alert", "slug": "and-logic-alert" }, { "id": 3, "name": "OR Logic Alert", "slug": "asdf" }]POST /org/:orgId/alerts/create/ - Create Alert
Section titled “POST /org/:orgId/alerts/create/ - Create Alert”Creates a new alert for an organization.
Endpoint
POST /org/:orgId/alerts/create/
Parameters
Path Parameters
orgId(number, required): ID of the organization.
Body
name(string, required): Name of the alert.description(string, optional): Description.conditionLogic(string, required): “all” or “any”.logAs(string, required): “none”, “info”, “warning”, “failure”, “critical”.conditions(array, required):paramId(number, optional): Parameter ID.kind(string, required): “g”, “ge”, “l”, “le”, “eq”, “neq”, “reading-error”.value(string, optional): Threshold value.
actions(array, required):timeoutMinutes(number, required): Timeout before action.type(string, optional): “sms”, “email”, “voice-call”, "".recepient(string, optional): Recipient details.
followUps(array, optional):stage(string, required): “confirmed”, “not-confirmed”, “resolved”.timeoutMinutes(number, required): Timeout.type(string, required): “sms”, “email”, “voice-call”.recepient(string, required): Recipient details.
Response
Returns a result object.
Success Response
{ "result": "success", "errors": {}}Error Response
{ "result": "error", "errors": { "name": "Name is too short" }}GET /org/:orgId/alerts/log/ - Get Organization Alert Log
Section titled “GET /org/:orgId/alerts/log/ - Get Organization Alert Log”Returns alert log records (journal) for an organization.
Endpoint
GET /org/:orgId/alerts/log/
Parameters
Path Parameters
orgId(number, required): Organization ID.
Query
page(number, optional): Page number (default 1).itemsOnPage(number, optional): Items per page (default 25, max 100).netId(number, optional): Network ID filter. When set, returns only alert log records for alerts that have at least one condition on this network.
Response
Returns a paginated list of alert log records.
Example Request
GET /org/456/alerts/log/?page=1&itemsOnPage=25&netId=12
Example Response
{ "records": [ { "name": "High Temperature", "startedOn": "2025-01-15T10:22:00.000Z", "resolvedOn": "2025-01-15T11:05:00.000Z", "logAs": "warning", "logAsText": "Warning", "status": "resolved", "confirmedOn": "2025-01-15T10:25:00.000Z", "details": [ { "date": "2025-01-15T10:22:00.000Z", "texts": ["Event started.", "Room Temp (Device A > Net A) = 85 C"] } ] } ], "totalRecords": 128, "currentPage": 1, "itemsOnPage": 25}GET /org/:orgId/dashboard/ - Get Data for the Dashboard
Section titled “GET /org/:orgId/dashboard/ - Get Data for the Dashboard”Returns full information for the organization’s dashboard, including networks, devices, parameters, and active events (alerts).
Endpoint
GET /org/:orgId/dashboard/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Query Parameters
includeParams(number, optional): If set to1, includes a full list of tracked parameters for each device.lang(string, required): Locale for the response (en,pl,ru,ua).
Authorization
- Permission: demo (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
A JSON object with:
networks: List of networks in the organization.id,name,isConnected,lastConnectionOn,url,connectionType,slug,disabledOn.devices: List of devices in each network.id,name,lastReadOn,nextReadOn,nextReadMsg,nextReadMsgCode,url,disabledOn.paramWidgets: Configured dashboard widgets for the device.params: List of tracked parameters (ifincludeParams=1).
events: List of active or historical events (alerts) for the dashboard.id,name,level,deviceIds,paramIds,networkIds,isActive,journalUrl,startedOn.
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "ca09571a-79d9-4e07-8c84-2bc5f60189e3" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/org/1/dashboard/?includeParams=1&lang=en"Example Response
{ "networks": [ { "id": 1, "name": "Main Network", "isConnected": true, "devices": [ { "id": 10, "name": "Controller 1", "paramWidgets": [], "params": [] } ] } ], "events": []}POST /org/:orgId/dashboard/add-widgets/ - Add Widgets to Dashboard
Section titled “POST /org/:orgId/dashboard/add-widgets/ - Add Widgets to Dashboard”Adds selected parameters to the organization dashboard.
Endpoint
POST /org/:orgId/dashboard/add-widgets/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Body
paramIds(array of numbers, required): System IDs of parameters that should be added to the dashboard.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Error Codes
NotAuthorized: Incorrect param IDs or unauthorized access.
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{ "paramIds": [1, 2, 3] }' \ "https://ocp.overvis.com/api/v1/org/1/dashboard/add-widgets/"Example Response
{}POST /org/:orgId/dashboard/change/ - Change Dashboard Settings
Section titled “POST /org/:orgId/dashboard/change/ - Change Dashboard Settings”Updates the list of parameter widgets displayed on the dashboard for an organization.
Endpoint
POST /org/:orgId/dashboard/change/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Body
paramIds(array of numbers, required): List of parameter IDs to display as widgets on the dashboard.
Authorization
- Permission: edit access to org objects.
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "ca09571a-79d9-4e07-8c84-2bc5f60189e3" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{"paramIds": [101, 102, 105]}' \ "https://ocp.overvis.com/api/v1/org/1/dashboard/change/"Example Response
{}GET /org/:orgId/dashboard/light/ - Get Dashboard Data (Lightweight)
Section titled “GET /org/:orgId/dashboard/light/ - Get Dashboard Data (Lightweight)”Returns a subset of dashboard information, optimized for frequent updates. Primarily returns connectivity and parameter values.
Endpoint
GET /org/:orgId/dashboard/light/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Query Parameters
lang(string, required): Locale for the response (en,pl,ru,ua).expandedNetworkIds(string, optional): Comma-separated list of network IDs to include detailed device info for.expandedDeviceIds(string, optional): Comma-separated list of device IDs to include detailed parameter info for.
Authorization
- Permission: demo (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
A JSON object with:
networks: List of networks.id,isConnected,lastConnectionOn.devices: List of devices.id,lastReadOn,nextReadOn,nextReadMsg,nextReadMsgCode.paramWidgets: Lightweight widget info.
events: Active alerts list.
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "ca09571a-79d9-4e07-8c84-2bc5f60189e3" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/org/1/dashboard/light/?lang=en&expandedNetworkIds=1"Example Response
{ "networks": [ { "id": 1, "isConnected": true, "devices": [ { "id": 10, "paramWidgets": [] } ] } ], "events": []}GET /org/:orgId/get-resource-reports/ - Get Org Resource Reports
Section titled “GET /org/:orgId/get-resource-reports/ - Get Org Resource Reports”Returns a list of resource reports available for an organization.
Endpoint
GET /org/:orgId/get-resource-reports/
Parameters
Path Parameters
orgId(integer, required): The ID of the organization.
Response
An array of report objects, each containing an id (UUID) and a name.
Example Request
GET /org/1/get-resource-reports/
Example Response
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Monthly Energy Report" }]GET /org/:orgId/nets/ - Get Organization Networks List
Section titled “GET /org/:orgId/nets/ - Get Organization Networks List”Returns basic information about organization networks.
Endpoint
GET /org/:orgId/nets/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An array of objects:
id(number): Unique ID of the network.name(string): Name of the network.slug(string): URL-conformant code.lid(object): Connection identifier (Logical ID).backward(string): MAC address if backward connection.direct(string): IP:Port if direct connection.
disabledOn(string, optional): Date when the network was disabled.disabledBy(string, optional): Reason for disabling (admin,billing,user).
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/org/1/nets/"Example Response
[ { "id": 17, "name": "Network 1", "slug": "network-1", "lid": { "backward": "d8:80:39:4e:8d:e9" } }]POST /org/:orgId/nets/create/ - Create Network
Section titled “POST /org/:orgId/nets/create/ - Create Network”Creates a new network in an organization with a specific connection type and solution.
Endpoint
POST /org/:orgId/nets/create/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Body
name(string, required): Network name.description(string, optional): Network description.language(string, required): Preferred language (en,ru,pl,ua).controllerModbusUnitId(number, required): Modbus Unit ID for the controller (0-255).sku(string, optional): Device SKU.devicePasswords(string[], required): List of device passwords.maxInflightRequestsNum(number, required): Max parallel Modbus requests.disabled(boolean, required): Whether the network is created in disabled state.connection(object, required): Connection details.kind:connect-code,activation-code, ordirect.- … connection specific fields (
code,ip,port).
solution(object, required): Network solution type.kind:standalone,rpm416,opcb221,em130.devices(array, forstandalone): List of Modbus devices.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
status:okorerror.netSlug(string, if ok): The slug of the newly created network.errorMessage(string, if error): Description of the error.
Example Request
{ "name": "Warehouse A", "language": "en", "controllerModbusUnitId": 1, "devicePasswords": ["pass123"], "maxInflightRequestsNum": 1, "disabled": false, "connection": { "kind": "direct", "ip": "192.168.1.10", "port": 502 }, "solution": { "kind": "standalone", "devices": [{ "modbusId": 10 }] }}GET /org/:orgId/nets/device-param-tree/ - Get Organization Networks-Devices-Parameters Tree
Section titled “GET /org/:orgId/nets/device-param-tree/ - Get Organization Networks-Devices-Parameters Tree”Returns a full tree of networks, devices, and all their tracked parameters in an organization.
Endpoint
GET /org/:orgId/nets/device-param-tree/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
A multi-level dictionary where keys are system IDs.
-
Level 1 (Networks): Key is Network ID.
name(string)description(string, optional)slug(string)solution(string):standalone,ice,rpm416,em130,opcb221.mac(string, optional)ip(string)port(number)devices(object): Level 2 dictionary.
-
Level 2 (Devices): Key is Device ID.
name(string)description(string, optional)slug(string)modbusUnitId(number)parameters(object): Level 3 dictionary.
-
Level 3 (Parameters): Key is Parameter ID.
name(string)description(string, optional)slug(string)fullName(string)address(number)isTracked(boolean)isProgrammable(boolean)label(string, optional)unitName(string, optional)
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/org/1/nets/device-param-tree/"POST /org/:orgId/params/get-id-by-reference/ - Get Parameter ID by Reference
Section titled “POST /org/:orgId/params/get-id-by-reference/ - Get Parameter ID by Reference”Resolves a parameter reference string to its system ID.
Endpoint
POST /org/:orgId/params/get-id-by-reference/
Parameters
orgId: Organization ID.
Request Body
emptyName: Parameter reference string (sent as a raw string).
Response
id: System ID of the parameter (integer).
Errors
401 NotAuthorized: Unauthorized to view organization objects.404 ObjectNotFound: Organization or parameter not found.
POST /org/:orgId/params/get-param-values/ - Get Param Values
Section titled “POST /org/:orgId/params/get-param-values/ - Get Param Values”Returns the current or last known values for a set of parameters in an organization.
Endpoint
POST /org/:orgId/params/get-param-values/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Body
params(string, required): A space-separated list of parameter paths.
Parameter Path Formats:
!number: Returns the number itself (e.g.,!10returns10).conn?netRef: Returns connection status for the specified network (1 for connected, 0 for disconnected, “NON” if not found).paramPath: Returns the last tracked reading for the parameter.*paramPath: Returns a real-time reading for the parameter.
Response
A JSON object where keys are the requested parameter paths and values are strings or numbers representing the values.
Error Codes
NOP: Parameter not found.NOLR: No last reading available.NORV: Real-time reading failed.NON: Network not found.
Example Request
POST /org/1/params/get-param-values/
{ "params": "room1.temp *room1.humidity !100 conn?main-net"}Example Response
{ "room1.temp": "22.5 °C", "*room1.humidity": 45.2, "!100": 100, "conn?main-net": 1}POST /org/:orgId/params/increment/ - Increment Parameter Value
Section titled “POST /org/:orgId/params/increment/ - Increment Parameter Value”Increments a parameter value by a specified amount.
Endpoint
POST /org/:orgId/params/increment/
Parameters
orgId: Organization ID.
Request Body
param: Parameter reference string.amount: Amount to increment by (stringified number).
Response
ok: Object containingoldValue(optional) andnewValue.err: Error message (optional).
Errors
401 NotAuthorized: Unauthorized to send data to org devices.404 ObjectNotFound: Organization or parameter not found.
POST /org/:orgId/params/save-param-value/ - Save Parameter Value
Section titled “POST /org/:orgId/params/save-param-value/ - Save Parameter Value”Writes a new value to a parameter specified by its reference string.
Endpoint
POST /org/:orgId/params/save-param-value/
Parameters
orgId: Organization ID.
Request Body
param: Parameter reference string (e.g.,deviceSlug>registerKind>address).value: New value to write.
Response
ok: Object containingoldValue(optional) andnewValue.err: Error message (optional).
Errors
401 NotAuthorized: Unauthorized to send data to org devices.404 ObjectNotFound: Organization or parameter not found.
POST /org/:orgId/params/toggle/ - Toggle Parameter Value
Section titled “POST /org/:orgId/params/toggle/ - Toggle Parameter Value”Toggles a parameter value between a default and an on value.
Endpoint
POST /org/:orgId/params/toggle/
Parameters
orgId: Organization ID.
Request Body
param: Parameter reference string.default: Default value (off state).on: On value (on state).
Response
ok: Object containingoldValue(optional) andnewValue.err: Error message (optional).
Errors
401 NotAuthorized: Unauthorized to send data to org devices.404 ObjectNotFound: Organization not found.
POST /org/:orgId/resource-report/create/ - Create or Update Resource Report
Section titled “POST /org/:orgId/resource-report/create/ - Create or Update Resource Report”Creates a new resource report or updates an existing one for an organization.
Endpoint
POST /org/:orgId/resource-report/create/
Parameters
Path Parameters
orgId(integer, required): The ID of the organization.
Body
id(string, optional): The UUID of the report to update. If omitted, a new report is created.name(string, required): The name of the report.branches(array, required): A list of branch objects defining the report structure.
Branch Object:
id(string, required): UUID of the branch.name(string, required): Name of the branch.parentBranchId(string, optional): UUID of the parent branch.borders(string, optional): Border definitions.category(string, optional): Branch category.value(object, optional): One of:{"paramId": number}{"formula": string}{"linkId": string}(UUID)
Response
Returns the reportId (UUID) of the created or updated report.
Example Request
POST /org/1/resource-report/create/
{ "name": "Energy Report", "branches": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Total Consumption", "value": { "paramId": 123 } } ]}Example Response
{ "reportId": "550e8400-e29b-41d4-a716-446655440000"}POST /org/:orgId/sms-settings/ - Change Organization SMS Settings
Section titled “POST /org/:orgId/sms-settings/ - Change Organization SMS Settings”Updates SMS-related settings for an organization, such as disabling SMS alerts or setting a monthly cost limit.
Endpoint
POST /org/:orgId/sms-settings/
Parameters
Path Parameters
orgId(number, required): The ID of the organization.
Body
disableSms(boolean, required): Whether to disable SMS alerts.limit(number, optional): Monthly SMS cost limit (0-1000).
Authorization
- Permission: owner/manager (manage access to org)
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Error Codes
NotAuthorized: Unauthorized access or SMS disabled by system/billing.
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ -d '{ "disableSms": false, "limit": 100 }' \ "https://ocp.overvis.com/api/v1/org/1/sms-settings/"Example Response
{}GET /org/:orgId/viss/ - Get Organization Visualizations
Section titled “GET /org/:orgId/viss/ - Get Organization Visualizations”Returns a list of all visualizations belonging to a specific organization.
Endpoint
GET /org/:orgId/viss/
Parameters
Path Parameters
orgId(number, required): ID of the organization.
Response
Returns an array of visualization objects.
Response Fields
id(number): Visualization ID.name(string): Visualization name.
Example Request
GET /org/1/viss/
Example Response
[ { "id": 1, "name": "Main Dashboard" }, { "id": 2, "name": "Energy Usage" }]POST /org/:orgId/viss/data/ - Get Multiple Visualizations Data
Section titled “POST /org/:orgId/viss/data/ - Get Multiple Visualizations Data”Returns data for multiple visualizations within an organization.
Endpoint
POST /org/:orgId/viss/data/
Parameters
Path Parameters
orgId(number, required): ID of the organization.
Body
visIds(array of numbers, required): List of visualization IDs.
Response
Returns an object where keys are visualization IDs and values are objects containing data codes and values.
Example Request
POST /org/1/viss/data/
{ "visIds": [7, 8]}Example Response
{ "7": { "roomName": "Room 1", "ownerName": "John" }, "8": { "temp": "25" }}POST /org/:orgId/viss/info/ - Get Multiple Visualizations Info
Section titled “POST /org/:orgId/viss/info/ - Get Multiple Visualizations Info”Returns detailed information for a list of visualizations within an organization.
Endpoint
POST /org/:orgId/viss/info/
Parameters
Path Parameters
orgId(number, required): ID of the organization.
Body
visIds(array of numbers, required): List of visualization IDs.
Response
Returns an array of visualization objects (see Get Visualization Data for field details).
Example Request
POST /org/1/viss/info/
{ "visIds": [1, 2]}GET /param/:paramId/dashboard-data/ - Get Parameter Dashboard Data
Section titled “GET /param/:paramId/dashboard-data/ - Get Parameter Dashboard Data”Retrieves 24 hours of 15-minute aggregated reading data for a parameter, suitable for dashboard charts.
Endpoint
GET /param/:paramId/dashboard-data/
Parameters
paramId: Parameter ID.
Response
- Array of 96 values (numbers or null), representing 15-minute intervals for the last 24 hours.
Errors
401 NotAuthorized: Unauthorized to view organization objects.404 ObjectNotFound: Parameter not found.
GET /param/:paramId/dashboard-widget-data/ - Get Param Widget Data
Section titled “GET /param/:paramId/dashboard-widget-data/ - Get Param Widget Data”Returns information needed to display a widget for a specific parameter on the dashboard.
Endpoint
GET /param/:paramId/dashboard-widget-data/
Parameters
Path Parameters
paramId(number, required): The ID of the parameter.
Response
Returns an object containing parameter details and its last known value.
Response Fields
id(number): Parameter ID.name(string): Parameter short name.fullName(string): Parameter full name (including device name).lastValue(number, optional): Last known numerical value.lastReadOn(string, optional): ISO timestamp of the last reading.deviceId(number): ID of the device this parameter belongs to.readingReportUrl(string): URL to view the readings report for this parameter.deviceDisabledOn(string, optional): Timestamp if the device is disabled.isProgrammable(boolean): Whether the parameter value can be written.unitName(string, optional): Unit of measurement.label(string, optional): Parameter label.
Example Request
GET /param/1/dashboard-widget-data/
Example Response
{ "id": 1, "name": "Temperature", "fullName": "Main Device - Temperature", "lastValue": 25.4, "lastReadOn": "2024-03-20T10:00:00.000Z", "deviceId": 10, "readingReportUrl": "/manage/reports/readings/?paramIds=1", "isProgrammable": false, "unitName": "°C", "label": "T1"}POST /param/:paramId/write/ - Write Parameter Value
Section titled “POST /param/:paramId/write/ - Write Parameter Value”Sends a new value to a specific parameter on the device.
Endpoint
POST /param/:paramId/write/
Parameters
Path Parameters
paramId(number, required): The ID of the parameter.
Body
newValue(string, required): The value to write, as a string.lang(string, optional): Locale for the formatted result (en,ru,pl,ua).
Authorization
- Permission: operator (send data to org devices)
- Requires a valid session token in the
Authorizationheader.
Response
Returns either an ok object with success details or an err message.
Success Response
ok:oldValue(string): The value before the write operation.newValue(string): The newly written value.formattedValue(string): Human-readable representation of the new value.
Error Response
err(string): Error message from the device or communication stack.
Example Request
{ "newValue": "25.0", "lang": "en"}Example Response
{ "ok": { "oldValue": "22.5", "newValue": "25.0", "formattedValue": "25.0 °C" }}POST /params/change/ - Change Parameters
Section titled “POST /params/change/ - Change Parameters”Updates metadata for a list of parameters, such as category, background tracking status, or programmability.
Endpoint
POST /params/change/
Parameters
Body
paramIds(array of numbers, required): List of parameter IDs to modify.modification(object, required): Fields to update.category(string, optional): New category name.isTracked(boolean, optional): Enable/disable background tracking.isProgrammable(boolean, optional): Enable/disable remote writing.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Example Request
{ "paramIds": [101, 102], "modification": { "isTracked": true, "category": "Main Readings" }}POST /params/delete/ - Delete Parameters
Section titled “POST /params/delete/ - Delete Parameters”Deletes a list of parameters from the system.
Endpoint
POST /params/delete/
Parameters
Body
paramIds(array of numbers, required): List of parameter IDs to delete.
Authorization
- Permission: manager (edit access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An empty JSON object {}.
Example Request
{ "paramIds": [101, 102]}GET /params/get-info/ - Get Parameters Information
Section titled “GET /params/get-info/ - Get Parameters Information”Returns metadata for a list of specified parameters, including their associated device and network information.
Endpoint
GET /params/get-info/
Parameters
Query Parameters
paramIds(string, required): Comma-separated list of parameter IDs.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An array of parameter info objects:
id(number): Parameter ID.name(string): User-defined parameter name.fullName(string): Full formatted name.slug(string): URL-conformant code.deviceId,deviceName,deviceSlug: Associated device info.networkId,networkName,networkSlug: Associated network info.address(number): Modbus address.valueType(string): Data type.registerKind(string): Modbus register type (holding,input, etc.).isProgrammable(boolean): Whether the parameter is writable.bitPosition,bitsAmount(number, optional): Bit-level info for bitmask parameters.label,unitName(string, optional): Display label and unit.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/params/get-info/?paramIds=101,102"GET /params/last-readings/ - Get Last Readings of Parameters
Section titled “GET /params/last-readings/ - Get Last Readings of Parameters”Returns the last read values for a set of parameters. Values are automatically converted and formatted according to parameter settings.
Endpoint
GET /params/last-readings/
Parameters
Query Parameters
paramIds(string, required): Comma-separated list of parameter IDs.lang(string, required): Locale for formatted values (en,pl,ru,ua).
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
A dictionary where keys are parameter IDs.
Success Item
value(string): The numeric value as a string.readOn(string): Timestamp of the reading.formattedValue(string): Human-readable value (e.g., “True”, “12.3 kg”).
Error Item
err(string): Error code (e.g.,no-value).
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/params/last-readings/?paramIds=101,102&lang=en"Example Response
{ "101": { "value": "25.5", "readOn": "2023-12-14T01:35:44Z", "formattedValue": "25.5 °C" }, "102": { "err": "no-value" }}GET /params/read-realtime/ - Read Real-time Value of Parameter
Section titled “GET /params/read-realtime/ - Read Real-time Value of Parameter”Performs a real-time reading from the device and returns the current values of the requested parameters.
Endpoint
GET /params/read-realtime/
Parameters
Query Parameters
paramIds(string, required): Comma-separated list of parameter IDs.lang(string, required): Locale for formatted values (en,ru,pl,ua).failbackToDb(boolean, optional): Iftrue, returns the last known value from the database if real-time reading fails.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
A dictionary where keys are parameter IDs.
Success Item
value(string): Current numeric value.formattedValue(string): Human-readable formatted value.
Error Item
err(string): Error code or message if reading failed.
Example Request
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/params/read-realtime/?paramIds=101,102&lang=en&failbackToDb=true"Example Response
{ "101": { "value": "25.5", "formattedValue": "25.5 °C" }, "102": { "err": "Timeout" }}POST /params/readings-on-time/ - Get Parameters Readings on Specific Time
Section titled “POST /params/readings-on-time/ - Get Parameters Readings on Specific Time”Returns the last read values of specified parameters up to a given date.
Endpoint
POST /params/readings-on-time/
Parameters
Body
orgId(number, required): Organization ID.tillDate(string, required): ISO 8601 timestamp up to which the reading should be fetched.paramIds(array of numbers, required): List of parameter IDs.
Authorization
- Permission: viewer (view access to org objects)
- Requires a valid session token in the
Authorizationheader.
Response
An object where keys are parameter IDs. Values are either a reading object or null.
Success Item
value(string): The numeric value as a string.readOn(string): ISO 8601 timestamp of the reading.
Example Request
{ "orgId": 1, "tillDate": "2025-01-01T00:00:00.000Z", "paramIds": [101, 102]}Example Response
{ "101": { "readOn": "2024-12-11T09:50:00.000Z", "value": "1499" }, "102": null}POST /raw/check-connection/ - Raw Check Connection
Section titled “POST /raw/check-connection/ - Raw Check Connection”Check if a connection to a modbus device can be established.
Endpoint
POST /raw/check-connection/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).connection(object, required): Connection details.sku(string, optional): Device SKU.
Response
Returns a status object indicating connection state.
Connected Response
{ "status": { "connected": { "unitId": 1, "version": 10, "deviceIdentificationMarker": 123 } }}No Connection Response
{ "status": "NoConnection"}Reading Failure Response
{ "status": { "readingFailure": "Description of failure" }}POST /raw/check-device-read/ - Raw Check Device Read
Section titled “POST /raw/check-device-read/ - Raw Check Device Read”Check if a specific modbus device can be read using a template.
Endpoint
POST /raw/check-device-read/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).templateId(number, required): ID of the template to use for testing the read.connection(object, required): Connection details.sku(string, optional): Device SKU.
Response
Returns a status object.
Success Response
{ "status": "ok"}Error Response
{ "status": "error", "errorMessage": "Description of error"}POST /raw/read-controller-modbus-settings/ - Raw Read Controller Modbus Settings
Section titled “POST /raw/read-controller-modbus-settings/ - Raw Read Controller Modbus Settings”Read Modbus communication settings from a controller.
Endpoint
POST /raw/read-controller-modbus-settings/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).sku(string, required): Device SKU.connection(object, required): Connection details.controllerVersion(number, optional): Controller version.
Response
Returns a status object with communication settings.
Success Response
{ "status": "ok", "controllerUnitId": 1, "bitRate": 9600, "byteFormat": 0}Error Response
{ "status": "error", "errorMessage": "Description of error"}POST /raw/read-multiple-register-group/ - Raw Read Multiple Register Group
Section titled “POST /raw/read-multiple-register-group/ - Raw Read Multiple Register Group”Read multiple register groups using provided controllers/devices data and starting addresses.
Endpoint
POST /raw/read-multiple-register-group/
Parameters
Body
Request body should contain an array of objects with the following properties:
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).address(number, required): Starting address (0-65535).kind(string, required): Kind of register group:holding- 16-bit word. Read-Write.coil- Single bit. Read-Write.discrete-input- Single bit. Read-Only.input- 16-bit word. Read-Only.
registersNum(number, required): Count of registers that should be read.connection(object, required): Object describing connection type:kind: “connect-code”, “activation-code”, “direct”, “backward”, “net-id”.code: String (8 chars) for “connect-code” or number for “activation-code”.ip: IPv4 address for “direct”.port: Port number for “direct”.mac: MAC address for “backward”.networkId: ID for “net-id”.
sku(string, optional): Device SKU.
Response
Returns an array of objects, one for each requested group:
netLid(string): Network local identifier.connection(object): The connection used.deviceModbusId(number): Device ID.address(number): Register address.kind(string): Register kind.registersNum(number): Number of registers.result(object): Either{ "ok": [values] }or{ "err": "error message" }.
Example Request
POST /raw/read-multiple-register-group/
[ { "deviceModbusId": 1, "address": 3, "registersNum": 5, "kind": "holding", "connection": { "kind": "direct", "ip": "127.0.0.1", "port": 55502 } }, { "deviceModbusId": 111, "address": 459, "registersNum": 1, "kind": "holding", "connection": { "kind": "direct", "ip": "127.0.0.1", "port": 55502 } }]Example Response
[ { "netLid": "127.0.0.1:55502", "connection": { "kind": "direct", "ip": "127.0.0.1", "port": 55502 }, "deviceModbusId": 1, "address": 3, "kind": "holding", "registersNum": 5, "result": { "ok": [65535, 65535, 65535, 65535, 65535] } }, { "netLid": "127.0.0.1:55502", "connection": { "kind": "direct", "ip": "127.0.0.1", "port": 55502 }, "deviceModbusId": 111, "address": 459, "kind": "holding", "registersNum": 1, "result": { "ok": [9600] } }]POST /raw/read-multiple-register-groups/with-timeout/ - Raw Read Multiple Register Groups With Timeout
Section titled “POST /raw/read-multiple-register-groups/with-timeout/ - Raw Read Multiple Register Groups With Timeout”Read multiple register groups sequentially with an optional overall timeout.
Endpoint
POST /raw/read-multiple-register-groups/with-timeout/
Parameters
Body
timeoutSec(number, optional): Overall timeout in seconds.regs(array, required): Array of register group request objects:deviceModbusId(number, required): Identifier of device inside modbus network (1-255).address(number, required): Starting address (0-65535).kind(string, required): Register kind (holding,coil,discrete-input,input).registersNum(number, required): Count of registers to read.connection(object, required): Connection details.sku(string, optional): Device SKU.
Response
Returns an array of objects, one for each requested group (up until the timeout was reached):
netLid(string): Network local identifier.connection(object): The connection used.deviceModbusId(number): Device ID.address(number): Register address.kind(string): Register kind.registersNum(number): Number of registers.result(object): Either{ "ok": [values] }or{ "err": "error message" }.
Example Request
POST /raw/read-multiple-register-groups/with-timeout/
{ "timeoutSec": 5, "regs": [ { "deviceModbusId": 1, "address": 0, "registersNum": 10, "kind": "holding", "connection": { "kind": "direct", "ip": "127.0.0.1", "port": 502 } } ]}POST /raw/read-register-group/ - Raw Read Register Group
Section titled “POST /raw/read-register-group/ - Raw Read Register Group”Read register group using provided controller/device data and starting address.
Endpoint
POST /raw/read-register-group/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).address(number, required): Starting address (0-65535).kind(string, required): Kind of register group:holding- 16-bit word. Read-Write.coil- Single bit. Read-Write.discrete-input- Single bit. Read-Only.input- 16-bit word. Read-Only.
registersNum(number, required): Count of registers that should be read.connection(object, required): Object describing connection type:kind: “connect-code”, “activation-code”, “direct”, “backward”, “net-id”.code: String (8 chars) for “connect-code” or number for “activation-code”.ip: IPv4 address for “direct”.port: Port number for “direct”.mac: MAC address for “backward”.networkId: ID for “net-id”.
sku(string, optional): Device SKU.
Response
Returns an object with either ok containing an array of register values or err with error
message.
Example Request
POST /raw/read-register-group/
{ "deviceModbusId": 1, "address": 3, "registersNum": 5, "kind": "holding", "connection": { "kind": "direct", "ip": "192.168.1.10", "port": 502 }}Example Response
{ "ok": [65535, 65535, 0, 12, 450]}POST /raw/send-controller-passwords/ - Raw Send Controller Passwords
Section titled “POST /raw/send-controller-passwords/ - Raw Send Controller Passwords”Send a set of passwords to a controller for authentication.
Endpoint
POST /raw/send-controller-passwords/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).passwords(array of strings, required): List of passwords to send.connection(object, required): Connection details.sku(string, optional): Device SKU.controllerVersion(number, optional): Controller version.
Response
Returns a status object.
Success Response
{ "status": "ok"}Error Response
{ "status": "error", "errorMessage": "Description of error"}POST /raw/write-controller-modbus-settings/ - Raw Write Controller Modbus Settings
Section titled “POST /raw/write-controller-modbus-settings/ - Raw Write Controller Modbus Settings”Write Modbus communication settings to a controller.
Endpoint
POST /raw/write-controller-modbus-settings/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).sku(string, required): Device SKU.settings(object, required):bitRate(number, required): The bit rate (e.g. 9600).byteFormat(number, required): The byte format (0-5, or -1 for default).
connection(object, required): Connection details.controllerVersion(number, optional): Controller version.
Response
Returns a status object.
Success Response
{ "status": "ok"}Error Response
{ "status": "error", "errorMessage": "Description of error"}POST /raw/write-register-group/ - Raw Write Register Group
Section titled “POST /raw/write-register-group/ - Raw Write Register Group”Write values to a register group on a modbus device.
Endpoint
POST /raw/write-register-group/
Parameters
Body
deviceModbusId(number, required): Identifier of device inside modbus network (1-255).address(number, required): Starting address (0-65535).kind(string, required): Kind of register group (holding,coil,discrete-input,input).value(array of numbers, required): Values to write (0-65535 each).connection(object, required): Connection details.sku(string, optional): Device SKU.
Response
Returns a status object.
Success Response
{ "status": "ok"}Error Response
{ "status": "error", "errorMessage": "Description of error"}Example Request
POST /raw/write-register-group/
{ "deviceModbusId": 1, "address": 10, "kind": "holding", "value": [100, 200], "connection": { "kind": "direct", "ip": "192.168.1.10", "port": 502 }}GET /readings/date-range/ - Get Readings Date Range
Section titled “GET /readings/date-range/ - Get Readings Date Range”Returns the minimum and maximum timestamps for which readings exist for a set of parameters.
Endpoint
GET /readings/date-range/
Parameters
Query Parameters
paramIds(string, required): A comma-separated list of parameter IDs.
Response
A JSON object with min and max timestamps in ISO 8601 format, or an empty object if no readings
are found.
Example Request
GET /readings/date-range/?paramIds=1,2,3
Example Response
{ "min": "2023-01-01T00:00:00.000Z", "max": "2023-12-31T23:59:59.999Z"}POST /readings/dispersed/ - Get Dispersed Readings
Section titled “POST /readings/dispersed/ - Get Dispersed Readings”Returns specified number of data points for a requested parameters on a given time range.
Endpoint
POST /readings/dispersed/
Parameters
Body
paramIds(integer[], required): List of parameter IDs.from(string, required): Start date of the check range (ISO 8601).till(string, required): End date of the check range (ISO 8601).points(integer, required): Number of points to take in this date range (for each parameter). Maximum: 1000.
Response
Result is an array of “segment” records. Each record is an array where the first item is a ISO 8601
datetime, and the second item is an array of parameter values during that segment in the order of
paramIds provided.
Example Request
POST /readings/dispersed/
{ "paramIds": [271, 272], "from": "2020-05-26T16:28:00Z", "till": "2020-05-28T17:25:00Z", "points": 10}Example Response
[ ["2019-07-26T16:28:00Z", [7.0, 2018.0]], ["2019-07-26T16:33:42Z", [7.0, 2018.0]], ["2019-07-26T16:39:24Z", [7.0, 2018.0]]]GET /readings/get/ - Get Readings
Section titled “GET /readings/get/ - Get Readings”Returns stored data points for a requested time range for a given parameter.
Endpoint
GET /readings/get/
Parameters
Query Parameters
paramId(integer, required): ID of the parameter.from(string, optional): Start date of the range (ISO 8601). If omitted, response will contain lastpointsLimitdata points up totilldate.till(string, optional): End date of the range (ISO 8601). If omitted, end date will be the current time.pointsLimit(integer, optional): Limit on the number of the returned data points. Maximum and default: 1000.
Response
Result is an array of data points. Each record is an array where the first item is a ISO 8601 datetime, and the second item is the parameter value (number or null). Data points are sorted by dates in a descending order.
Example Request
GET /readings/get/?paramId=284&from=2020-01-01T00:00:00Z&till=2020-08-17T00:00:00Z&pointsLimit=100
Example Response
[ ["2019-07-26T16:28:00Z", 7.0], ["2019-07-26T16:33:42Z", 7.0], ["2019-07-26T16:39:24Z", 7.0]]POST /readings/min-max-range/ - Range of Readings Values for a Given Period
Section titled “POST /readings/min-max-range/ - Range of Readings Values for a Given Period”Returns minimum and maximum values of the requested parameters on a given time range.
Endpoint
POST /readings/min-max-range/
Parameters
Body
paramIds(integer[], required): List of parameter IDs.from(string, required): Start date of the check range (ISO 8601).till(string, required): End date of the check range (ISO 8601).
Response
Returns a dictionary where key is a parameter ID and value contains an object with minValueOn,
minValue, maxValueOn, and maxValue.
If the parameter has no readings during requested period, its ID won’t be specified in the response.
Example Request
POST /readings/min-max-range/
{ "paramIds": [271, 272], "from": "2019-04-01T21:52:13Z", "till": "2019-09-01T21:52:13Z"}Example Response
{ "271": { "minValueOn": "2019-07-26T17:24:02.923Z", "minValue": 2018.0, "maxValueOn": "2019-07-20T12:45:39.449Z", "maxValue": 65535.0 }, "272": { "minValueOn": "2019-05-14T21:39:33.890Z", "minValue": 5.0, "maxValueOn": "2019-07-20T12:45:39.452Z", "maxValue": 255.0 }}POST /resource-report/branch/:branchId/chart-data/ - Get Resource Report Branch Chart Data
Section titled “POST /resource-report/branch/:branchId/chart-data/ - Get Resource Report Branch Chart Data”Returns chart data for a specific branch within a resource report for a given time period and segmentation.
Endpoint
POST /resource-report/branch/:branchId/chart-data/
Parameters
Path Parameters
branchId(string, required): UUID of the branch.
Body
tz(string, required): Timezone (e.g., “UTC”, “Europe/Warsaw”).fromDateStr(string, required): Start date (ISO 8601).tillDateStr(string, required): End date (ISO 8601).segment(string, required): One of:half-hour,hour,day.
Response
A JSON object containing:
branchId(string): UUID of the branch.name(string): Name of the branch.borders(string, optional): Border definitions.values(array): List of data points, where each point is[isoDate, valueOrNull].
Example Request
POST /resource-report/branch/550e8400-e29b-41d4-a716-446655440000/chart-data/
{ "tz": "UTC", "fromDateStr": "2023-01-01T00:00:00Z", "tillDateStr": "2023-01-02T00:00:00Z", "segment": "hour"}Example Response
{ "branchId": "550e8400-e29b-41d4-a716-446655440000", "name": "Main Hall", "values": [ ["2023-01-01T00:00:00.000Z", 12.5], ["2023-01-01T01:00:00.000Z", 14.2] ]}POST /translations/ - Get Translations
Section titled “POST /translations/ - Get Translations”Translates a list of strings into the specified language.
Endpoint
POST /translations/
Parameters
Body
texts(string[], required): A list of strings to translate.lang(string, required): Target language. One of:ru,pl,en,ua.
Response
An array of translated strings in the same order as the input.
Example Request
POST /translations/
{ "texts": ["Dashboard", "Settings"], "lang": "pl"}Example Response
["Pulpit", "Ustawienia"]GET /user/orgs/ - List User Organizations Access
Section titled “GET /user/orgs/ - List User Organizations Access”Returns a list of all organizations current account (API key) has access to. Includes access level (roles) information.
Endpoint
GET /user/orgs/
Authorization
- Permission: demo
- Requires a valid session token in the
Authorizationheader.
Response
An array of objects:
orgId(number): System ID of the organization.orgName(string): Name of the organization.userRole(string): Role of the user in the organization.owner: Full access.manager: Full access, except user management.technical-manager: Similar to manager.operator: Can’t edit organization objects, but can send write requests.viewer: View-only access.monitor-operator: Monitoring UI access with ability to send write requests.monitor-viewer: View-only monitoring UI access.monitor-no-params: Limited monitoring UI access.
Example Request
TOKEN=`curl -s -H "Content-Type: application/json" \ -d '{"apiKey": "513cf747-eb5c-4d5f-931f-d22c9872c73c", "password": "DCdcSLmkoZkU5zGI9gpInDbo" }' \ "https://ocp.overvis.com/api/v1/authenticate/" | \ jq -r ".token"`
curl -s -S -H "Content-Type: application/json" -H "Authorization: token $TOKEN" \ "https://ocp.overvis.com/api/v1/user/orgs/"Example Response
[ { "orgId": 1, "orgName": "My Organization", "userRole": "owner" }]GET /version/ - Get API Version Information
Section titled “GET /version/ - Get API Version Information”Provides version of the server-side Overvis software and API.
Endpoint
GET /version/
Authorization
- Permission: none
- No authorization header required.
Response
apiVersion(string): Version of the API protocol.apiServerVersion(string): API server software version.
Example Request
curl -s -S -H "Content-Type: application/json" "https://ocp.overvis.com/api/v1/version/"Example Response
{ "apiVersion": "0.1.0", "apiServerVersion": "2403.1"}GET /vis/:visId/ - Get Visualization Data
Section titled “GET /vis/:visId/ - Get Visualization Data”Returns full information about a specific visualization.
Endpoint
GET /vis/:visId/
Parameters
Path Parameters
visId(number, required): ID of the visualization.
Response
Returns an object with visualization details.
Response Fields
id(number): Visualization ID.orgId(number): Organization ID.slug(string): Visualization slug.name(string): Visualization name.createdOn(string): ISO timestamp of creation.source(string): Configuration source (JSON/YAML).description(string, optional): Description.isDisplayedOnDashboard(boolean): Whether it’s on the dashboard.
Example Request
GET /vis/7/
Example Response
{ "id": 7, "orgId": 1, "slug": "energy-usage", "name": "Energy Usage", "createdOn": "2024-03-20T10:00:00.000Z", "source": "{...}", "isDisplayedOnDashboard": true}GET /vis/:visId/data/ - Get Visualization Data
Section titled “GET /vis/:visId/data/ - Get Visualization Data”Returns the data that the user entered in the visualization.
Endpoint
GET /vis/:visId/data/
Parameters
Path Parameters
visId(number, required): ID of the visualization.
Response
Returns a JSON object where keys are data codes and values are their corresponding values.
Example Request
GET /vis/7/data/
Example Response
{ "roomName": "Room 1", "ownerName": "John"}POST /vis/:visId/data/save/ - Save Visualization Data
Section titled “POST /vis/:visId/data/save/ - Save Visualization Data”Saves the data entered by the user in the visualization.
Endpoint
POST /vis/:visId/data/save/
Parameters
Path Parameters
visId(number, required): ID of the visualization.
Body
code(string, required): Key for the value.value(string, required): Value to be saved.
Response
Returns an empty object on success.
Example Request
POST /vis/7/data/save/
{ "code": "roomName", "value": "Room 1"}Example Response
{}