Mervis SCADA offers an open, REST-like API based on JSON and XML data formats for seamless integration with third-party applications. For a full description of advanced features, please contact our technical support.
Important Note on Formatting: While JSON is heavily utilized in newer endpoints, the only officially supported backward-compatible response format across the entire legacy API is XML.
Below is the consolidated list of recommended API endpoints. Note: Only methods with fully documented and verified examples are listed below.
| Function | Description |
|---|---|
| Authentication | |
api/v2/get/authenticate | Authenticates a user and returns a session token for subsequent API calls. |
| Project & Data Structure | |
api/get/projects | Retrieves a list of all projects accessible to the logged-in user. |
api/get/projectByParts | Retrieves the visual tree structure and the list of datapoints within a specific project. |
| Reading Data | |
api/get/values | Retrieves the current, real-time values of specified datapoints. |
api/v3/get/history | Downloads historical trend data for one or multiple series in a single, paginated call. |
api/get/history/specific | Retrieves specific historical datapoints relative to a provided reference time. |
| Writing & Execution | |
api/set/values | Writes new values to specified datapoints. |
api/set/executeActions | Executes predefined actions or buttons (e.g., INIT, ZAP commands) on datapoints. |
api/set/history | Inserts new historical data values into the database. |
api/replace/history | Completely replaces existing historical data within a specified time range. |
Note on Credentials: You can test these API calls using the credentials `n: demo` and `p: demo`. For production applications, it is required to exchange these credentials for a token using `api/v2/get/authenticate` and use the resulting token (`t: [token_string]`) in subsequent calls to ensure optimal performance.
Request:
/api/v2/get/authenticate?format=jsonStandard login:
{"data":{"cred":{"n":"demo","p":"demo"}}}
Domain-specific login:
{"data":{"cred":{"d":"GlobalDomain","n":"demo","p":"demo"}}}
Response Properties:
{ "data": { "ChangePwdBefore": null, "ClientType": 2, "Domain": "3c73477a-6c95-4939-b047-7bbf902bcef1", "DomainName": "GlobalDomain", "FullName": "GlobalDomain\\demo", "Login": "demo", "NotifyNearingPwdExpirationIn": null, "Token": "3:b83d56f8-2e25-4745-a4e5-1a259c286c5f", "TokenValidFor": "P1D", "User": "48141739-5d16-4ca3-8ae1-33e27d9eb22e", "Username": "" }, "result": { "code": 0, "codeTxt": null, "dataType": null, "desc": null } }
Retrieves current values of data points (property “Output”) from one or multiple projects.
Request:
/api/get/values?format=xml{ "cred": { "n": "demo", "p": "demo" }, "propNamesToSerialize": ["Output"], "offset": 0, "count": 1000, "serverState": null, "dps": [{ "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dpIds": ["62cf4083-31ed-4bc1-be25-044ba837a9f0"] }] }
Response:
<?xml version="1.0" encoding="utf-8"?> <values xmlns:r="http://dev.rcware.eu/serialization/references" nextOffset="-1" serverTime="2026-07-17T10:29:17Z" xmlns:n1="http://dev.rcware.eu/scada/basic-props" xmlns="http://dev.rcware.eu/scada/datapoints"> <vals> <v projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" serverTime="2026-07-17T10:29:17Z"> <dps> <d id="62cf4083-31ed-4bc1-be25-044ba837a9f0" serAlr="true"> <props> <p n="Output" t="2026-07-17T10:29:17Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>13851.42</n1:v> </p> </props> </d> </dps> </v> </vals> </values>
Downloading one or multiple trends with a single API call.
Rules:
Request:
/api/v3/get/history?format=json{ "credentials": { "name": "demo", "password": "demo" }, "request": { "commonSeriesParameters": { "from": "2026-06-20T00:00:00Z", "to": "2026-07-17T00:00:00Z" }, "series": [ { "clientReference": "test1", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } } } ] }, "dataSpecification": { "limits": { "count": 1000 } }, "segmentation": { "requestState": "", "serverState": "" } }
Response Details:
{ "result": { "code": 0, "subCode": 0, "message": "" }, "data": { "count": 1, "historyData": [ { "clientReference": "test1", "provider": { "id": "689e32fa-24a2-448e-9374-6158e6e6cb15", "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } }, "meta": { "type": "double", "unit": "h", "interval": "PT3M" }, "values": [ { "v": 13851.4, "ts": "2026-06-25T12:00:00.000Z" } ] } ] }, "segmentation": { "requestState": "", "serverState": "" } }
Request:
/api/get/history/specific?format=json{ "cred": { "n": "demo", "p": "demo" }, "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "offset": 0, "count": 1000, "dataSpec": 2, "refTime": "\/Date(1692788459000)\/", "dpIds": ["62cf4083-31ed-4bc1-be25-044ba837a9f0"] }
Request:
/api/set/values?format=xml<?xml version="1.0" encoding="UTF-8"?> <setValuesRequest xmlns:r="http://dev.rcware.eu/serialization/references" xmlns="http://dev.rcware.eu/scada/datapoints" xmlns:n2="http://dev.rcware.eu/auth" xmlns:n1="http://dev.rcware.eu/scada/comm-props" > <n2:cred n="demo" p="demo"/> <values projId="1b2623be-eaa4-4e29-8596-c66dd85d5643"> <dps> <d id="07d538d9-9f4b-46ca-ba4d-13b13b5302ff"> <props> <p n="Source" t="2024-02-23T09:58:00Z" r:type="1c104bdf-ffcb-4c90-b491-e4781a91ef09"> <n1:v>23</n1:v> </p> </props> </d> </dps> </values> </setValuesRequest>
Request:
/api/set/executeActions?format=xml<?xml version="1.0" encoding="UTF-8"?> <executeActionsRequest xmlns="http://dev.rcware.eu/scada/action-defs" xmlns:n2="http://dev.rcware.eu/scada/basic-props" xmlns:n1="http://dev.rcware.eu/auth" xmlns:r="http://dev.rcware.eu/serialization/references"> <n1:cred n="demo" p="demo"/> <actionDefs projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0"> <actions> <actionDefItem propName="INIT" dpId="afc22e18-f8e4-4e08-899c-fb9e4759df3d"> <execParam r:type="495c9644-eed1-4b94-933b-3fae702a9aca"> <n2:value>16</n2:value> </execParam> </actionDefItem> <actionDefItem propName="ZAP" dpId="34306c80-73f1-4465-ab51-2b2c1e85ab70"> </actionDefItem> </actions> </actionDefs> </executeActionsRequest>
Attribute i sets interval (ISO 8601) in which the next value should be expected. All date/time values must be in UTC.
Replace History Request Example:
/api/replace/history?format=xml<?xml version="1.0" encoding="UTF-8"?> <replaceHistoryRequest xmlns="http://dev.rcware.eu/scada/history" xmlns:n2="http://dev.rcware.eu/auth" xmlns:n1="http://dev.rcware.eu/scada/basic-props" projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" dpId="e86dba6d-1250-4e7f-aafb-84fd28324710" from="2020-03-15T11:00:00+00:00" to="2020-03-18T11:00:00+00:00"> <n2:cred n="demo" p="demo"/> <vals> <hv ts="2020-03-15T11:00:00+00:00" i="P1D"> <n1:v>2.7</n1:v> </hv> <hv ts="2020-03-16T11:00:00+00:00" i="P1D"> <n1:v>3.0</n1:v> </hv> </vals> </replaceHistoryRequest>
Request:
/api/get/projects?format=xml{ "cred": { "n": "demo", "p": "demo" }, "offset": 0, "count": 250 }
Response:
<?xml version="1.0" encoding="utf-8"?> <getProjectsResult xmlns:r="http://dev.rcware.eu/serialization/references" xmlns="http://dev.rcware.eu/scada/projects"> <projects> <project id="2a7f1615-..." name="Weather" /> <project id="1b2623be-eaa4-4e29-8596-c66dd85d5643" name="SIMPLE_DEMO" /> <project id="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" name="PLYNOVA_KOTELNA" /> <project id="b9ad5380-..." name="CVUT_HERBERTOV" /> <project id="843855a2-..." name="PRVNI_KROKY" /> </projects> </getProjectsResult>
To get the visual tree and list of datapoints.
Request:
/api/get/projectByParts?format=xml{ "cred": { "n": "demo", "p": "demo" }, "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "treeId": "Visual tree", "partType": 0, "offset": 0, "count": 250 }
{'guid1', 'guid2'} ), otherwise just one guid is expected.ScadaClient(url, username, password)
Constructor of the Mervis API wrapper.
findAllDPsWithReqTags(projIds, tags)
Returns list of datapoints based on tags query. Example of tags definition: {'label','indoor_air_temperature';'room_type','office'}
getDpTags(projectId, DpId)
Returns tags of the particular datapoint.
getAllProjectDPs(projectGuid)
Returns project IDs and names that are accessible to the logged-in user.
[data, time, dataInCell, info] = getData(projID, dpsIds, from, to, span, zone, doublesInterpolationMethod, interpolate_gaps_shorter_than)
Downloads data.
data (NaN used for missing values), time, dataInCell (useful for strings), and info.Data Download Example:
scada = ScadaClient('https://scada.mervis.info/','demo','demo'); dataPointIDs = {'acad79f3-3358-42dd-9b74-98733e63d771','1afa7d9b-1183-4ab1-a6b1-18e464ae2d4d','e496bb8c-14ce-4c2c-b53b-3b71daeabca6'}; projectId = '5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0'; chartLegend = {'Temp UT1','Temp UT1 Return','Valve Position'}; from = now - 4; to = now; timeSpan = 300; %sec [data, time] = scada.getData(projectId, dataPointIDs, from, to, timeSpan); plot(time,data); legend(chartLegend); datetick;
saveData(projID, dpID, time, data)
Saves data into the Mervis database.
setDataPointValue(projGuid, dpGuid, value, buttonName)
Sets a datapoint value using a button. Only numerical values are supported. Parameter buttonName is not mandatory; 'INIT' is used if undefined.
Example:
dpGuid = 'ccaacb77-295b-48a8-a712-3fb272aa9b6f'; projectId = '6b65447e-8622-4a0d-b3b9-42f1d905fdaa'; buttonName = 'INIT'; newValue = 1; scada = ScadaClient('https://scada.mervis.info/','demo','demo'); scada.setDataPointValue(projectId, dpGuid, newValue, buttonName)
deleteVariable(projGuid, dpGuid, from, to)
Warning: Deletes data of one variable based on from-to interval. If from-to is not defined, ALL data are deleted. Use carefully, there is no undo!