Обновить операцию класса

Обновить операцию класса

Обновить операцию класса ​

Обновляет операцию класса данными, отправленными в теле запроса.

Запрос ​

HTTP Запрос ​

text
PATCH /node/api/classes/:class_id/operations/:op_id

Права ​

text
manage-classes & manage-operations

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

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

обязательный | ID класса. | | op_id | String

обязательный | ID операции. |

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

Этот запрос использует модель Операция за исключением нескольких полей. Поле parameters отличается для каждого типа и подтипа операции.

NOTE

Во время обновления нельзя изменить тип и подтип операции.

ПолеТипОписание
nameStringИмя операции.
descriptionStringОписание операции
popupResultBooleanПоказывать результаты операции во всплывающем окне в веб-интерфейсе
parameters.messageStringMQTT сообщение. Этот параметр должен быть определён только для типа MQTT сообщение.
parameters.topicStringMQTT топик. Этот параметр должен быть определён только для типа MQTT сообщение.
parameters.pathStringПуть до скрипта. Этот параметр должен быть определён только для подтипа fileSystem.
parameters.argsArray<String>Массив аргументов скрипта. Этот параметр должен быть определён только для подтипа fileSystem.
parameters.refStringID скрипта. Этот параметр должен быть определён только для подтипа scriptReference.
parameters.textStringИсходный код скрипта. Этот параметр должен быть определён только для подтипа scriptText.

Тело запроса ​

json
 {
     "name": "New name for the operation", "description": "The updated description of the class operation",
     "popupResult": false,
     "parameters": {
        // Type-specific parameters
     }
 }
json
{
    "name": "MQTT",
    ...
    "type": 1,
        "parameters": {
            "topic": "MQTT Topic",
            "message": "MQTT Message Text"
        }
}
json
{
    "name": "Filesystem Script",
    ...
    "type": 2,
    "parameters": {
        "type": "fileSystem",
        "path": "/script_name.sh",
        "args": [
            "Hello",
            "World"
        ]
    }
}
json
{
    "name": "Repository Script",
    ...
    "type": 2,
    "parameters": {
        "type": "scriptReference",
        "ref": "5ecfc1e06d9341263ceaaeb3"   // Script ID
    }
}
json
{
    "name": "Plain Text Script",
    ...
    "type": 2,
    "parameters": {
        "type": "scriptText",
        "text": "echo 'Hello World!'"
    }
}

Ответ ​

Возвращает обновлённую операцию в формате JSON.

Примеры ​

MQTT operation ​

Запрос ​

  • Bash
  • JavaScript
  • NodeJS
  • Python
bash
login=<...>
password=<...>
saymon_hostname=<...>
class_id=<...>
operation_id=<...>
url=https://$saymon_hostname/node/api/classes/$class_id/operations/$operation_id

curl -X PATCH $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "name": "Updated MQTT Operation",
    "parameters": {
        "topic": "New MQTT Topic",
        "message": "New MQTT Message Text"
    },
    "description": "Updated Description",
    "popupResult": false,
}
EOF
javascript
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>
let operationId = <...>
let path = "/node/api/objects/" + objectId + "/operations/" + operationId;
let auth = "Basic " + btoa(login + ":" + password);

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

let data = JSON.stringify({
    "name": "Updated MQTT Operation",
    "parameters": {
        "topic": "New MQTT Topic",
        "message": "New MQTT Message Text"
    },
    "description": "Updated Description",
    "popupResult": false,
});

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

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

let login = <...>
let password = <...>
let saymonHostname = <...>
let classId = <...>
let operationId = <...>
let path = "/node/api/classes/" + classId + "/operations/" + operationId;
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "PATCH",
    "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({
    "name": "Updated MQTT Operation",
    "parameters": {
        "topic": "New MQTT Topic",
        "message": "New MQTT Message Text"
    },
    "description": "Updated Description",
    "popupResult": false,
});

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

login = <...>
password = <...>
saymon_hostname = <...>
class_id = <...>
operation_id = <...>
url = "https://" + saymon_hostname + "/node/api/classes/" + \
    class_id + "/operations/" + operation_id

body = {
    "name": "Updated MQTT Operation",
    "parameters": {
        "topic": "New MQTT Topic",
        "message": "New MQTT Message Text"
    },
    "description": "Updated Description",
    "popupResult": False,
}

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

Ответ ​

json
{
    "name": "Updated MQTT Operation",
    "parameters": {
        "topic": "New MQTT Topic",
        "message": "New MQTT Message Text"
    },
    "description": "Updated Description",
    "type": 1,
    "popupResult": false,
    "id": "62d9331aac866e4fcc1f21c0"
}

Операция скрипта файловой системы ​

Запрос ​

  • Bash
  • JavaScript
  • NodeJS
  • Python
bash
login=<...>
password=<...>
saymon_hostname=<...>
class_id=<...>
operation_id=<...>
url=https://$saymon_hostname/node/api/classes/$class_id/operations/$operation_id

curl -X PATCH $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "name": "Updated Filesystem Script",
    "description": "Updated description",
    "popupResult": false,
    "parameters": {
        "path": "/script_name.sh",
        "args": [
            "Hello",
            "World"
        ]
    }
}
EOF
javascript
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>
let operationId = <...>
let path = "/node/api/objects/" + objectId + "/operations/" + operationId;
let auth = "Basic " + btoa(login + ":" + password);

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

let data = JSON.stringify({
    "name": "Updated Filesystem Script",
    "description": "Updated description",
    "popupResult": false,
    "parameters": {
        "path": "/script_name.sh",
        "args": [
            "Hello",
            "World"
        ]
    }
});

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

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

