Management

Remove all schedules from report

You can use the Mode API to remove all schedules from a specific report. If there are reports from former members or the report has been deprecated, this script will assist with removing all scheduled runs.

Endpoints used

.../{workspace}/reports/{report_token}/schedules\

Supported methods:

  • GET: returns all schedules attributed to a report

.../{workspace}/reports/{report_token}/schedules/{schedule_token}\

Supported methods:

  • DELETE: deletes the specific schedule

How this example works

In this example, the get_report_schedules method makes a GET request to return a list of all active report schedules for a specific report. Once the list is compiled, it will then delete each schedule using the delete_schedule method to remove the schedule.

To try it yourself

  • Input the API token, API secret, Workspace name, and other custom information as needed. Follow these steps to create an API token.
  • Save the file in your desired directory
  • Open the terminal and navigate to that directory
  • Run the command python3 {file_name}.py for python or Node/Express to run the JS library
import json
import requests

from requests.auth import HTTPBasicAuth

host = 'https://app.mode.com'
ws = 'workspace_name' # Note: workspace_name value should be all lowercase
un = 'api_token'
pw = 'api_secret'


def get_report_schedules(report_token):
  url = '%s/api/%s/reports/%s/schedules' % (host, ws, report_token)
  headers = {'Content-Type': 'application/json'}
  r = requests.get(url, headers=headers, auth=HTTPBasicAuth(un,pw))
  schedules_object = r.json()['_embedded']['report_schedules']
  report_schedules = []

  for s in schedules_object:
    report_schedules.append(s['token'])

  return report_schedules


def remove_schedule(report_token,schedule_token):
  url = '%s/api/%s/reports/%s/schedules/%s' % (host, ws, report_token,schedule_token)
  headers = {'Content-Type': 'application/json'}
  r = requests.delete(url, headers=headers, auth=HTTPBasicAuth(un,pw))

  print ('Schedule Token:%s has been deleted' % (schedule_token))


def delete_report_schedules(report_token):
  report_schedules = get_report_schedules(report_token)

  for s in report_schedules:
    remove_schedule(report_token,s)

delete_report_schedules('report_token')
const request = require('request-promise');

const host = 'https://app.mode.com';
const ws = 'workspace_name'; // Note: workspace_name value should be all lowercase
const username = 'api_token';
const password = 'api_secret';

const getReportSchedules = async reportToken => {
  let reportSchedules = await request({
   method: 'GET',
   url: `${host}/api/${ws}/reports/${reportToken}/schedules`,
   auth: { username, password },
   json: true  });
  reportSchedules._embedded.report_schedules.forEach((s)=>{
    console.log(s.token,reportToken)
    console.log(deleteSchedule(reportToken,s.token));
  })
};

const deleteSchedule = (reportToken,scheduleToken)=>{
 let status;
 let result = request({
   method: 'DELETE',
   url: `${host}/api/${ws}/reports/${reportToken}/schedules/${scheduleToken}`,
   auth: { username, password },
   json: true,
   resolveWithFullResponse: true
  })
  return result
};

getReportSchedules('reportToken')