Get a Schedule's Execution Status
{ getScheduleExecutionStatus }
Returns the status of a schedule's job executions
Method
/API2/tasks/getScheduleExecutionStatus
Input Parameters
Name
executionId
Type
string
Description
The execution's system ID
Output Response
Successful Result Code
200
Response Type
Description of Response Type
Returns the task status indicator
Examples
Find and Run a scheduled task (JavaScript):
This example demonstrates how to find a item's schedule and then run it programmatically.
The example uses API authentication driven from JavaScript. See Authentication APIs for alternatives.
// URL of the Pyramid installation and the path to the API 2.0 REST methods
var pyramidURL = "http://mysite.com/api2/";
// step 1: authenticate admin account and get token
// NOTE: callApi method is a generic REST method shown below.
let token = callApi("auth/authenticateUser",{
"data":{
"userName":"adminUser",
"password":"abc123!"
}
},false);
log("got token "+token);
// step 2: get all the schedules in the system based on name search
let findSchedule= callApi("tasks/findSchedule ",{
"searchCriteria": {
"searchCriteria":{
"searchValue":"My Demo Schedule",
"searchMatchType":2
},
"scheduleType":1
},
"auth": token
});
// step 3: extract the schedule ID property from the returned schedule that matches "My Demo Schedule"
let scheduleId = findSchedule.data[0].scheduleId
// step 4: launch a run of the chosen schedule now, without triggers
let runSchedule = callApi("tasks/runSchedule ",{
"data":{"scheduleId": scheduleId,"checkTriggers":"false"},
"auth": token
});
if(runSchedule.error!=null){
throw new Error(runSchedule.error);
}
// step 5A: OPTIONAL: get details to check running status of scheduled event. First, get execution ID
let executionId=runSchedule.data;
//stet 5B: get execution item's status.
let taskData= callApi("tasks/getScheduleExecutionStatus ",{
"executionId": executionId,
"auth": token
});
log("executionId status is "+executionStatus[taskData.data.status]);
//step 5C: check status every 3 seconds
if(taskData.data.status!=1){
setTimeout(getStatus,3000);
}
////############ alternative approach #################
//step 6a: get task items in that execution.
let tasks= callApi("tasks/getTasksIds ",{
"executionId": executionId,
"auth": token
});
//step 6B: get the ID of the single task in that execution.
let taskId = tasks.data[0].id
log("got task "+taskId);
//step 6C: get status of the task.
getStatus();
function getStatus(){
let taskData= callApi("tasks/getTaskData ",{
"taskId": taskId,
"auth": token
});
log("task status is "+taskData.data.status);
if(taskData.data.status!=1){
setTimeout(getStatus,3000);
}
}
////############ other methods #################
//step 7: pause the schedule
let suspend= callApi("tasks/suspendSchedule",{
"scheduleId": scheduleId,
"auth": token
});
//step 8: restart the schedule
let resume= callApi("tasks/resumeSchedule",{
"scheduleId": scheduleId,
"auth": token
});
// ##### optional generic login method for debugging ##############
function log(msg){
document.write(msg);
console.log(msg);
}
// ##### generic REST API calling method ##############
function callApi(path,data,parseResult=true){
var xhttp = new XMLHttpRequest();
xhttp.open("POST", pyramidURL+path, false);
xhttp.send(JSON.stringify(data));
if(parseResult){
return JSON.parse(xhttp.responseText);
}else{
return xhttp.responseText;
}
}