Get Job by Object/Link IDs
Returns jobs history for the specified object or link. The user can specify the time frame to show only those jobs that fall within it.
This request returns jobs related to either links or objects, but not both at the same time. |
If the requested job is related to the link, the user must have permission to access the link’s source and target objects. See the Link Model for more info. |
Request
Body parameters
Parameter | Type | Description |
---|---|---|
links |
Array<String> |
The IDs of the links from which jobs are needed. |
objects |
Array<String> |
The IDs of the objects from which jobs are needed. |
from |
Integer |
Timestamp for the beginning of the time period. |
to |
Integer |
Timestamp for the end of the time period. |
Request body
This request returns jobs related to either links or objects, but not both at the same time. To get the job history for objects, use the objects
parameter:
{
"objects": [
"<object_id_1>",
... ,
"<object_id_n>"
],
"from": <timestamp>,
"to": <timestamp>
}
To get the job history for links, use the links
parameter:
{
"links": [
"<link_id_1>",
... ,
"<object_id_n>"
],
"from": <timestamp>,
"to": <timestamp>
}
Note that the time frame is optional, so you can omit from
and to
paramteres. In this case, this request returns all jobs generated by the specified objects/links:
{
"objects": [
"<object_id_1>",
... ,
"<object_id_n>"
]
}
{
"links": [
"<link_id_1>",
... ,
"<object_id_n>"
]
}
Response
This request uses the Job model (except the owner_type
parameter).
Example
Request
-
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)
Response
This example returns three jobs. The first two ("MQTT Operation" and "Script Operation") were manually executed by a user. The "Script Operation" job has two deferred results added by a user. The third — "State Change Script Operation" — was executed automatically on state change. The process_meta.triggerStates
array lists states that can trigger this operation.
{
"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"
}