Ручная смена состояния объекта

Устанавливает вручную объекта. Возвращает изменённый объект в формате JSON.

Запрос

HTTP Запрос

PUT /node/api/objects/:id/manual-state

Права

objectPermissions & (modify-objects | manage-objects)

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

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

id

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

ID или discovery ID объекта.

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

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

stateId

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

ID нового состояния.

clear

String

Сбросить ли предыдущее состояние. Если этот параметр выставлен в true, то параметр stateId не используется и не требуется.

since

Integer

Время установки состояния.

until

Integer

Время сброса состояния.

reason

String

Причина установки состояния.

clearedByStateId

Array

Список состояний, которые сбрасывают заданное состояние.

Тело запроса

{
    "stateId": 3,
    "clear": false,
    "reason": "Testing"
}

Можно установить время, когда объект перейдёт в заданное состояние параметром since. Во время, указанное в поле until, объект автоматически вернётся в состояние, в котором он находилось до смены состояния вручную.

Параметры since и until можно использовать вместе или независимо друг от друга.

{
    "stateId": 4,
    "reason": "Setting the timed state",
    "since": 1666281549581,
    "until": 1666282447355
}

Ответ

Возвращает объект, состояние которого было задано вручную. Подробная информация о модели доступна в статье Объект.

Если состояние было установлено, параметр объекта manual_state будет содержать ID состояния, причину перехода состояния и ID пользователя, который установил состояние. Если состояние, установленное вручную было очищено, значение переменной manual_state будет равно null (даже если ручное состояние не было установлено ранее).

Подробная информация о модели доступна в статье Ручное состояние.

Пример

Установить состояние вручную

Запрос

В этом примере показана установка состояния объекта вручную:

  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
object_id=<...>
url=https://$saymon_hostname/node/api/objects/$object_id/manual-state

curl -X PUT $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "stateId": 3,
    "clear": false,
    "reason": "Testing"
}
EOF
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>
let path = "/node/api/objects/" + objectId + "/manual-state";
let auth = "Basic " + btoa(login + ":" + password);

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

let data = JSON.stringify({
    "stateId": 3,
    "clear": false,
    "reason": "Testing"
});

let requestOptions = {
    method: "PUT",
    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 objectId = <...>
let path = "/node/api/objects/" + objectId + "/manual-state";
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "PUT",
    "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({
    "stateId": 3,
    "clear": false,
    "reason": "Testing"
});

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

login = <...>
password = <...>
saymon_hostname = <...>
object_id = <...>
url = "https://" + saymon_hostname + "/node/api/objects/" + \
    object_id + "/manual-state";

body = {
    "stateId": 3,
    "clear": false,
    "reason": "Testing"
}

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

Ответ

{
    "id": "5e21b85b308c3c66d64e07d2",
    "name": "CPU",
    "discovery_id": "example-CPU",
    "object_groups": [],
    "geoposition": [],
    "child_ref_ids": [],
    "child_link_ids": [],
    "child_ids": [],
    "parent_id": "5e21b85b308c3c66d64e07bc",
    "weight": 1,
    "tags": [],
    "last_state_update": 1585047151777,
    "updated": 1585047151770,
    "created": 1579268187099,
    "state_id": 7,
    "class_id": 4,
    "_stateConditionRefs": [],
    "operations": [],
    "properties": [],
    "client_data": "{...}",
    "manual_state": {
        "stateId": 3,
        "reason": "Testing",
        "by": "62c2f3ce80c8654892764d56"
    },
    "owner_id": "5e21b752308c3c66d64e072c"
}

Сброс состояния вручную

В этом примере показано как можно сбросить состояние вручную:

Запрос

  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
object_id=<...>
url=https://$saymon_hostname/node/api/objects/$object_id/manual-state

curl -X PUT $url -u $login:$password \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "clear": true
}
EOF
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>
let path = "/node/api/objects/" + objectId + "/manual-state";
let auth = "Basic " + btoa(login + ":" + password);

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

let data = JSON.stringify({
    "clear": true
});

let requestOptions = {
    method: "PUT",
    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 objectId = <...>
let path = "/node/api/objects/" + objectId + "/manual-state";
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "PUT",
    "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({
    "clear": true
});

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

login = <...>
password = <...>
saymon_hostname = <...>
object_id = <...>
url = "https://" + saymon_hostname + "/node/api/objects/" + \
    object_id + "/manual-state";

body = {
    "clear": True
}

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

Ответ

{
    "id": "5e21b85b308c3c66d64e07d2",
    "name": "CPU",
    "discovery_id": "example-CPU",
    "object_groups": [],
    "geoposition": [],
    "child_ref_ids": [],
    "child_link_ids": [],
    "child_ids": [],
    "parent_id": "5e21b85b308c3c66d64e07bc",
    "weight": 1,
    "tags": [],
    "last_state_update": 1585047151777,
    "updated": 1585047151770,
    "created": 1579268187099,
    "state_id": 7,
    "class_id": 4,
    "_stateConditionRefs": [],
    "operations": [],
    "properties": [],
    "client_data": "{...}",
    "manual_state": null,
    "owner_id": "5e21b752308c3c66d64e072c"
}