Получить историю работ по ID объекта/связи

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

Этот запрос возвращает работу либо у объектов, либо связей. Он не может искать сразу и по объектам, и по связям.
Если запрошенная работа относится к связи, то у пользователя должен быть доступ к обоим объектам, соединённым связью.

Запрос

HTTP Запрос

POST /node/api/jobs

Права

objectPermissions, linkPermissions.

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

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

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

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

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"
}