let login = <...>
let password = <...>
let saymonHostname = <...>
let classId = <...>
let operationId = <...>
let path = "/node/api/classes/" + classId + "/operations/" + operationId;
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "PATCH",
    "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({
    "name": "Updated Filesystem Script",
    "description": "Updated description",
    "popupResult": false,
    "parameters": {
        "path": "/script_name.sh",
        "args": [
            "Hello",
            "World"
        ]
    }
});

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

login = <...>
password = <...>
saymon_hostname = <...>
class_id = <...>
operation_id = <...>
url = "https://" + saymon_hostname + "/node/api/classes/" + \
    class_id + "/operations/" + operation_id

body = {
    "name": "Updated Filesystem Script",
    "description": "Updated description",
    "popupResult": False,
    "parameters": {
        "path": "/script_name.sh",
        "args": [
            "Hello",
            "World"
        ]
    }
}

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

Ответ ​

json
{
    "name": "Updated Filesystem Script",
    "description": "Updated description",
    "type": 2,
    "popupResult": false,
    "parameters": {
        "path": "/script_name.sh",
        "type": "fileSystem",
        "args": [
            "Hello",
            "World"
        ]
    },
    "id": "62d95c18b238aa0131bd3b64"
}

Операция со скриптом из репозитория ​

Запрос ​

  • Bash
  • JavaScript
  • NodeJS
  • Python
bash
login=<...>
password=<...>
saymon_hostname=<...>
class_id=<...>
operation_id=<...>
url=https://$saymon_hostname/node/api/classes/$class_id/operations/$operation_id

curl -X PATCH $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
  "name": "Updated Repository Script",
  "description": "Updated Script from repository",
  "parameters": {
      "ref": "5ecfc1e06d9341263ceaaeb3",
  },
  "popupResult": True
}
EOF
javascript
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>
let operationId = <...>
let path = "/node/api/objects/" + objectId + "/operations/" + operationId;
let auth = "Basic " + btoa(login + ":" + password);

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

let data = JSON.stringify({
  "name": "Updated Repository Script",
  "description": "Updated Script from repository",
  "parameters": {
      "ref": "5ecfc1e06d9341263ceaaeb3",
  },
  "popupResult": True
});

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

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

let login = <...>
let password = <...>
let saymonHostname = <...>
let classId = <...>
let operationId = <...>
let path = "/node/api/classes/" + classId + "/operations/" + operationId;
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "PATCH",
    "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({
  "name": "Updated Repository Script",
  "description": "Updated Script from repository",
  "parameters": {
      "ref": "5ecfc1e06d9341263ceaaeb3",
  },
  "popupResult": True
});

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

login = <...>
password = <...>
saymon_hostname = <...>
class_id = <...>
operation_id = <...>
url = "https://" + saymon_hostname + "/node/api/classes/" + \
    class_id + "/operations/" + operation_id

body = {
  "name": "Updated Repository Script",
  "description": "Updated Script from repository",
  "parameters": {
      "ref": "5ecfc1e06d9341263ceaaeb3",
  },
  "popupResult": True
}

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

Ответ ​

json
{
    "name": "Updated Repository Script",
    "parameters": {
        "ref": "5ecfc1e06d9341263ceaaeb3",
        "type": "scriptReference"
    },
    "description": "Updated Script from repository",
    "type": 2,
    "popupResult": false,
    "id": "62d9353d60d9d84f03997b22"
}

Операция с текстовым скриптом ​

Запрос ​

  • Bash
  • JavaScript
  • NodeJS
  • Python
bash
login=<...>
password=<...>
saymon_hostname=<...>
class_id=<...>
operation_id=<...>
url=https://$saymon_hostname/node/api/classes/$class_id/operations/$operation_id

curl -X PATCH $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
  "name": "Updated Plain Text Class Script",
  "description": "Updated plain text script",
  "parameters": {
      "text": "echo \"Updated operation!\""
  },
  "popupResult": True
}
EOF
javascript
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>
let operationId = <...>
let path = "/node/api/objects/" + objectId + "/operations/" + operationId;
let auth = "Basic " + btoa(login + ":" + password);

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

let data = JSON.stringify({
  "name": "Updated Plain Text Class Script",
  "description": "Updated plain text script",
  "parameters": {
      "text": "echo \"Updated operation!\""
  },
  "popupResult": True
});

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

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

let login = <...>
let password = <...>
let saymonHostname = <...>
let classId = <...>
let operationId = <...>
let path = "/node/api/classes/" + classId + "/operations/" + operationId;
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "PATCH",
    "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({
  "name": "Updated Plain Text Class Script",
  "description": "Updated plain text script",
  "parameters": {
      "text": "echo \"Updated operation!\""
  },
  "popupResult": True
});

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

login = <...>
password = <...>
saymon_hostname = <...>
class_id = <...>
operation_id = <...>
url = "https://" + saymon_hostname + "/node/api/classes/" + \
    class_id + "/operations/" + operation_id

body = {
  "name": "Updated Plain Text Class Script",
  "description": "Updated plain text script",
  "parameters": {
      "text": "echo \"Updated operation!\""
  },
  "popupResult": True
}

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

Ответ ​

json
{
    "name": "Updated Plain Text Class Script",
    "description": "Updated Description",
    "type": 2,
    "parameters": {
        "type": "scriptText",
        "text": "echo \"Updated operation\""
    },
    "popupResult": true,
    "id": "62df037cb238aa0131bd3b93"
}

Смотрите также ​