Find a Schedule
{ findSchedule }
Returns a schedule based on the search criteria
Method
/API2/tasks/findSchedule
Input Parameters
Name
searchCriteria
Object Type
Description
The search criteria object for finding a schedule.
Output Response
Successful Result Code
200
Response List Type
Description of Response Type
The schedule listing object. Note that the response is returned as a list of items of this object type.
Notes
Schedules are available for different types of content: data flow processing, publications, alerts etc.
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;
}
}