Создать связь

Создаёт связь между двумя объектами с опциональными данными, переданными в теле запроса. Возвращает созданную связь в формате JSON.

Запрос

HTTP Запрос

POST /node/api/links

Права

create-links | manage-links

Параметры пути

Параметры не требуются.

Параметры тела запроса

Параметр Тип Описание

source

String
обязательный

ID источника связи.

target

String
обязательный

ID цели связи.

Тело запроса

Чтобы создать связь нужно указать только источник и цель – два объекта, которые соединяются этой связью.

{
    "source": "5e79baae6ec5ea28e5105caa",
    "target": "5e79bbe86ec5ea28e5105d04"
}

Также, в этом запросе можно передать тело связи. Подробная информация о модели доступна в статье Связь.

{
    "source": "5e79baae6ec5ea28e5105caa",
    "target": "5e79bbe86ec5ea28e5105d04",
    "operations": [
        {
            "name": "Link operation 1",
            "description": "Link operation description",
            "type": 1,
            "popupResult": false,
            "parameters": {
                "topic": "MQTT Topic",
                "message": "MQTT Message Text"
            }
        },
        {
            "name": "Link operation 2",
            ...
        }
    ],
    "properties": [
        {
            "name": "Link property 1",
            "value": "Value 1",
            "type_id": 1
        },
        {
            "name": "Link property2",
            ...
        },
    ],
    ...
    // Other optional parameters
}

Ответ

Ответ содержит связь в формате JSON. Подробная информация о модели доступна в статье Связь.

Пример

Этот пример демонстрирует как создать связь, которая соединяет два объекта и не имеет дополнительных параметров.

Запрос

  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
source_obj_id=<...>
target_obj_id=<...>
url=https://$saymon_hostname/node/api/links

curl -X POST $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "source": "'$source_obj_id'",
    "target": "'$target_obj_id'"
}
EOF
let login = <...>
let password = <...>
let saymonHostname = <...>
let sourceObjId = <...>
let targetObjId = <...>
let path = "/node/api/links";
let auth = "Basic " + btoa(login + ":" + password);

let headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization", auth);

let data = JSON.stringify({
    "source": sourceObjId,
    "target": targetObjId
});

let requestOptions = {
    method: "POST",
    headers: headers,
    body: data
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log("error", error));
const http = require("http");

let login = <...>
let password = <...>
let saymonHostname = <...>
let sourceObjId = <...>
let targetObjId = <...>
let path = "/node/api/links";
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "POST",
    "hostname": saymonHostname,
    "headers": {
        "Authorization": auth,
        "Content-Type": "application/json"
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        let body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

let data = JSON.stringify({
    source: sourceObjId,
    target: targetObjId
});

req.write(data);
req.end();
import requests

login = <...>
password = <...>
saymon_hostname = <...>
source_obj_id = <...>
target_obj_id = <...>
url = "https://" + saymon_hostname + "/node/api/links"

body = {
    "source": source_obj_id,
    "target": target_obj_id
}

response = requests.request("POST", url, json=body, auth=(login, password))
print(response.text)

Ответ

{
    "source": "5e79baae6ec5ea28e5105caa",
    "target": "5e79bbe86ec5ea28e5105d04",
    "owner_id": "5e21b752308c3c66d64e072c",
    "weight": 1,
    "tags": [],
    "last_state_update": 1585053147047,
    "updated": 1585053147046,
    "created": 1585053147047,
    "state_id": 1,
    "class_id": 35,
    "_stateConditionRefs": [],
    "operations": [],
    "properties": [],
    "id": "5e79fddb6ec5ea28e5105f65"
}