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