Получить историю состояний объекта

Запрос

HTTP Запрос

GET /node/api/objects/:id/state-history

Права

objectPermissions

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

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

id

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

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

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

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

from

String

От какой даты искать записи.

limit

String

Максимальное количество возвращаемых записей.

skip

String

Сколько записей с начала списка нужно пропустить.

to

String

До какой даты искать записи.

Тело запроса

Тело запроса пустое.

Ответ

Возвращает историю состояний объекта. Подробная информация о модели доступна в статье История состояния.

Пример

Запрос

Этот пример кода показыват как получить первые 5 записей истории состояния объекта за 24 часа (26.01.20 12.00 PM - 27.01.20 12.00 PM):

  • Bash

  • JavaScript

  • NodeJS

  • Python

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

curl -X GET $url -u $login:$password -G \
    --data-urlencode "from=1580029200000" \
    --data-urlencode "to=1580115600000" \
    --data-urlencode "limit=5"
let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>
let path = "/node/api/objects/" + objectId + "/state-history";
let auth = "Basic " + btoa(login + ":" + password);

let headers = new Headers();
headers.append("Authorization", auth);

let requestOptions = {
    method: "GET",
    headers: headers
};

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

let login = <...>
let password = <...>
let saymonHostname = <...>
let objectId = <...>

let queryParams = querystring.stringify({
    "from" : "1580029200000",
    "to" : "1580115600000",
    "limit" : "5"
});

let path = "/node/api/objects/" + objectId + "/state-history" +
    "?" + queryParams;
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "GET",
    "hostname": saymonHostname,
    "headers": {
        "Authorization": auth
    },
    "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);
    });
});

req.end();
import requests

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

params = {
    "from": "1580029200000",
    "to": "1580115600000",
    "limit": "5"
}

response = requests.request("GET", url, auth=(login, password), params=params)
print(response.text)

Ответ

[
    {
        "stateId": 1,
        "timestamp": 1585301115993,
        "id": "5e7dc67bc50bdc08abbf16b9"
    },
    {
        "stateId": 3,
        "reason": {
            "branch": "...",
            "data": "..."
        },
        "timestamp": 1585301127083,
        "id": "5e7dc687c50bdc08abbf1728"
    },
    ...
]