Получить историю работ по ID объекта/связи
Возвращает историю работ для заданного объекта или связи. Пользователь может установить временные рамки поиска работы.
Этот запрос возвращает работу либо у объектов, либо связей. Он не может искать сразу и по объектам, и по связям. |
Если запрошенная работа относится к связи, то у пользователя должен быть доступ к обоим объектам, соединённым связью. |
Запрос
Параметры тела запроса
Параметр | Тип | Описание |
---|---|---|
links |
Array<String> |
Массив ID связей. |
objects |
Array<String> |
Массив ID объектов. |
from |
Integer |
От какой даты искать записи. |
to |
Integer |
До какой даты искать записи. |
Тело запроса
Этот запрос возвращает работу либо у объектов, либо связей. Он не может искать сразу и по объектам, и по связям.
Чтобы получить историю работы у объектов, используйте параметр objects
:
{
"objects": [
"<object_id_1>",
... ,
"<object_id_n>"
],
"from": <timestamp>,
"to": <timestamp>
}
Чтобы получить историю работы у связей, используйте параметр links
:
{
"links": [
"<link_id_1>",
... ,
"<object_id_n>"
],
"from": <timestamp>,
"to": <timestamp>
}
Если не указать промежуток времени (параметры from
и to
), то этот запрос вернёт работу, связанную с заданными объектами, за всё время их существования.
{
"objects": [
"<object_id_1>",
... ,
"<object_id_n>"
]
}
{
"links": [
"<link_id_1>",
... ,
"<object_id_n>"
]
}
Ответ
Этот запрос использует модель Работа (за исключением параметра owner_type
).
Пример
Запрос
-
Bash
-
JavaScript
-
NodeJS
-
Python
login=<...>
password=<...>
saymon_hostname=<...>
url=http://$saymon_hostname/node/api/jobs
curl -L -X POST '$url' \
-u $login:$password \
-H 'Content-Type: application/json' \
-d '{
"objects":["<object_id_1>", ... , "<object_id_n>"],
"from":<timestamp>,
"to":<timestamp>
}'
let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/jobs"
let auth = "Basic " + btoa(login + ":" + password)
let myHeaders = new Headers()
myHeaders.append("Authorization", auth);
myHeaders.append("Content-Type", "application/json");
let raw = JSON.stringify({
"objects":["<object_id_1>", ... , "<object_id_n>"],
"from":<timestamp>,
"to":<timestamp>
});
let requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch(saymonHostname + path, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
let http = require('follow-redirects').http;
let fs = require('fs');
let saymonHostname = <...>;
let login = <...>;
let password = <...>;
let auth = 'Basic ' + Buffer.from(login + ':' + password).toString('base64');
let options = {
'method': 'POST',
'hostname': saymonHostname,
'path': '/node/api/jobs',
'headers': {
'Authorization': auth,
'Content-Type': 'application/json'
},
'maxRedirects': 20
};
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 postData = JSON.stringify({
"objects":["<object_id_1>", ... , "<object_id_n>"],
"from":<timestamp>,
"to":<timestamp>
});
req.write(postData);
req.end();
import requests
login = <...>
password = <...>
saymon_hostname = <...>
url = 'http://' + saymon_hostname + '/node/api/jobs'
payload = {
'objects':[
'<object_id_1>',
... ,
'<object_id_n>'
],
'from':<timestamp>,
'to':<timestamp>
}
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, json=payload, auth=(login, password))
print(response.text)
Ответ
Этот пример возвращает три работы. Первые две "MQTT Operation" и "Script Operation" были созданы ручным запуском операции пользователем. К работе "Script Operation" было добавлено два пользовательских результата добавленных пользователем. Третий — "State Change Script Operation" — был запущен автоматически при смене состояния. Поле process_meta.triggerStates
содержит список состояний, которые могут запустить эту операцию.
{
"description": {
"topic": "Test MQTT Operation",
"message": "Message Text"
},
"results": [],
"operation_id": "62de8eed361a5d7ec2768057",
"owner_id": "62d7e5e456d203149a080038",
"user_id": "62c2f3ce80c8654892764d56",
"timestamp": 1658933295101,
"process_meta": null,
"operation": {
"name": "MQTT Operation"
},
"id": "62e1502fda304c7f95cc52b7"
},
{
"description": {
"stdout": "Hello World!",
"exitCode": 0
},
"results": [
{
"payload": {
"parameter": "some value"
},
"by": "62c2f3ce80c8654892764d56",
"timestamp": 1658926668678
},
{
"payload": {
"another parameter": "another value"
},
"by": "62c2f3ce80c8654892764d56",
"timestamp": 1658974127721
},
],
"operation_id": "62de8f0cda304c7f95cc5252",
"owner_id": "62d7e5e456d203149a080038",
"user_id": "62c2f3ce80c8654892764d56",
"timestamp": 1658974127800,
"process_meta": null,
"operation": {
"name": "Script Operation"
},
"id": "62e1efafda304c7f95cc52c1"
},
{
"description": {
"stdout": "State Changed!",
"exitCode": 0
},
"results": [],
"operation_id": "62de8f0cda304c7f95cc5252",
"owner_id": "62d7e5e456d203149a080038",
"user_id": "",
"timestamp": 1658975076372,
"process_meta": {
"triggerStates": [
3,
4,
"58ff5f454815650157a6a62f"
]
},
"operation": {
"name": "State Change Script Operation"
},
"id": "62e1f3641620fd7f489ccc59"
}