Pause an Active Schedule

{ suspendSchedule }

Pauses or suspends the processing of an active schedule

Method

/API2/tasks/suspendSchedule

  • API Section: /API2/tasks
  • API Version: 2.0
  • From Release: 2018.5
  • Method operates via POST actions only.
  • Input Parameters

    Name

    scheduleId

    Type

    string

    Description

    The schedule's system ID

    Output Response

    Successful Result Code

    200

    Response Type

    Description of Response Type

    Generic API response object with success or failure flag and related messages.

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