Table of Contents

Mervis SCADA API

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.

Supported API Methods

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.

Authentication

api/v2/get/authenticate

Request:

Standard 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 }
}

Reading Data

api/get/values

Retrieves current values of data points (property “Output”) from one or multiple projects.

Request:

{
 "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>

api/v3/get/history

Downloading one or multiple trends with a single API call.

Rules:

Request:

{
    "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": "" }
}

api/get/history/specific

Request:

{
 "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"]
}

Writing Data & Execution

api/set/values

Request:

<?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>

api/set/executeActions

Request:

<?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>

api/set/history & api/replace/history

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:

<?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>

Projects Management

api/get/projects

Request:

{
 "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>

api/get/projectByParts

To get the visual tree and list of datapoints.

Request:

{
 "cred": {
  "n": "demo",
  "p": "demo"
 },
 "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0",
 "treeId": "Visual tree",
 "partType": 0,
 "offset": 0,
 "count": 250
}

Matlab Client

General Notes

ScadaClient

ScadaClient(url, username, password)

Constructor of the Mervis API wrapper.

findAllDPsWithReqTags

findAllDPsWithReqTags(projIds, tags)

Returns list of datapoints based on tags query. Example of tags definition: {'label','indoor_air_temperature';'room_type','office'}

getDpTags

getDpTags(projectId, DpId)

Returns tags of the particular datapoint.

getAllProjectDPs

getAllProjectDPs(projectGuid)

Returns project IDs and names that are accessible to the logged-in user.

getData

[data, time, dataInCell, info] = getData(projID, dpsIds, from, to, span, zone, doublesInterpolationMethod, interpolate_gaps_shorter_than)

Downloads data.

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

saveData(projID, dpID, time, data)

Saves data into the Mervis database.

setDataPointValue

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

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!