# Update the scan schedule Updates the schedule used to scan managed devices. ## Endpoint `PUT /bsp/api/v1/bmp/devices/scan/schedule` ## Request ### Request URL `https://{server-hostname}:8383/bsp/api/v1/bmp/devices/scan/schedule` ### Scope `BrowserManager.UPDATE` ### Header `Authorization: d92d4xxxxxxxxxxxxx15f52` ### Request Parameters #### Request Headers | Name | Type | Required | Value | |---|---|---|---| | Accept | string | Mandatory | `application/json` | | Content-Type | string | Mandatory | `application/json` | #### Request Body `application/json` | Name | Type | Required | Description | |---|---|---|---| | Schedule Config | JSON Object | Optional | | ## Examples ### Daily Schedule Run scan every day, on alternate days, or on weekdays. #### Sample Request ```curl curl --request PUT \ --url https://appdomain/bsp/api/v1/bmp/devices/scan/schedule \ --header 'Accept: application/json' \ --header 'Authorization: d92d4xxxxxxxxxxxxx15f52' \ --header 'Content-Type: application/json' \ --data '{"dailyTime":"04/15/2026, 09:30","taskTimeZone":"Asia/Calcutta","scheduleType":"Daily","schedulerDisabled":false,"dailyIntervalType":"alternativeDays"}' ``` #### Sample Request Body - Daily Schedule **Disable scheduler** ```json { "dailyTime": "04/14/2026, 08:47", "taskTimeZone": "Asia/Calcutta", "scheduleType": "Daily", "schedulerDisabled": true, "dailyIntervalType": "alternativeDays" } ``` **Modify to daily** ```json { "dailyTime": "04/15/2026, 09:30", "taskTimeZone": "Asia/Calcutta", "scheduleType": "Daily", "schedulerDisabled": false, "dailyIntervalType": "alternativeDays" } ``` ## Response Parameters ### HTTP Code 200 **Response Body:** `application/json` Scan schedule configuration. Returned by both GET and PUT `/devices/scan/schedule`. Field set varies by scheduletype: Daily includes dailytime + dailyintervaltype; Weekly includes weeklytime + daysofweek; Monthly includes monthlytime + monthslist + monthlyperform + monthlyweeknum + monthlyweekday. | Name | Type | Description | |---|---|---| | schedulerdisabled | boolean | true=schedule is currently disabled (no scans will run automatically); false=schedule is active | | scheduletype | string | Current schedule frequency. One of: 'Daily', 'Weekly', 'Monthly' | | scheduletypeextratext | string | Human-readable summary of the schedule. Daily: interval label (e.g. 'alternativeDays'). Weekly: weekday short name (e.g. 'Wed'). Monthly: comma-separated month short names (e.g. 'Feb, Apr, Sep, Oct') | | tasktimezone | string | IANA timezone ID for which the schedule times are evaluated (e.g. 'Asia/Calcutta') | | currentdatetime | string | Current server date-time (RFC 1123 format) | | nextruntime | string | Next scheduled scan execution time (RFC 1123 format) | | starttimetext | string | Formatted start-time label shown in UI | | starttimeextratext | string | Additional context for start time (Monthly schedules only, e.g. 'during First Friday of selected Months') | | dailytime | string | [Daily only] Configured start date-time for daily schedule (e.g. '04/15/2026, 09:30') | | dailyintervaltype | string | [Daily only] Daily interval mode. One of: 'everyDay', 'alternativeDays', 'weekDays' | | weeklytime | string | [Weekly only] Configured time-of-day for weekly schedule (HH:mm, 24h) | | daysofweek | string | [Weekly only] Comma-separated day-of-week numbers (1=Sun, 2=Mon, 3=Tue, 4=Wed, 5=Thu, 6=Fri, 7=Sat) | | monthlytime | string | [Monthly only] Configured time-of-day for monthly schedule (HH:mm, 24h) | | monthslist | string | [Monthly only] Comma-separated month numbers (1=Jan … 12=Dec) | | monthlyperform | string | [Monthly only] How the day is selected within each month. One of: 'Day' (specific date), 'WeekDay' (Nth weekday) | | monthlyweeknum | string | [Monthly only, when monthlyperform=WeekDay] Which week of the month (1=First … 4=Fourth, 5=Last) | | monthlyweekday | string | [Monthly only, when monthlyperform=WeekDay] Day-of-week (1=Sun … 7=Sat) | | last_schedule_details | JSON Object | Summary of the last executed scan: scan_initiated, in_progress, success, failed device counts | ### HTTP Code 400 **Response Body:** `application/json` Bad request error when an invalid or unsupported parameter is detected in the scan schedule request. | Name | Type | Description | |---|---|---| | errorCode | string | Error code indicating an invalid parameter was detected in the request | | errorMsg | string | Message identifying the invalid parameter that was detected | | url | string | Request URL that triggered the error | ### HTTP Code 401 **Response Body:** `application/json` | Name | Type | Description | |---|---|---| | errorCode | long | Unauthorized error code returned when authentication credentials are missing, expired, or invalid (authentication=required) | | errorMsg | string | Authentication failure reason | ### HTTP Code 403 **Response Body:** `application/json` | Name | Type | Description | |---|---|---| | errorCode | long | Forbidden error code returned when the authenticated user does not have the required uem-roles (e.g., DataEncryption_Admin or DataEncryptionRecoveryKey_Admin) | | errorMsg | string | Message indicating insufficient privileges to access this resource | ### HTTP Code 429 **Response Body:** `application/json` | Name | Type | Description | |---|---|---| | errorCode | long | Rate limit error code returned when the API call threshold (configured via threshold/duration in security XML) is exceeded; client is locked out for lock-period minutes | | errorMsg | string | Rate limit exceeded message with retry guidance | ### HTTP Code 500 **Response Body:** `application/json` Internal server error during device operations. | Name | Type | Description | |---|---|---| | error_description | string | Message describing the server-side failure | | error_code | string | Internal server error code | ## Possible Response Codes - `200` HTTP code - `400` HTTP code - `401` HTTP code - `403` HTTP code - `429` HTTP code - `500` HTTP code ## Sample Responses ### Sample Response: HTTP 200 **Weekly config** ```json { "tasktimezone": "Asia/Calcutta", "last_schedule_details": { "scan_initiated": "0", "in_progress": "1", "success": "0", "failed": "0" }, "weeklytime": "21:39", "scheduletype": "Weekly", "currentdatetime": "Wed, 08 Apr 2026 08:45:09 AM", "daysofweek": "4", "scheduletypeextratext": "Wed", "schedulerdisabled": false, "nextruntime": "Wed, 08 Apr 2026 09:39:00 PM", "starttimetext": "21:39", "starttimeextratext": "" } ``` **Daily config** ```json { "dailytime": "04/15/2026, 09:30", "tasktimezone": "Asia/Calcutta", "last_schedule_details": { "scan_initiated": "0", "in_progress": "1", "success": "0", "failed": "0" }, "scheduletype": "Daily", "dailyintervaltype": "alternativeDays", "currentdatetime": "Wed, 08 Apr 2026 08:51:26 AM", "scheduletypeextratext": "alternativeDays", "schedulerdisabled": false, "nextruntime": "Wed, 15 Apr 2026 09:30:00 AM", "starttimetext": "Wed, 15 Apr 2026 09:30:00 AM", "starttimeextratext": "" } ``` **Monthly config** ```json { "tasktimezone": "Asia/Calcutta", "last_schedule_details": { "scan_initiated": "0", "in_progress": "1", "success": "0", "failed": "0" }, "monthlytime": "09:00", "scheduletype": "Monthly", "monthlyweekday": "6", "nextruntime": "Fri, 04 Sep 2026 09:00:00 AM", "starttimetext": "09:00", "starttimeextratext": "during First Friday of selected Months", "currentdatetime": "Wed, 08 Apr 2026 09:10:49 AM", "monthslist": "1,3,8,9", "monthlyperform": "WeekDay", "scheduletypeextratext": "Feb, Apr, Sep, Oct", "schedulerdisabled": false, "monthlyweeknum": "1" } ``` ### Sample Response: HTTP 400 **Invalid parameter** ```json { "errorCode": "IAM0018", "url": "/bsp/api/v1/bmp/devices/scan/schedule", "errorMsg": "Invalid parameter \"param\" detected." } ``` ### Sample Response: HTTP 401 **Unauthorized** ```json { "errorCode": "UNAUTHORIZED", "errorMsg": "You are not authorized to perform this action" } ``` ### Sample Response: HTTP 403 **Forbidden** ```json { "errorCode": "FORBIDDEN", "errorMsg": "You do not have permission to access this resource" } ``` ### Sample Response: HTTP 429 **Rate limit exceeded** ```json { "errorCode": "RATE_LIMIT_EXCEEDED", "errorMsg": "You have exceeded the maximum number of API calls. Please try again later." } ``` ### Sample Response: HTTP 500 **Server error** ```json { "error_description": "Internal Server error, Please try again in a moment.", "error_code": "COM0004" } ``` ## Rate Limits ![Help icon](https://www.zohowebstatic.com/sites/zweb/images/people/ico-help.png) **Duration:** 1 minute | **Threshold:** 60 | **Lock period:** 5 minutes Duration - Time window for the threshold. Threshold - Number of API calls allowed within the specified duration. Lock Period - Wait time before consecutive API requests.