====== API ====== Mervis SCADA nabízí otevřené REST-like API postavené na JSON a XML formátech dat. Pro kompletní popis API kontaktujte naši [[cs:help:support|technickou podporu]]. ===== Přehled základních API metod ===== ^Function^Description| ^api/checkCredentials|| ^api/logout|| ^api/get/projects|| ^api/get/projectData|| ^api/get/projectByParts|| ^api/get/history|| ^api/get/history/specific|| ^api/set/history|| ^api/get/values|| ^api/get/alarms|| ^api/get/alarmHistory|| ^api/get/eventHistory|| ^api/get/changes|| ^api/set/executeActions|| ^api/set/values|| ^api/set/executeAlarmOps|| ^api/set/projectPriorityRefresh|| ^api/get/schema|| ^api/get/schema/datapoints|| ^api/get/schema/values|| ^api/get/schema/image|| ^/api/v3/get/history|| ===== Příklad ===== ==== api/checkCredentials ==== **Request** * URL: https://scada.mervis.info/api/checkCredentials?format=xml * Method: POST {"cred":{"n":"demo","p":"demo"}} **Response** * Získaný token **t** je třeba použít místo dvojice jméno/heslo v následujících API voláních. ==== api/v3/get/history ==== **Request** * URL: /api/v3/get/history?format=json * Method: POST * Umožňuje stahovat historii pro více datových bodů * V ukázkách je vždy za dvěma lomítky uvedený typ property * V sekci credentials lze místo "token" uvést "name" a "password" - použití bez tokenu je ale výkonnostně penalizováno * "seriesParameters" - se uvádí jen pokud chceme rozdílné hodnoty než v "commonSeriesParameters" * "clientReference" - volitelné - pro dodatečnou identifikaci datového bodu klientem * položky "segmenation", "requestState" a "serverState" se vyplňují podle poslední odpovědi serveru. Pro první volání se tyto hodnoty neuvádějí. { "credentials": { "token":"guid" //string }, "request": { "commonSeriesParameters": { "from": "2018-12-01T00:00:00Z", //UTC dateTime "to": "2018-12-01T10:00:00Z"//UTC dateTime }, "series": [ { "seriesParameters": { "from": "2017-11-28T14:26:16.5029619Z",//UTC dateTime "to": "2018-11-28T14:26:16.5029619Z" //UTC dateTime }, "clientReference": "myId2a", //string "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", //guid "dataPointId": "2a9c26c9-2ce3-49c4-909d-9ac1143121f1" //guid } } }, { "clientReference": "myId1a", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } } } ] }, "dataSpecification": { "limits": { "count": 1000 //int } }, "segmentation": { "requestState": ";;2;;0", //string "serverState": "xyz" //string } } **Response** * Dokud je v odpovědi v sekci "segmentation" uveden "requestState" existují v daném rozsahu další historie. * "requestState" a "serverState" je nutné do dalšího případného dotazu na historii předat. * Values * v - hodnota * ts - začátek platnosti hodnoty * gt - konec platnosti hodnoty * i - interval, pokud je jiný než uvedená hodnota u celé série * Meta * type - typ uložených hodnot - double, string, datetime * unit - jednotky * interval - informace o periodě, v jaké by měly být hodnoty v databázi uloženy. Slouží k identifikaci chybějících záznamů. { "result": { "code": 0, //int "subCode": 0, //int "message": "" //string }, "data": { "count": 3, //int "historyData": [ { "clientReference": "myId2a", //string "provider": { "id": "689e32fa-24a2-448e-9374-6158e6e6cb15", //guid "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", //guid "dataPointId": "2a9c26c9-2ce3-49c4-909d-9ac1143121f1" //guid } }, "meta": { "type": "string", //string "unit": "", //string "interval": "PT3M" //string - ISO8601 Timespan }, "values": [ { "v": "AUT", //string "ts": "2018-11-26T12:22:15.25795Z", //dateTime "gt": "2018-11-26T13:22:15.5784067Z" //dateTime } ] }, { "clientReference": "myId1a", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } }, "meta": { "type": "double", "unit": "hod", "interval": "PT3M" }, "values": [ { "v": 12939,//double "ts": "2018-11-30T23:58:15.2394603Z", "gt": "2018-12-01T01:37:15.4869553Z" }, { "v": 12946, "ts": "2018-12-01T09:22:16.2049051Z", "gt": "2018-12-01T10:37:15.4023519Z", "i": "PT4M" } ] } ] }, "segmentation": { "requestState": "xyz", //string "serverState": "xyz" //string } } **Funkční demo** { "credentials": { "name": "demo", "password": "demo" }, "request": { "commonSeriesParameters": { "from": "2018-12-01T00:00:00Z", "to": "2018-12-01T00:11:00Z" }, "series": [ { "clientReference": "myId1", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "acad79f3-3358-42dd-9b74-98733e63d771" } } }, { "clientReference": "myId2", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "14cf0dbb-b050-43aa-a6f0-22886c33ed8e" } } } ] }, "dataSpecification": { "limits": { "count": 1000 } } } ==== [Deprecated] api/get/history==== **Request** * URL: /api/get/history?format=xml * Method: POST { "cred":{ "n":"demo", "p":"demo", "pe":0 }, "projId":"5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dpId":"62cf4083-31ed-4bc1-be25-044ba837a9f0", "from":"/Date(1541199600000)/", "to":"/Date(1541496190357)/", "offset":0, "count":5000, "historyState":"" } **Response** 12754 12754 12754 12755 12756 12757 12758 12759 12760 12761 12761 12761 ====api/set/history==== **Request** * URL: /api/set/history?format=xml * Method: POST * Content-Type: text/xml Atribut **i** nastavuje **interval** ([[https://en.wikipedia.org/wiki/ISO_8601#Time_intervals|ISO 8601]]), v jakém by měla být uložena následující hodnota. V **cred** lze použít i ověření pomocí jména a hesla, ale využití **tokenu** nabízí vyšší výkon. Všechny časové údaje jsou očekávány v UTC. 2.7 3.0 2.0 2.3 **Response** * 200 OK ====api/set/executeActions==== * URL: /api/set/executeActions?format=xml * Method: POST * Content-Type: text/xml ===DoubleValue=== **Request** 16 **Response** ===PlanningCalendar=== * v requestu je atribut "val" který odkazuje na index items v definici plánovacího kalendáře * pokud je kalendář číslený místo "val" se musí použít "dval" pro double hodnoty a "ival" pro integer hodnoty **Request** **Response** ====api/get/values==== * URL: /api/get/values?format=xml * Method: POST ===Output property=== Nejvhodnější způsob vyčtení aktuálních hodnot datových bodů (property "Output") z jednoho nebo více projektů. **Request** { "cred": { "t": "xxxxxx" //token }, "propNamesToSerialize": ["Output"], "offset": 0, "count": 1000, "serverState": null, "dps": [{ "projId": "ba1a92f7-f213-4a72-90e4-f7142b50274b", "dpIds": ["e089dde2-a097-4e0d-8012-c8cf3dc62694", "1089dde2-a097-4e0d-8012-c8cf3dc62696"] } ] } **Response**

ON

0

===PlanningCalendar property=== **Request** { "cred": { "t": "xxxxxx" //token }, "propNamesToSerialize": ["PlanningCalendar"], "offset": 0, "count": 1000, "serverState": null, "dps": [{ "projId": "17d3ff08-40c1-41c0-ad6a-bad4489323c7", "dpIds": ["d1243034-0809-444d-a48a-d04d800b4095"] } ] } **Response**