Методы
Базовые
Получить список моделей
GET/api/v1/models
По умолчанию список моделей отдаётся без их содержимого.
Для включения дочерних узлов модели в ответ необходимо использовать query-параметр ?with=data
[ { "_id": "60d5db392b370f0011cb2987", "name": "model 1", "base": "mqtt" }, { "_id": "6163dda4099a810011957be8", "name": "model 2", "base": "lorawan" }]Получить информацию об одной модели
GET/api/v1/models/:id
По умолчанию модель отдаётся вместе с полем data.
[ { "_id": "60d5db392b370f0011cb2987", "name": "model 1", "base": "mqtt", "data": { "id": "root", "name": "[mqtt] model", "active": true, "type": "subsystem", "children": [...] } }]Создать новую модель
POST/api/v1/models
Обязательные поля:
base - идентификатор базовой модели;
name - имя новой модели.
{ "base": "mqtt", "name": "test-model-01", "description": "Model of microcontroller"}В ответе будет передана созданная модель, в формате аналогичном запросу одной модели
Изменить модель
PATCH/api/v1/models/:id
{ "name": "test-model-02", "description": "Model of sensor"}Для изменения отдельных узлов внутри модели необходимо использовать API узлов модели
Удалить модель
DELETE/api/v1/models/:id
В случае, если существуют объекты использующие эту модель, ответ будет содержать ошибку:
{ "success": false, "message": "Unprocessable Entity", "tags": ["error_has_objects"]}Узлы моделей
В запросах: -:id- идентификатор модели; -:node- идентификатор узла модели.
Создать новый узел
POST/api/v1/models/:id/nodes
Для того чтобы добавить новый узел в опреденное место модели нужно использовать query-параметр ?attachTo=:node с указанием идентификатора родительского узла, например ?attachTo=params или ?attachTo=cmds, иначе узел будет добавлен в корень.
Добавление нового узла происходит в конец списка дочерних элементов.
Для добавления узла в определённую позицию списка нужно использовать query-параметр ?atIndex=0 с указанием индекса нового элемента.
{ "id": "floorTemperature", "type": "argument", "name": "Floor Temperature", "unit": "temperature-celsius", "dataType": "number"}Изменить узел
PATCH/api/v1/models/:id/nodes/:node
В теле запроса на изменение существующего узла укажите укажите поля, которые нужно обновить.
{ "name": "Floor Temperature (in Fahrenheits)", "unit": "temperature-fahrenheit"}Удалить узел
DELETE/api/v1/models/:id/nodes/:node
Удаление узла модели происходит безвозвратно