openapi: 3.0.0 info: description: | # Overview The SureMDM API enables you to interact with SureMDM server through 'RESTful' operations such as reading, modifying, adding or deleting data from your SureMDM account. The APIs also support [Cross-Origin Resource Sharing (CORS)](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing).

You can use this API to integrate within your existing application to perform actions or retrieve data to build your own dashboard or use in some other kind of business use case. # Usage Limit 42Gears SureMDM is concurrently used by many customers. As part of our commitment to offering a high-quality, fast, and reliable service to all our customers, we have defined the following API usage limits per customer: - Maximum 5000 requests per day

- Maximum burst of 10 requests per minute for a maximum of 30 minutes in a day # Authentication SureMDM uses `Basic Auth` for authentication purpose. Every request must contain a basic authentication HTTP header along with an ApiKey in header, below are the sample code in multiple languages:

C#

//SureMDM API URL of your account string URL = "https://mycompany.country.suremdm.io/api"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key");

JAVA

//SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicename"; Request request = new Request.Builder() .url(URL) //Http method .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") .build();

Python

import requests # SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicename" # Headers headers = { # Api-Key header 'ApiKey': "Your Api-Key", } # Basic authentication credentials Credentials=("Username","Password") # Send request response = requests.put(url,auth=Credentials,headers=headers) ## Get your API key Every REST request made to your SureMDM account through an API needs APIKey for authentication. To locate the API key for your SureMDM account, follow these steps:
1. Log into the SureMDM console.
2. Navigate to Settings > Account Settings > Account Management.
You will find the API key under the API Key section. version: '2.0' title: SureMDM x-tagGroups: - name: SureMDM APIs tags: - Enrollment - Android For Work - Android Management - Device - Jobs - Job History - File Store - App Store - Message - Things - Account details - Customer details - API details - Profiles - Reports - Group - Filters - Tags - Run scripts - Folders - Custom Properties - Roles - User Details - Advanced Query 🚀 [BETA] - name: Code samples tags: - Remote support for device - Remote support iframe integration - Apply job/profile on device - Refresh device information - Refresh device application details - Reboot device - Get job queue of the device - Re-apply pending jobs - Uninstall application - QR Code generation - name: Miscellaneous tags: - Advance Search Fields - Permission ID tags: - name: Enrollment - name: Android For Work - name: Android Management - name: Device - name: Jobs - name: Job Queue - name: Job History - name: File Store - name: App Store - name: Message - name: Things - name: Account details - name: Customer details - name: API details - name: Profiles - name: Reports - name: Group - name: Filters - name: Tags - name: Run scripts - name: Custom Properties - name: Advanced Query - name: Remote support for device description: | Remote support provides features like viewing device screen remotely and sending touch events, Transfer files, Share clipboard data etc. Remote support console has custom URL which can be configured to provide remote support for the particular device when opened in browser.

## Configuring remote support URL ### URL format: {BaseURL of SureMDM}/RemoteSupport.aspx?id={DeviceID}&name={DeviceName}&pltFrmType={PlateformType}&agentversion={NixAgentVersion}&perm={AllowedPermissions} ### Query parameters:
ParameterDescription
idID of the device
nameDevice name
pltFrmTypePlatform type of the device (e.g, android)
agentversionVersion of nix agent installed on the device
permPermissions allowed
126: Allow Remote Screen
127: Allow Remote File Manager
128: Allow Remote Clipboard
129: Allow Remote Task Manager

Example:
https://yourdomain.com/RemoteSupport.aspx?id=ba7249af-2be7-4a93-a379-1771be5251dd&name=Client0422&pltFrmType=Android&agentversion=14.97&perm=126,127

Code samples for generating remote support url in various languages for a particular device are available in our Github repository.
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/RemoteSupport/RemoteSupport.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/RemoteSupport/src/RemoteSupport.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/RemoteSupport.py
- name: Remote support iframe integration description: | Remote support can also be integrated as an iframe within your application for a seamless user experience.

## Steps Directions for Usage Remote Support In Iframe ### Step 1: Accessing API for Authentication To initiate remote support via an iframe, the first step is to call the API with specific parameters. This API call requires the following information: **Parameters:** - **ShowOnlyRemoteScreen**: This parameter indicates whether only the remote screen should be shown. It's a boolean value. - **deviceid**: The unique identifier for the device you want to provide remote support to. - **API Key**: Include the API key in the custom headers for authentication purposes. - **ScrBgClr**: A string representing colour codes without the hash symbol (#) that specifies the background colour of the loading page. If want default background colour set as null. - **ScrImg**: A string representing the URL or source path of images or GIFs that provide dynamic content for the loading page. If want default loading set as null. - **Username/Password**: Basic authentication is utilised, so ensure you provide the correct username and password for access. **HTTP Method**: The API endpoint should be accessed using the GET method. **URL Format**: ``` GET /api/iframeRS/rsauthtoken?ShowOnlyRemoteScreen={bool}&deviceid={deviceid}&ScrBgClr={Colour_Code_without_hash}&ScrImg={Img/gifs link} ``` **Example**: ``` https://testxxxxx.suremdm.io/api/iframeRS/rsauthtoken?ShowOnlyRemoteScreen=true&deviceid=1234567890&ScrBgClr=FFFFFF&ScrImg=https://example.com/sample.gif ``` ### Step 2: Utilizing the Response URL Upon successful authentication, you'll receive a response from the API. If the authentication is successful, the response will include a URL. This URL is crucial for opening a new iframe for remote support. **Example Response (in case of success)**: ```json { "data": "https://testxxxxx.suremdm.io/IframeRemoteSupport.aspx?AuthToken=3dc2033f79b940259db3637b8971c0c851b1c03d29dc42958fdc9a859256f183", "isSuccess": true, "errorMsg": "" } ``` **Note**: Make sure to embed this URL within an iframe in your application interface to facilitate remote support seamlessly. By following these steps, you can easily integrate remote support functionality into our application using an iframe. ### Important Notes: - We are implementing Remote Support Feature in Iframe. That's access through unique Link. - If the user reloads that page again link will not authenticate and give Error msg which shows- "AuthToken Invalid or Expired". - The link will be valid only for 300 seconds until the socket closes. - For Better Resolution. We kept Size better Around 80% of Screen (Recommended) or above. - Any Third Party App Like Yarc or Postman or Website can call this Api. - The pixel dimensions of the remote screen may vary until the screen is fully loaded. - Screen Rotation Message from Iframe Remote Support for platforms such as Android, Windows, MacOS, Linux. - name: Apply job/profile on device description: | Applying job/profile on a particular device using SureMDM apis.

### Code samples:
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/ApplyJob/JobApply.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/ApplyJob/src/ApplyJob.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/ApplyJob.py
- name: Refresh device information - name: Refresh device information description: | Refreshing device information using SureMDM apis.

### Code samples:
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/RefreshDeviceInfo/RefreshDeviceInfo.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/RefreshDeviceInfo/src/RefreshDeviceInfo.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/RefreshDeviceInfo.py
- name: Refresh device application details description: | Refreshing device application details using SureMDM apis.

### Code samples:
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/RefreshDeviceApps/RefreshDeviceApps.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/RefreshDeviceApps/src/RefreshDeviceApps.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/RefreshDeviceApps.py
- name: Reboot device description: | Rebooting device using SureMDM apis.

### Code samples:
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/RebootDevice/RebootDevice.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/RebootDevice/src/RebootDevice.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/RebootDevice.py
- name: Get job queue of the device description: | Retrieveing job queue of the device using SureMDM apis.

### Code samples:
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/GetJobqueue/GetJobqueue.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/GetJobqueue/src/GetJobqueue.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/GetJobqueue.py
- name: Re-apply pending jobs description: | Re-apply job which are pending or failed to apply in job queue using SureMDM apis.

### Code samples:
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/ReapplyJob/ReapplyJob.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/ReapplyJob/src/ReapplyJob.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/ReapplyJob.py
- name: Uninstall application description: | Uninstalling application from the device usig SureMDM apis.

### Code samples:
Language Repository
C# https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/C-Sharp/UninstallApp/UninstallApp.cs
JAVA https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/JAVA/UninstallApp/src/UninstallApp.java
Python https://github.com/42Gears/SureMDM-API/blob/master/Code%20Samples/Python/UninstallApp.py
- name: Advance Search Fields description: | Below fields are used for Advance search which allows to search devices based on its any reported values in device information.
Field Description Example value
DeviceName Name of the device “Client06”
DeviceModelName Model name of the device “Lenovo”
ConnectionStatus Connection status of the device with SureMDM “1”    : Online only
“0”    : Offline only
“1,0” : Online, Offline both
Battery Battery remaining on the device. "40", ">40", "<40", ">=40", "<=40"
DeviceIPAddress IP address of the device “172.31.17.125”
DeviceTimeZone Time zone of place where device is located “kolkata”
Operator Telecom operator used by the device “airtel”
PhoneRoaming If phone is roaming ”yes”, "no"
PhoneSignal Phone signal strength in terms of percentage "50", ">50", "<50", ">=50", "<=50"
AgentVersion Nix Agent version
"12.09", ">12.09", "<12.09", ">=12.09", "<=12.09"
ReleaseVersion OS version of device "8.1.0"
SureLockVersion SureLock version "8.27", ">8.27", "<8.27", ">=8.27", "<=8.27"
SureFoxVersion Surefox version "6.14", ">6.14", "<6.14", ">=6.14", "<=6.14"
SureVideoVersion Surevideo version "3.11", ">3.11", "<3.11", ">=3.11", "<=3.11"
IMEI IMEI number of the device "866991030279668"
IMEI2 Second IMEI number of the device "866991030279668"
AndroidID Unique identification of Android device
"hc5dq94hyt3vv98"
PhoneNumber Cell phone number used by the device "4242842574"
SerialNumber Serial number of the device "F5AZFG208323"
RootStatus Device Root status "0"   : No
"1"   : Granted
"2"   : Unknown
"3"   : Yes
"4"   : Signed
KnoxStatus If device uses KNOX "0"   : N/A
"1"   : No
"2"   : Yes
DataUsage Total data usage of the device(in Bytes) "4000", ">4000", "<4000", ">=4000", "<=4000"
CpuUsage Device CPU usage in percentage "50", ">50", "<50", ">=50", "<=50"
GpuUsage Device GPU usage in percentage "50", ">50", "<50", ">=50", "<=50"
Temperature Device battery temperature "33", ">33", "<33", ">=33", "<=33"
IsSupervised (ios only) If device is supervised apple device "yes", "no", "n/a"
Isenrolled (iso only) Whether IOS enrolled "yes", "no", "n/a"
Notes Device notes "device on field"
NixPollingType Nix agent app polling type "apns" : Apple Push Notification service
"wns" : Windows Push Notification Services
"fcm" : Firebase Cloud Messaging
"gcm" : Google Cloud Messaging
"normal" : Normal polling
"periodic" : Periodic polling
NetworkType Type of network device is using "wi-fi"
DeviceUserName Device user name "John doe"
GPSEnabled IF GPS is enabled or not "enabled"
"disabled"
"n/a"
SimSerialNumber Unique Identity Number of SIM Used by the device "9113680539297400000"
BluetoothEnabled IF Bluetooth enabled or not "1" : On
"0" : Off
"n/a" : Not applicable
USBPluggedIn If USB plugged in or not "1" : Plugged in
"0" : Plugged out
"n/a" : Not applicable
BSSID Bluetooth MAC address "44:91:DB:2A:91:12"
OsBuildNumber Device's OS Build Number "KTU84P.G900VVRU1ANI2"
SureLockSettingsVersionCode SureLock settings identifier "1.1"
RealDeviceName Bluetooth name of the device "John doe"
AfwProfile Android enterprise status of the device "1"    : Not supported
"2"    : Not enrolled
"3"    : Managed device
"4"    : Profile owner
"5"    : Device owner
DeviceGroupPath Path of group in which device is registered "Home/group1"
MTPSystemScanThreatCount Count of threats detected by system scan "2"
IsMobileHotSpotEnabled If mobile hotspot is enabled or not "1" : On
"0" : Off
"null" : Not applicable
IsEncryptionEnabled If data encryption enabled or not "1" : Yes
"0" : No
"null" : Not applicable
CtsProfileMatch A stricter verdict of device integrity.
If the value of ctsProfileMatch is true, then the profile of the device running your app matches the profile of a device that has passed Android compatibility testing.
"1" : Yes
"0" : No
"null" : Not applicable
BasicIntegrity A more lenient verdict of device integrity.
If only the value of basicIntegrity is true, then the device running your app likely wasn't tampered with.
However, the device hasn't necessarily passed Android compatibility testing.
"1" : Pass
"0" : Fail
"null" : Not applicable
VerifyAppEnable If threat protection is enabled or not "1" : Enabled
"0" : Desabled
"null" : Not applicable
DeviceID ID of the device assigned by suremdm "c66c5bc6-b3d2-44d6-8ea6-f850ad3ac2f6"
ADBEnable If USB debugging enabled or not "1" : Enabled
"0" : Desabled
"null" : Not applicable
AllowUnknownSource Status of Allow Unknown Source on device "1" : Allowed
"0" : Blocked
"null" : Not applicable
DeviceLocalIPAddress Local IP Address of device "192.168.1.99"
WifiSSID Wi-Fi name of the device "John's pixel"
HashCode Android enterprise hash code value "b378e95c"
CurrentFirmwareVersion Once device is registered with Efota server, Samsung devices will send the current firmware available in the device "G920FXXU3DPDO"
EfotaRegistrationStatus Status of device registration with efota Server "1" : Success
"0" : Failed
"n/a" : Not applicable
# - name: Permission ID # description: | # anvcjjds paths: # api/v2/afw/QRCode: # post: # tags: # - Android For Work # summary: Get AFW enrollment QR code # description: This api lets you retrieve QR code for AFW (Android for work) enrollment. # requestBody: # content: # application/json: # schema: # $ref: '#/components/schemas/AFWQRcodeModel' # description: Payload # required: true # responses: # '200': # description: OK # content: # application/json: # schema: # $ref: '#/components/schemas/QRCodeModel' # x-code-samples: # - lang: C# # source: | # // ... API URL # string URL = "https://yourdomain.com/api/v2/afw/QRCode"; # var client = new RestClient(URL); # // ... Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # // ... ApiKey Header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # // ... Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # // ... Set request method # var request = new RestRequest(Method.POST); # // ... Request payload # string PayLoad = "{ \"WifiSSID\": \"My WiFi\", \"WifiPassword\": \"0000\", \"IsSkipEncryption\": false, \"GroupPath\": \"home\", \"DeviceNameType\": \"SystemGenerated\" }"; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # // ... Executing Request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # // ... API URL # String URL="https://yourdomain.com/api/v2/afw/QRCode"; # // ... create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = "{ \"WifiSSID\": \"My WiFi\", \"WifiPassword\": \"0000\", \"IsSkipEncryption\": false, \"GroupPath\": \"home\", \"DeviceNameType\": \"SystemGenerated\" }"; # RequestBody body = RequestBody.create(mediaType, PayLoad); # // ... Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # // ... Send payload # .post(body) # // ... Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # // ... ApiKey Header # .addHeader("ApiKey", "Your Api-Key") # // ... Set content type # .addHeader("Content-Type", "application/json") # .build(); # // ... Execute request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # # ... Api url # url = "https://yourdomain.com/api/v2/afw/QRCode" # # ... Add headers # headers = { # # ... Api-Key header # 'ApiKey': "Your Api-Key", # # ... Set Content type # 'Content-Type': "application/json", # } # # ... Basic authentication credentials # Credentials=("Username","Password") # # ... Payload # payload = "{ \"WifiSSID\": \"My WiFi\", \"WifiPassword\": \"0000\", \"IsSkipEncryption\": false, \"GroupPath\": \"home\", \"DeviceNameType\": \"SystemGenerated\" }" # # ... Executing request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) 'api/v2/JobHistory/CountAllJobs/{id}': get: tags: - Job History summary: Get job status counts description: | This API retrieves the status counts of all jobs for a device. parameters: - name: id in: path description: Device ID to fetch the job status counts. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CountAllJobsResponse' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/JobHistory/CountAllJobs/{id}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/JobHistory/CountAllJobs/{id}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/JobHistory/CountAllJobs/{id}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/JobHistory/CountAllJobs/{id}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}': get: tags: - Job History summary: Get Failed/Completed Jobs description: | This API retrieves the latest deployed jobs based on success or failure status for a device. parameters: - name: deviceId in: path description: | Device ID to fetch the job queue.
Example: `5ea08e41-046c-40a0-96d1-f57062a8bae1` required: true schema: type: string - name: isSuccess in: path description: | Boolean flag indicating success (`true`) or failure (`false`) jobs.
Example: `true` for completed jobs, `false` for failed jobs. required: true schema: type: boolean - name: limitJobQueue in: path description: | Limit of job queue results to return.
Example: `20` to return up to 20 job records. required: true schema: type: integer - name: offsetJobQueue in: path description: | Offset for paginated job queue results.
Example: `0` to start from the first job record. required: true schema: type: integer - name: isSearch in: path description: | Boolean flag indicating whether search is enabled.
Example: `false` to disable search. required: true schema: type: boolean - name: searchValue in: path description: | Base64 encoded search value.
Example: `null` when no specific search value is used. required: true schema: type: string - name: sortColumn in: path description: | Column to sort results by.
Supported columns: `JobName`, `Status`, `Type`, `Time`, `Size`, `JobHistoryVersion`, `NetworkType`, `DeviceChargingState`, `JobComments`.
Example: `Time` to sort by the job timestamp. required: true schema: type: string - name: sortOrder in: path description: | Sort order (`asc` or `desc`).
Example: `desc` to sort results in descending order. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LatestDeployedJobsResponse' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/JobHistory/Scheduled/{deviceId}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}': get: tags: - Job History summary: Get scheduled jobs description: | This API retrieves all scheduled jobs for a specific device. parameters: - name: deviceId in: path description: | Device ID to fetch scheduled jobs.
Example: `5ea08e41-046c-40a0-96d1-f57062a8bae1` required: true schema: type: string - name: limitJobQueue in: path description: | Limit for scheduled job queue results.
Example: `20` to return up to 20 job records. required: true schema: type: integer - name: offsetJobQueue in: path description: | Offset for paginated scheduled job results.
Example: `0` to start from the first job record. required: true schema: type: integer - name: isSearch in: path description: | Boolean flag indicating whether search is enabled.
Example: `false` to disable search. required: true schema: type: boolean - name: searchValue in: path description: | Search value (Base64 encoded).
Example: `null` when no specific search value is used. required: true schema: type: string - name: sortColumn in: path description: | Column to sort results by.
Supported columns: `JobName`, `Status`, `Type`, `Time`, `Size`, `JobHistoryVersion`, `NetworkType`, `DeviceChargingState`, `JobComments`.
Example: `Time` to sort by the job timestamp. required: true schema: type: string - name: sortOrder in: path description: | Sort order (`asc` or `desc`).
Example: `desc` to sort results in descending order. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ScheduledJobsResponse' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/JobHistory/Scheduled/{deviceId}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/JobHistory/Scheduled/{deviceId}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/JobHistory/Scheduled/{deviceId}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/JobHistory/Scheduled/{deviceId}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/JobHistory/QuickAction/{limitProperties}/{offsetProperties}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}': post: tags: - Job History summary: Get quick actions description: | Retrieves quick actions for devices based on specified filters. This API supports multiple device IDs in the request. parameters: - name: limitProperties in: path description: | Limit for quick action results.
Example: `10` to return up to 10 quick action records. required: true schema: type: integer - name: offsetProperties in: path description: | Offset for paginated quick action results.
Example: `0` to start from the first quick action record. required: true schema: type: integer - name: isSearch in: path description: | Boolean flag indicating whether search is enabled.
Example: `true` to enable search functionality. required: true schema: type: boolean - name: searchValue in: path description: | Search value (Base64 encoded).
Example: `c2VhcmNoTGFuZA==` for searching "searchLand" in Base64 format. required: true schema: type: string - name: sortColumn in: path description: | Column to sort results by. Supported columns may include: `DynamicJobComments`, `Status`, `DateTime`, `Type`.
Example: `DateTime` to sort by the date the quick actions were created. required: true schema: type: string - name: sortOrder in: path description: | Sort order (`asc` or `desc`).
Example: `asc` to sort results in ascending order. required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: PayLoad: type: string example: "[\"992328e0-c59a-4e42-88d7-fe0fff0bd92f\",\"--71b2d1b1-0c06-4113-9c92-5c50d8562f43\"]" description: | **A JSON string containing an array of Device IDs.**
Each ID must end with a backslash (\\).
To include multiple IDs, separate them with commas and escape each ID with a backslash (\\).

**Example:** {"PayLoad":"[\\"992328e0-c59a-4e42-88d7-fe0fff0bd92f\\",\\"--71b2d1b1-0c06-4113-9c92-5c50d8562f43\\"]"} responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/QuickActionsResponse' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/JobHistory/latestdeployedjob/{deviceId}/{isSuccess}/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text)"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); # /api/v2/JobHistory/Incompleted/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}: # post: # tags: # - Job Queue # summary: Get Job Queue for Multiple Devices # description: | # This API retrieves the job queue for multiple devices based on the provided parameters, including pagination, sorting, and searching. # parameters: # - name: limitJobQueue # in: path # required: true # description: Limit of job queue results to return. # schema: # type: integer # - name: offsetJobQueue # in: path # required: true # description: Offset for paginated job queue results. # schema: # type: integer # - name: isSearch # in: path # required: true # description: Boolean flag indicating whether search is enabled. # schema: # type: boolean # - name: searchValue # in: path # required: true # description: Value to search for in the job queue. # schema: # type: string # - name: sortColumn # in: path # required: true # description: Column to sort results by. # schema: # type: string # - name: sortOrder # in: path # required: true # description: Sort order (asc or desc). # schema: # type: string # requestBody: # description: JobQueueModel payload to filter jobs. # required: true # content: # application/json: # schema: # $ref: '#/components/schemas/IncompletedJobQueueModel' # responses: # '200': # description: Job queue retrieved successfully. # content: # application/json: # schema: # $ref: '#/components/schemas/IncompletedJobQueueResponse' # '401': # description: Access Denied / Unauthorized # content: # application/json: # schema: # $ref: '#/components/schemas/AccessDeniedResponseModel' # x-code-samples: # - lang: CURL # source: | # curl -X POST 'https://yourdomain.com/api/v2/JobHistory/Incompleted/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}' \ # -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' \ # -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ # -H 'Content-Type: application/json' \ # -d '{"DeviceQuery": {"AdanceSearch": false, ... }, "DeviceIds": "5ce030f4-bddf-4095-b9b3-e7dbc8a77c25", ...}' # - lang: C# # source: | # string URL = "https://yourdomain.com/api/v2/JobHistory/Incompleted/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; # var client = new RestClient(URL); # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # var request = new RestRequest(Method.POST); # request.AddJsonBody(new { DeviceQuery = new { AdanceSearch = false, ... }, DeviceIds = "5ce030f4-bddf-4095-b9b3-e7dbc8a77c25", ... }); # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # String URL = "https://yourdomain.com/api/v2/JobHistory/Incompleted/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}"; # OkHttpClient client = new OkHttpClient(); # RequestBody body = RequestBody.create(JSON, "{ \"DeviceQuery\": {\"AdanceSearch\": false, ... }, \"DeviceIds\": \"5ce030f4-bddf-4095-b9b3-e7dbc8a77c25\", ... }"); # Request request = new Request.Builder() # .url(URL) # .post(body) # .addHeader("Authorization", Credentials.basic("Username", "Password")) # .addHeader("ApiKey", "Your Api-Key") # .build(); # Response response = client.newCall(request).execute(); # System.out.println(response.body().string()); # - lang: Python # source: | # import requests # url = "https://yourdomain.com/api/v2/JobHistory/Incompleted/{limitJobQueue}/{offsetJobQueue}/{isSearch}/{searchValue}/{sortColumn}/{sortOrder}" # payload = { # "DeviceQuery": {"AdanceSearch": False, ... }, # "DeviceIds": "5ce030f4-bddf-4095-b9b3-e7dbc8a77c25", # ... # } # headers = { # 'ApiKey': 'Your Api-Key', # 'Authorization': 'Basic dXNlcm5hbWU6cGFzc3dvcmQ=', # 'Content-Type': 'application/json' # } # response = requests.post(url, json=payload, headers=headers) # print(response.json()) api/v2/afw: get: tags: - Android For Work summary: Get AFW enrollment details description: This api lets you retrieve AFW (Android for work) enrollment details. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AFWEnrollmentModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/afw"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/afw"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/afw" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/afw/SignupUrl/{RedirectURL}': get: tags: - Android For Work summary: Get AFW signup URL description: This api lets you retrieve AFW(Android For Work) signup URL. parameters: - name: RedirectURL required: true schema: type: string description: | Redirection URL ([URL encoded](https://en.wikipedia.org/wiki/Percent-encoding))
Details for AFW signup will be sent to this redirection URL. in: path responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AfwSignupURLResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/afw/SignupUrl/{RedirectURL}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/afw/SignupUrl/{RedirectURL}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/afw/SignupUrl/{RedirectURL}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/afw/Unenroll: delete: tags: - Android For Work summary: Unregister from AFW description: This api lets you cancel your AFW(Android For Work) enrollment. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SignupUrlResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/afw/Unenroll"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.DELETE); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/afw/Unenroll"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/afw/Unenroll" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/AndroidManagement/SignupUrl/{RedirectURL}/{isNixless}': get: tags: - Android Management summary: Get signUp URL description: This api lets you retrieve signup URL for android management enrollment. parameters: - name: RedirectURL required: true schema: type: string description: | Redirection URL ([URL encoded](https://en.wikipedia.org/wiki/Percent-encoding))
Details for signup URL will be sent to this redirection URL. in: path - name: isNixless required: true schema: type: boolean description: | "isNixLess" indicates whether SUREMDM Agent has been installed on the device or not. in: path responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SignupUrlResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/AndroidManagement/SignupUrl/{RedirectURL}/{isNixless}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/AndroidManagement/SignupUrl/{RedirectURL}/{isNixless}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/AndroidManagement/SignupUrl/{RedirectURL}/{isNixless}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/QRCode/GetDefaultQRCode': get: tags: - Enrollment summary: Get default QR code description: This api lets you retrieve QR-code which is used by Nix agent to enroll device into SureMDM. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetDefaultQRCodeResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/QRCode/GetDefaultQRCode"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/QRCode/GetDefaultQRCode"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/QRCode/GetDefaultQRCode" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/QRCode/GetAllQRCodes': get: tags: - Enrollment summary: Get All QR Code description: | This api lets you retrieve all the QR Codes. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/QROutputModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/QRCode/GetAllQRCodes' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/QRCode/GetAllQRCodes"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/QRCode/GetAllQRCodes"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/QRCode/GetAllQRCodes" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/QRCode/ViewQRCode/{id}: get: tags: - Enrollment summary: View QR Code description: | This api lets you retrieve QR Code by their Id. parameters: - name: Id in: path required: true description: ID of the QR Code generated by the SureMDM.
For eg. 8c862c74-3b3e-48a7-a07b-a8a74caa9e7e schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ViewQROutputModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/QRCode/ViewQRCode/{id}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/QRCode/ViewQRCode/{id}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/QRCode/ViewQRCode/{id}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/QRCode/ViewQRCode/{id}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/QRCode/AddorUpdateDefaultQRCode/{id}: post: tags: - Enrollment summary: Set Default QR Code description: | This api lets you set any QR Code present under suremdm account as default QR code. parameters: - name: Id in: path required: true description: ID of the QR Code generated by the SureMDM.
For eg. 8c862c74-3b3e-48a7-a07b-a8a74caa9e7e schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AddOrUpdateQROutputModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/QRCode/AddorUpdateDefaultQRCode/{id}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/QRCode/AddorUpdateDefaultQRCode/{id}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/QRCode/AddorUpdateDefaultQRCode/{id}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .post() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/QRCode/AddorUpdateDefaultQRCode/{id}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/QRCode/DeleteQRCode/{id}: delete: tags: - Enrollment summary: Delete QR Code description: | This api lets you delete any QR Code present under suremdm account. parameters: - name: Id in: path required: true description: ID of the QR Code generated by the SureMDM.
For eg. 8c862c74-3b3e-48a7-a07b-a8a74caa9e7e schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteQRModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/QRCode/DeleteQRCode/{id}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/QRCode/DeleteQRCode/{id}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/QRCode/DeleteQRCode/{id}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/QRCode/DeleteQRCode/{id}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/QRCode/SaveQRCode/{toModify}: post: tags: - Enrollment summary: Create/Update QR Code description: | This api lets you create new QR Code or Update the existing one. parameters: - name: toModify in: path required: true description: | true: To update any existing QR Code.
false: To Create a new QR Code schema: type: bool requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/QRCreateEnterpriseModel' - $ref: '#/components/schemas/QRCreateDeviceAdminModel' discriminator: mapping: Android Enterprise Enrollment: '#/components/schemas/QRCreateEnterpriseModel' Device Admin Enrollment: '#/components/schemas/QRCreateDeviceAdminModel' description: '' responses: '200': description: QR Code Created Successfully content: application/json: schema: $ref: '#/components/schemas/SaveQRModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/QRCode/SaveQRCode/{toModify}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/QRCode/SaveQRCode/{toModify}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/QRCode/SaveQRCode/{toModify}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/QRCode/SaveQRCode/{toModify}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/group/gethomegroupdetails: get: tags: - Group summary: Get home group details description: | This api lets you retrieve details of groups present under the home group only.
Note: Details include only first level of group hierarchy. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GroupGetResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/group/gethomegroupdetails' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/group/gethomegroupdetails"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/group/gethomegroupdetails"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/group/gethomegroupdetails" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/group: post: tags: - Group summary: Create group description: This api lets you create group on your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/GroupModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GroupCreateResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/group' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "GroupName": "Test", "GroupID": "4b7198ec-a300-4f4c-a27e-e473c4b831cc" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/group"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"GroupName\": \"Test\", \"GroupID\": \"4b7198ec-a300-4f4c-a27e-e473c4b831cc\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/group"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"GroupName\": \"Test\", \"GroupID\": \"4b7198ec-a300-4f4c-a27e-e473c4b831cc\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/group" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"GroupName\": \"Test\", \"GroupID\": \"4b7198ec-a300-4f4c-a27e-e473c4b831cc\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) put: tags: - Group summary: Edit group description: | This api lets you edit group on your SureMDM account.

Note: Home group cannot be modified. requestBody: content: application/json: schema: $ref: '#/components/schemas/EditGroupModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditGroupsResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/group' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '[ { "GroupName": "Test", "GroupID": "4b7198ec-a300-4f4c-a27e-e473c4b831cc" } ]' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/group"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "[ { \"GroupName\": \"Test\", \"GroupID\": \"4b7198ec-a300-4f4c-a27e-e473c4b831cc\" } ]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/group"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="[ { \"GroupName\": \"Test\", \"GroupID\": \"4b7198ec-a300-4f4c-a27e-e473c4b831cc\" } ]"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/group" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "[ { \"GroupName\": \"Test\", \"GroupID\": \"4b7198ec-a300-4f4c-a27e-e473c4b831cc\" } ]" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/group/{customerid}/getAll: get: operationId: getDetailsOfAllGroups tags: - Group summary: Get details of all groups description: This api lets you retieve details of all the groups present under your SureMDM account including each and every subgroups. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GroupHierarchyResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/group/{customerid}/getall' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/group/{customerid}/getall"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/group/{customerid}/getall"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/group/{customerid}/getall" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/group/{GroupId}': get: tags: - Group summary: Get group details by ID description: | This api lets you retrieve details of the particular group present under your SureMDM account.
Note: Details include only first level of group hierarchy. parameters: - name: GroupId in: path description: ID of the group allocated by the SureMDM
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GroupByIDResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/group/{GroupId}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/group/{GroupId}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/group/{GroupId}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/group/{GroupId}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) delete: tags: - Group summary: Delete group description: | This api lets you delete particular group from your SureMDM account.

Note: Home group cannot be deleted. parameters: - in: path name: GroupId description: 'ID of particular group to be deleted
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GroupDeleteSuccessResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/GroupDeleteResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/group/{GroupId}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/group/{GroupId}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/group/{GroupId}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/group/{GroupId}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) # '/jobassignment/{JobId}/{GroupId}': # post: # deprecated: true # tags: # - Group # summary: Apply job on group (Immediately) # description: This lets you apply job on a particular group of devices. # parameters: # - in: path # name: JobId # required: true # description: | # ID of the job which you want to apply.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API. # schema: # type: string # - in: path # name: GroupId # required: true # description: | # ID of the group allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API. # schema: # type: string # responses: # '200': # description: Ok # content: # application/json: # schema: # type: string # example: true # description: | # true: Job successfully applied on group.
# false: Failed to apply job on group. # x-code-samples: # - lang: CURL # source: | # curl -X POST 'https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.POST); # //Request payload # string PayLoad = " "; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = " "; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # //Send payload # .post(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "" # #Send request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) # '/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}': # post: # deprecated: true # tags: # - Group # summary: Apply job on group (Scheduled) # description: 'This lets you apply job on a particular group of devices.

Note:
Either one of `ServerScheduleTime` or `RecursiveScheduleTime` is effective at a time.' # parameters: # - in: path # name: JobId # required: true # description: | # ID of the job which you want to apply.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API. # schema: # type: string # - in: path # name: GroupId # required: true # description: | # ID of the group allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API. # schema: # type: string # - in: path # name: ServerScheduleTime # required: true # description: | # Schedule date and time(UTC time) to apply job # Date and Time format: YYYY/MM/DD HH:MM
# Note: Should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64)
# e.g: 2019/04/16 12:23 ➜ MjAxOS8wNC8xNiAxMjoyMw== #
Pass 'null' ➜ bnVsbA== if not required. # schema: # type: string # - in: path # name: RecursiveScheduleTime # required: true # description: | # Auto apply job on repeat
# ### Periodically # Auto apply job on regular interval (specified in minutes) #
Sample: "12"
Note: Minimum interval can be 5 minutes # ### Days and Time # Auto apply job on recursive schedule time and days # { # "Time":"10:41", # "Days":["0","5","6"], # "GMTTimeInterval":-330 # } #
Parameter
Description
Time
HH:MM (24 hour format)
Eg: 10:41
Days
Days to repeat
0 - Sunday
1 - Monday
2 - Tuesday
3 - Wednesday
4 - Thursday
5 - Friday
6 - Saturday
Eg: ["1","2","3","4","5"]
GMTTimeInterval
Time offset in minutes preceding with '-'
Eg: -330 for GMT"+05:30"
# Note: Should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64) #
Pass "0" ➜ MA== if not required. # schema: # type: string # - in: path # name: DownloadType # description: | # Select network type for applying job.
ValueDescription
0WiFi
1Mobile data
2Any
#
Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) # required: true # schema: # type: string # responses: # '200': # description: Ok # content: # application/json: # schema: # type: string # example: true # description: | # true: Job successfully applied on group.
# false: Failed to apply job on group. # x-code-samples: # - lang: CURL # source: | # curl -X POST 'https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.POST); # //Request payload # string PayLoad = " "; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = " "; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # //Send payload # .post(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "" # #Send request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) api/v2/jobassignment/group: post: tags: - Group summary: Apply job on group description: This api lets you apply job on a particular group of devices. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/Immediate_Group' - $ref: '#/components/schemas/Periodically_Group' - $ref: '#/components/schemas/Days_Time_Group' - $ref: '#/components/schemas/Date_Time_Group' discriminator: mapping: Immediately: '#/components/schemas/Immediate_Group' Periodically: '#/components/schemas/Periodically_Group' Schedule Days And Time: '#/components/schemas/Days_Time_Group' Schedule Date And Time: '#/components/schemas/Date_Time_Group' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/JobApplicationResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/jobassignment/group' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceIds": ["1111111111111111111"], "JobId": "eaa76725-ff02-4c45-8fca-4f6145d65d3f", "DownloadType": 0 }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobassignment/group"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"GroupId\": \"dd82dba7-6773-439b-91de-b5139411c2ae\" , \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobassignment/group"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"GroupId\": \"dd82dba7-6773-439b-91de-b5139411c2ae\" , \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobassignment/group" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"GroupId\": \"dd82dba7-6773-439b-91de-b5139411c2ae\" , \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/GroupJobQueue/{GroupId}/{Type}': get: tags: - Group summary: Get job deployment status of group description: This api lets you retrive job queue informatiion of group(s) present under your SureMDM account. parameters: - name: GroupId in: path description: | ID(s) of the group allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.
Note: Use [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) format to send multiple device IDs. required: true schema: type: string - name: Type in: path description: | Type of job.
ValueDescription
0Pending to apply jobs
1Successfully applied jobs
2Failed to apply jobs
3In progress jobs
required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GroupJobQueueResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/GroupJobQueue/{GroupId}/{Type}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/GroupJobQueue/{GroupId}/{Type}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/GroupJobQueue/{GroupId}/{Type}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/GroupJobQueue/{GroupId}/{Type}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/defaultjob/ongroup: post: tags: - Group summary: Apply default job on group description: This api lets you apply default job on a particular group of devices. requestBody: content: application/json: schema: $ref: '#/components/schemas/DefaultJobDetailsListOnGroupModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DefaultJobResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/defaultjob/ongroup' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "JobID": "89269aad-681f-4bad-9668-984cd79d7f43", "GroupID": "a8a327b5-2894-45f2-aa58-a02616440094", "ForceApply": false, "DownloadType": 2, "DeviceChargingState": "0" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/defaultjob/ongroup"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"JobID\": \"89269aad-681f-4bad-9668-984cd79d7f43\" , \"GroupID\": \"a8a327b5-2894-45f2-aa58-a02616440094\" , \"ForceApply\": false , \"DownloadType\": 2, \"DeviceChargingState\": \"0\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/defaultjob/ongroup"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"JobID\": \"89269aad-681f-4bad-9668-984cd79d7f43\" , \"GroupID\": \"a8a327b5-2894-45f2-aa58-a02616440094\" , \"ForceApply\": false , \"DownloadType\": 2, \"DeviceChargingState\": \"0\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/defaultjob/ongroup" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"JobID\": \"89269aad-681f-4bad-9668-984cd79d7f43\" , \"GroupID\": \"a8a327b5-2894-45f2-aa58-a02616440094\" , \"ForceApply\": false , \"DownloadType\": 2, \"DeviceChargingState\": \"0\" }" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/tags: get: operationId: getAllTags tags: - Tags summary: Get all the tags description: This api lets you retrieve list of all the tags present under your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetTagsOutputModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/tags' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/tags"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/tags"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/tags" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) post: tags: - Tags summary: Create a tag description: This api lets you create a tag under your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/TagCreateModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TagCreateResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/tags' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "TagName": "Test_Tag" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/tags"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"TagName\": \"Test_Tag\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/tags"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"TagName\": \"Test_Tag\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/tags" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"TagName\": \"Test_Tag\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) put: tags: - Tags summary: Edit tag description: This api lets you edit an existing tag under your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/TagModifyModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TagEditResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/tags' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "TagName": "New_Tag", "TagID": "adc225b5-5897-4254-b661-fc1179d1be74" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/tags"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{ \"TagName\": \"New_Tag\", \"TagID\": \"adc225b5-5897-4254-b661-fc1179d1be74\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/tags"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"TagName\": \"New_Tag\", \"TagID\": \"adc225b5-5897-4254-b661-fc1179d1be74\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/tags" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"TagName\": \"New_Tag\", \"TagID\": \"adc225b5-5897-4254-b661-fc1179d1be74\" }" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) # 'api/v2/jobassignment/{JobId}/{TagId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}/true': # post: # deprecated: true # tags: # - Tags # summary: Apply job on tag # description: 'This api lets you apply job on all the devices assigned with particular tag.

Note:
Either one of `ServerScheduleTime` or `RecursiveScheduleTime` is effective at a time.' # parameters: # - in: path # name: JobId # required: true # description: | # ID of the job which you want to apply.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API. # schema: # type: string # - in: path # name: TagId # required: true # description: | # ID of the tag allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Tag ID can be retrieved using the [Get all the tags](#operation/getAllTags) API. # schema: # type: string # - in: path # name: ServerScheduleTime # required: true # description: | # Schedule date and time(UTC time) to apply job # Date and Time format: YYYY/MM/DD HH:MM
# Note: Should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64)
# e.g: 2019/04/16 12:23 ➜ MjAxOS8wNC8xNiAxMjoyMw== #
Pass 'null' ➜ bnVsbA== if not required. # schema: # type: string # - in: path # name: RecursiveScheduleTime # required: true # description: | # Auto apply job on repeat
# ### Periodically # Auto apply job on regular interval (specified in minutes) #
Sample: "12"
Note: Minimum interval can be 5 minutes # ### Days and Time # Auto apply job on recursive schedule time and days # { # "Time":"10:41", # "Days":["0","5","6"], # "GMTTimeInterval":-330 # } #
Parameter
Description
Time
HH:MM (24 hour format)
Eg: 10:41
Days
Days to repeat
0 - Sunday
1 - Monday
2 - Tuesday
3 - Wednesday
4 - Thursday
5 - Friday
6 - Saturday
Eg: ["1","2","3","4","5"]
GMTTimeInterval
Time offset in minutes preceding with '-'
Eg: -330 for GMT"+05:30"
# Note: Should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64) #
Pass "0" ➜ MA== if not required. # schema: # type: string # - in: path # name: DownloadType # description: | # Select network type for applying job.
ValueDescription
0WiFi
1Mobile data
2Any
#
Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) # required: true # schema: # type: string # responses: # '200': # description: Ok # content: # application/json: # schema: # $ref: '#/components/schemas/JobApplyToTagResponseModel' # x-code-samples: # - lang: CURL # source: | # curl -X POST 'https://yourdomain.com/api/v2/tags' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "TagName": "Test_Tag" }' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}/true"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.POST); # //Request payload # string PayLoad = " "; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}/true"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = " "; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # //Send payload # .post(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/jobassignment/{JobId}/{GroupId}/{ServerScheduleTime}/{RecursiveScheduleTime}/{DownloadType}/true" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "" # #Send request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) api/v2/jobassignment/tags: post: tags: - Tags summary: Apply job on tag description: This api lets you apply job on all the devices assigned with particular tag. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/Immediate_Tag' - $ref: '#/components/schemas/Periodically_Tag' - $ref: '#/components/schemas/Days_Time_Tag' - $ref: '#/components/schemas/Date_Time_Tag' discriminator: mapping: Immediately: '#/components/schemas/Immediate_Tag' Periodically: '#/components/schemas/Periodically_Tag' Schedule Days And Time: '#/components/schemas/Days_Time_Tag' Schedule Date And Time: '#/components/schemas/Date_Time_Tag' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/JobApplyToTagResponseModel' '403': description: Forbidden content: application/json: schema: type: string example: Access denied description: User does not have permission for this action x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/jobassignment/tags' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceIds": ["1111111111111111111"], "JobId": "eaa76725-ff02-4c45-8fca-4f6145d65d3f", "DownloadType": 0 }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobassignment/tags"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"TagId\": \"dd82dba7-6773-439b-91de-b5139411c2ae\" , \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobassignment/tags"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"TagId\": \"dd82dba7-6773-439b-91de-b5139411c2ae\" , \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobassignment/tags" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"TagId\": \"dd82dba7-6773-439b-91de-b5139411c2ae\" , \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/tags/{TagID}': delete: tags: - Tags summary: Delete tag description: This api lets you delete a particular tag from your SureMDM account. parameters: - in: path name: TagID description: 'ID of particular tag to be deleted.
Tag ID can be retrieved using the [Get all the tags](#operation/getAllTags) API.' required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TagDeleteResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/tags/{TagID}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/tags/{TagID}" ; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/tags/{TagID}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/tags/{TagID}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) api/v2/DeviceAssignment/AssignTagToDevices: put: tags: - Tags summary: Assign tag to device description: This api lets you assign tag to a particular device present under your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/TagsAssignToDeviceModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TagAssignmentResponseModel' '400': description: Bad Request – Validation failed for one or more fields. content: application/json: schema: $ref: '#/components/schemas/TagAssignmentErrorResponseModel' examples: TagNameMissing: summary: Missing TagName value: Message: "TagName cannot be null, empty or whitespace at index 0" Data: null Result: false DeviceIdMissing: summary: Missing DeviceId value: Message: "DeviceId cannot be null, empty or whitespace at index 0" Data: null Result: false TagIdMissing: summary: Missing TagId value: Message: "TagId cannot be null, empty or whitespace at index 0" Data: null Result: false EmptyList: summary: Payload empty value: Message: "Tagged devices list cannot be null or empty" Data: null Result: false x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/DeviceAssignment/TagsAssignToDevices' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '[ { "DeviceId": "2ff21872-6e9f-43fe-a90e-3e9fe4203e8d", "TagId": "2ff21872-6e9f-43fe-a90e-3e9fe4203e8d" } ]' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/DeviceAssignment/TagsAssignToDevices"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "[ { \"DeviceId\": \"2ff21872-6e9f-43fe-a90e-3e9fe4203e8d\", \"TagId\": \"2ff21872-6e9f-43fe-a90e-3e9fe4203e8d\" }]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/DeviceAssignment/TagsAssignToDevices"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="[ { \"DeviceId\": \"2ff21872-6e9f-43fe-a90e-3e9fe4203e8d\", \"TagId\": \"2ff21872-6e9f-43fe-a90e-3e9fe4203e8d\" }]"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/DeviceAssignment/TagsAssignToDevices" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "[ { \"DeviceId\": \"2ff21872-6e9f-43fe-a90e-3e9fe4203e8d\", \"TagId\": \"2ff21872-6e9f-43fe-a90e-3e9fe4203e8d\" }]" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/tagsdefaultjobs: post: tags: - Tags summary: Apply default job on tag description: This api lets you apply default job on devices of particular tag. requestBody: content: application/json: schema: $ref: '#/components/schemas/DefaultTagModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TagsDefaultJobResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/tagsdefaultjobs' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "JobID": "89269aad-681f-4bad-9668-984cd79d7f43", "GroupID": "daad5e79-d773-41bd-9029-e9ace0447f04", "ForceApply": false, "DownloadType": 2, "DeviceChargingState": "0" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/tagsdefaultjobs"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"JobID\": \"89269aad-681f-4bad-9668-984cd79d7f43\" , \"GroupID\": \"daad5e79-d773-41bd-9029-e9ace0447f04\" , \"ForceApply\": false , \"DownloadType\": 2, \"DeviceChargingState\": \"0\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/tagsdefaultjobs"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"JobID\": \"89269aad-681f-4bad-9668-984cd79d7f43\" , \"GroupID\": \"daad5e79-d773-41bd-9029-e9ace0447f04\" , \"ForceApply\": false , \"DownloadType\": 2, \"DeviceChargingState\": \"0\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/tagsdefaultjobs" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"JobID\": \"89269aad-681f-4bad-9668-984cd79d7f43\" , \"GroupID\": \"daad5e79-d773-41bd-9029-e9ace0447f04\" , \"ForceApply\": false , \"DownloadType\": 2, \"DeviceChargingState\": \"0\" }" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/devicefilter: get: operationId: getAllFilters tags: - Filters summary: Get all the filters description: This api lets you retrieve list of all the filters present under your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetFiltersOutputModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/devicefilter' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicefilter"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) post: tags: - Filters summary: Create a filter description: This api lets you create a filter under your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/FilterCreateModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FilterCreationResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/devicefilter' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "FilterName": "Test_Filter", "FilterQuery":"Filter_Query"}' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{\"FilterName\":\"test\",\"FilterQuery\":\"{\\\"JobsFailed\\\":\\\"3\\\",\\\"searchOption\\\":\\\"0\\\",\\\"DeviceName\\\":\\\"69\\\",\\\"modelSearchOption\\\":\\\"2\\\",\\\"DeviceModelName\\\":\\\"android\\\",\\\"DeviceGroupPath\\\":\\\"Home\/AE 20 devices\\\",\\\"com.newpreet.andr\\\":\\\"1.2\\\"}\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicefilter"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{\"FilterName\":\"test\",\"FilterQuery\":\"{\\\"JobsFailed\\\":\\\"3\\\",\\\"searchOption\\\":\\\"0\\\",\\\"DeviceName\\\":\\\"69\\\",\\\"modelSearchOption\\\":\\\"2\\\",\\\"DeviceModelName\\\":\\\"android\\\",\\\"DeviceGroupPath\\\":\\\"Home\/AE 20 devices\\\",\\\"com.newpreet.andr\\\":\\\"1.2\\\"}\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{\"FilterName\":\"test\",\"FilterQuery\":\"{\\\"JobsFailed\\\":\\\"3\\\",\\\"searchOption\\\":\\\"0\\\",\\\"DeviceName\\\":\\\"69\\\",\\\"modelSearchOption\\\":\\\"2\\\",\\\"DeviceModelName\\\":\\\"android\\\",\\\"DeviceGroupPath\\\":\\\"Home\/AE 20 devices\\\",\\\"com.newpreet.andr\\\":\\\"1.2\\\"}\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) put: tags: - Filters summary: Edit filter description: This api lets you edit an existing filter under your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/FilterModifyModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FilterEditResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/devicefilter' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "FilterName": "Test_Filter_New", "FilterId": "11635", "FilterQuery": "Filter_Query" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{\"FilterName\":\"test\",\"FilterQuery\":\"{\\\"JobsFailed\\\":\\\"3\\\",\\\"searchOption\\\":\\\"0\\\",\\\"DeviceName\\\":\\\"69\\\",\\\"modelSearchOption\\\":\\\"2\\\",\\\"DeviceModelName\\\":\\\"android\\\",\\\"DeviceGroupPath\\\":\\\"Home\/AE 20 devices\\\",\\\"com.newpreet.andr\\\":\\\"1.2\\\"}\",\"FilterId\":\"10272\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicefilter"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{\"FilterName\":\"test\",\"FilterQuery\":\"{\\\"JobsFailed\\\":\\\"3\\\",\\\"searchOption\\\":\\\"0\\\",\\\"DeviceName\\\":\\\"69\\\",\\\"modelSearchOption\\\":\\\"2\\\",\\\"DeviceModelName\\\":\\\"android\\\",\\\"DeviceGroupPath\\\":\\\"Home\/AE 20 devices\\\",\\\"com.newpreet.andr\\\":\\\"1.2\\\"}\",\"FilterId\":\"10272\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{\"FilterName\":\"test\",\"FilterQuery\":\"{\\\"JobsFailed\\\":\\\"3\\\",\\\"searchOption\\\":\\\"0\\\",\\\"DeviceName\\\":\\\"69\\\",\\\"modelSearchOption\\\":\\\"2\\\",\\\"DeviceModelName\\\":\\\"android\\\",\\\"DeviceGroupPath\\\":\\\"Home\/AE 20 devices\\\",\\\"com.newpreet.andr\\\":\\\"1.2\\\"}\",\"FilterId\":\"10272\"}" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/devicefilter/delete: put: tags: - Filters summary: Delete filter description: This api lets you delete a particular filter from your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/FilterDeleteModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FilterDeleteResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/devicefilter/delete' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "FilterId": "11635" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter/delete"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{ \"FilterId\": \"11635\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicefilter/delete"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"FilterId\": \"11635\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter/delete" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"FilterId\": \"11635\" }" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) # api/v2/jobassignment/filter: # post: # tags: # - Filters # summary: Apply job on filter # description: This api lets you apply job on a particular filter. # requestBody: # content: # application/json: # schema: # oneOf: # - $ref: '#/components/schemas/Immediate_Filter' # - $ref: '#/components/schemas/Periodically_Filter' # - $ref: '#/components/schemas/Days_Time_Filter' # - $ref: '#/components/schemas/Date_Time_Filter' # discriminator: # mapping: # Immediately: '#/components/schemas/Immediate_Filter' # Periodically: '#/components/schemas/Periodically_Filter' # Schedule Days And Time: '#/components/schemas/Days_Time_Filter' # Schedule Date And Time: '#/components/schemas/Date_Time_Filter' # responses: # '200': # description: Ok # content: # application/json: # schema: # $ref: '#/components/schemas/JobApplyToFilterResponseModel' # '403': # description: Forbidden # content: # application/json: # schema: # type: string # example: Access denied # description: User does not have permission for this action # x-code-samples: # - lang: CURL # source: | # curl -X POST 'https://yourdomain.com/api/v2/jobassignment/deviceFilter' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "FilterID":"4", "JobId": "a5a7ecd7-54a1-435b-9698-47d36adf45aa", "DeviceChargingState": "0", "DownloadType": 2 }' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/jobassignment/deviceFilter"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.POST); # //Request payload # string PayLoad = "{ \"FilterID\": \"4\" , \"JobId\": \"a5a7ecd7-54a1-435b-9698-47d36adf45aa\", \"DeviceChargingState\": \"0\", \"DownloadType\": 2, \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/jobassignment/deviceFilter"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = "{ \"FilterID\": \"4\" , \"JobId\": \"a5a7ecd7-54a1-435b-9698-47d36adf45aa\", \"DeviceChargingState\": \"0\", \"DownloadType\": 2, \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # //Send payload # .post(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/jobassignment/deviceFilter" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "{ \"FilterID\": \"4\" , \"JobId\": \"a5a7ecd7-54a1-435b-9698-47d36adf45aa\", \"DeviceChargingState\": \"0\", \"DownloadType\": 2, \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}" # #Send request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) api/v2/runscript/GetAllRunScripts: get: tags: - Run scripts summary: Get run scripts description: | This api lets you retrieve all the predefined run scripts from SureMDM.

Note: Replace all \r\n with <br/> in the script while creating run script job. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RunScriptResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/runscript/GetAllRunScripts' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/runscript/GetAllRunScripts"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/runscript/GetAllRunScripts" //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/runscript/GetAllRunScripts" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Query parameters params={"FolderId":"0da0d788-f8cd-4803-a112-c43a4cfa9cec"} #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/CustomProperties: post: tags: - Custom Properties summary: Create Custom Properties description: | This API allows you to create custom properties in SureMDM.

Note: Ensure to format all strings correctly and validate data types as per the schema. requestBody: description: Custom properties payload required: true content: application/json: schema: $ref: '#/components/schemas/CustomPropertiesPayload' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CustomPropertyCreationResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/CustomProperties' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "CustomPropertiesPlatformType": "All", "CustomPropertiesKey": "CustomProperties_New", "CustomPropertiesDataType": "String", "CustomPropertiesValue": null, "Mask": false, "RetrieveValueFromScript": false, "CustomPropertyScript": "", "ScriptExecutionContext": "1", "TimeInterval": 60 }' - lang: C# source: | // SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/CustomProperties"; var client = new RestClient(URL); // Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ApiKey header client.AddDefaultHeader("ApiKey", "Your-Api-Key"); // Set content type client.AddDefaultHeader("Content-Type", "application/json"); // Set request method var request = new RestRequest(Method.POST); // Add JSON payload request.AddJsonBody(new { CustomPropertiesPlatformType = "All", CustomPropertiesKey = "CustomProperties_New", CustomPropertiesDataType = "String", CustomPropertiesValue = null, Mask = false, RetrieveValueFromScript = false, CustomPropertyScript = "", ScriptExecutionContext = "1", TimeInterval = 60 }); // Send request IRestResponse response = client.Execute(request); // Read response Console.WriteLine(response.Content); - lang: JAVA source: | // SureMDM API URL of your account String URL = "https://yourdomain.com/api/v2/CustomProperties"; // Create request OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\n \"CustomPropertiesPlatformType\": \"All\",\n \"CustomPropertiesKey\": \"CustomProperties_New\",\n \"CustomPropertiesDataType\": \"String\",\n \"CustomPropertiesValue\": null,\n \"Mask\": false,\n \"RetrieveValueFromScript\": false,\n \"CustomPropertyScript\": \"\",\n \"ScriptExecutionContext\": \"1\",\n \"TimeInterval\": 60\n}"); Request request = new Request.Builder() .url(URL) .post(body) // Basic authentication header .addHeader("Authorization", Credentials.basic("Username", "Password")) // ApiKey header .addHeader("ApiKey", "Your-Api-Key") // Set content type .addHeader("Content-Type", "application/json") .build(); // Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # SureMDM API URL of your account url = "https://yourdomain.com/api/v2/CustomProperties" # Add headers headers = { # Api-Key header 'ApiKey': "Your-Api-Key", # Set content type 'Content-Type': "application/json", } # Basic authentication credentials credentials = ("Username", "Password") # JSON payload payload = { "CustomPropertiesPlatformType": "All", "CustomPropertiesKey": "CustomProperties_New", "CustomPropertiesDataType": "String", "CustomPropertiesValue": None, "Mask": False, "RetrieveValueFromScript": False, "CustomPropertyScript": "", "ScriptExecutionContext": "1", "TimeInterval": 60 } # Send request response = requests.post(url, auth=credentials, headers=headers, json=payload) print(response.text) api/v2/CustomProperties/editCustomProperty/{CustomPropertyId}: put: tags: - Custom Properties summary: Edit Custom Property description: | This API allows you to edit an existing custom property in SureMDM. - Use the `CustomPropertyId` provided in the URL to identify the property to edit. - To fetch the list of custom property IDs, use the [getAllCustomProperties](#operation/getAllCustomProperties) API. - **Note:** Editing is only allowed for specific fields. Changes to the **name** or other properties (except for `CustomPropertyScript` and `TimeInterval`) are not permitted. You can update the script and time interval values, but other fields will remain unchanged. parameters: - name: CustomPropertyId in: path required: true description: Unique identifier for the custom property to edit. schema: type: string requestBody: description: Payload for editing the custom property. required: true content: application/json: schema: $ref: '#/components/schemas/EditCustomPropertyPayload' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditCustomPropertyResponse' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/CustomProperties/editCustomProperty/a9407204-bd51-4029-adc0-6bd3335710ef' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "CustomPropertiesPlatformType": "Android", "CustomPropertiesKey": "ffer", "CustomPropertiesDataType": "String", "CustomPropertiesValue": "", "Mask": false, "RetrieveValueFromScript": true, "CustomPropertyScript": "tfd3rfds", "ScriptExecutionContext": "1", "TimeInterval": 75 }' - lang: C# source: | var client = new RestClient("https://yourdomain.com/api/v2/CustomProperties/editCustomProperty/a9407204-bd51-4029-adc0-6bd3335710ef"); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your-Api-Key"); var request = new RestRequest(Method.PUT); request.AddHeader("Content-Type", "application/json"); request.AddJsonBody(new EditCustomPropertyPayload { CustomPropertiesPlatformType = "Android", CustomPropertiesKey = "ffer", CustomPropertiesDataType = "String", CustomPropertiesValue = "", Mask = false, RetrieveValueFromScript = true, CustomPropertyScript = "tfd3rfds", ScriptExecutionContext = "1", TimeInterval = 75 }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/CustomProperties/editCustomProperty/a9407204-bd51-4029-adc0-6bd3335710ef"; OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\n \"CustomPropertiesPlatformType\": \"Android\",\n \"CustomPropertiesKey\": \"ffer\",\n \"CustomPropertiesDataType\": \"String\",\n \"CustomPropertiesValue\": \"\",\n \"Mask\": false,\n \"RetrieveValueFromScript\": true,\n \"CustomPropertyScript\": \"tfd3rfds\",\n \"ScriptExecutionContext\": \"1\",\n \"TimeInterval\": 75\n}"); Request request = new Request.Builder() .url(URL) .put(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your-Api-Key") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/CustomProperties/editCustomProperty/a9407204-bd51-4029-adc0-6bd3335710ef" headers = { 'ApiKey': "Your-Api-Key", 'Content-Type': "application/json", } credentials = ("Username", "Password") payload = { "CustomPropertiesPlatformType": "Android", "CustomPropertiesKey": "ffer", "CustomPropertiesDataType": "String", "CustomPropertiesValue": "", "Mask": False, "RetrieveValueFromScript": True, "CustomPropertyScript": "tfd3rfds", "ScriptExecutionContext": "1", "TimeInterval": 75 } response = requests.put(url, auth=credentials, headers=headers, json=payload) print(response.text) api/v2/CustomProperties/getCustomOrDefaultProperties/{limit}/{offset}/{sortColumn}/{sortOrder}/{searchValue}/{isCustom}/{Platform}: get: operationId: getAllCustomProperties tags: - Custom Properties summary: Fetch custom properties description: | This API retrieves a list of custom or default properties based on the provided filters, sorting options, and pagination parameters. It can filter based on custom properties, platform type, and whether the properties are custom or default. parameters: - name: limit in: path description: The maximum number of custom properties to fetch. required: true schema: type: integer example: 50 - name: offset in: path description: The starting point for fetching custom properties. required: true schema: type: integer example: 0 - name: sortColumn in: path description: | The column by which to sort the results. Only the following columns can be used for sorting: - **CustomPropertiesDataType** - **CustomPropertiesPlatformType** - **CustomPropertiesKey** Any other columns will not be accepted. required: true schema: type: string example: "CustomPropertiesDataType" - name: sortOrder in: path description: The order in which to sort the results. required: true schema: type: string enum: [asc, desc] example: "desc" - name: searchValue in: path description: | Term to filter custom properties by. The value should be Base64-encoded. If no search term is provided, it will be Base64-encoded as "bnVsbA==" (representing "null"). required: true schema: type: string example: "bnVsbA==" - name: isCustom in: path description: Whether to filter for custom properties (true) or default properties (false). required: true schema: type: boolean example: true - name: Platform in: path description: | Platform type to filter the properties by. **Note:** If a specific platform (e.g., **Android**, **Windows**, etc.) is passed in the `Platform` parameter, the API will return properties for the given platform as well as those applicable to all platforms. For example: - Passing **Android** in the URL will return properties for **Android** + **All** platforms. - Passing **Windows** will return properties for **Windows** + **All** platforms. This behavior applies to all platform values. required: true schema: type: string example: "null" responses: '200': description: Data Fetched Successfully content: application/json: schema: $ref: '#/components/schemas/CustomPropertyGetApiResponse' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/CustomProperties/getCustomOrDefaultProperties/{limit}/{offset}/{sortColumn}/{sortOrder}/{searchValue}/{isCustom}/{Platform}' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/CustomProperties/getCustomOrDefaultProperties/{limit}/{offset}/{sortColumn}/{sortOrder}/{searchValue}/{isCustom}/{Platform}"; var client = new RestClient(URL); client.AddDefaultHeader("ApiKey", "Your-Api-Key"); client.AddDefaultHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/CustomProperties/getCustomOrDefaultProperties/{limit}/{offset}/{sortColumn}/{sortOrder}/{searchValue}/{isCustom}/{Platform}"; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() .addHeader("ApiKey", "Your-Api-Key") .addHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/CustomProperties/getCustomOrDefaultProperties/{limit}/{offset}/{sortColumn}/{sortOrder}/{searchValue}/{isCustom}/{Platform}" headers = { 'ApiKey': "Your-Api-Key", 'Authorization': "Basic dXNlcm5hbWU6cGFzc3dvcmQ=" } response = requests.get(url, headers=headers) print(response.text) api/v2/CustomProperties/editGroupAttribute: put: tags: - Custom Properties summary: Update the value of custom property description: | This API allows you to update the value of a custom property for a specific group in SureMDM.

**Note:** - Only the **value** of the custom property can be changed. Modifying the key, datatype, and other fields is not permitted. - Custom property value can only be updated for custom properties created without a script. - **Important:** In Request Body, Each CustomPropertiesKey must be unique across different group paths. If you attempt to use the same CustomPropertiesKey with different values in multiple group paths, the request will be rejected. To ensure success, assign a distinct CustomPropertiesKey for each group path, even if the group paths differ requestBody: description: Custom properties group attribute payload required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/EditGroupAttributePayload' responses: '200': description: Update Successful content: application/json: schema: $ref: '#/components/schemas/EditGroupAttributeResponse' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/CustomProperties/editGroupAttribute' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '[{ "CustomPropertiesKey": "newCustom12", "CustomPropertiesValue": "customvalue44", "CustomPropertiesDataType": "String", "Mask": false, "GroupID": null, "CustomPropertiesPlatformType": "All", "SendToDevice": "true", "GroupPath": "Home", "RetrieveValueFromScript": false, "CustomPropertyScript": "", "ScriptExecutionContext": null, "TimeInterval": 60 }]' - lang: C# source: | // SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/CustomProperties/editGroupAttribute"; var client = new RestClient(URL); // Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ApiKey header client.AddDefaultHeader("ApiKey", "Your-Api-Key"); // Set content type client.AddDefaultHeader("Content-Type", "application/json"); // Set request method var request = new RestRequest(Method.POST); // Add JSON payload request.AddJsonBody(new[] { new { CustomPropertiesKey = "newCustom12", CustomPropertiesValue = "customvalue44", CustomPropertiesDataType = "String", Mask = false, GroupID = (string)null, CustomPropertiesPlatformType = "All", SendToDevice = "true", GroupPath = "Home", RetrieveValueFromScript = false, CustomPropertyScript = "", ScriptExecutionContext = (string)null, TimeInterval = 60 } }); // Send request IRestResponse response = client.Execute(request); // Read response Console.WriteLine(response.Content); - lang: JAVA source: | // SureMDM API URL of your account String URL = "https://yourdomain.com/api/v2/CustomProperties/editGroupAttribute"; // Create request OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "[{\"CustomPropertiesKey\":\"newCustom12\",\"CustomPropertiesValue\":\"customvalue44\",\"CustomPropertiesDataType\":\"String\",\"Mask\":false,\"GroupID\":null,\"CustomPropertiesPlatformType\":\"All\",\"SendToDevice\":\"true\",\"GroupPath\":\"Home\",\"RetrieveValueFromScript\":false,\"CustomPropertyScript\":\"\",\"ScriptExecutionContext\":null,\"TimeInterval\":60}]"); Request request = new Request.Builder() .url(URL) .post(body) // Basic authentication header .addHeader("Authorization", Credentials.basic("Username", "Password")) // ApiKey header .addHeader("ApiKey", "Your-Api-Key") // Set content type .addHeader("Content-Type", "application/json") .build(); // Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # SureMDM API URL of your account url = "https://yourdomain.com/api/v2/CustomProperties/editGroupAttribute" # Add headers headers = { # Api-Key header 'ApiKey': "Your-Api-Key", # Set content type 'Content-Type': "application/json", } # Basic authentication credentials credentials = ("Username", "Password") # JSON payload payload = [{ "CustomPropertiesKey": "newCustom12", "CustomPropertiesValue": "customvalue44", "CustomPropertiesDataType": "String", "Mask": False, "GroupID": None, "CustomPropertiesPlatformType": "All", "SendToDevice": "true", "GroupPath": "Home", "RetrieveValueFromScript": False, "CustomPropertyScript": "", "ScriptExecutionContext": None, "TimeInterval": 60 }] # Send request response = requests.post(url, auth=credentials, headers=headers, json=payload) print(response.text) api/v2/CustomProperties/updateDeviceCustomProperty: put: tags: - Custom Properties summary: Update Custom Property for a Single Device description: | This API allows updating a custom property for a **single device**. Use this endpoint to modify device-specific custom properties with the specified key, value, and other attributes. **Note:** - Only the value of the custom property can be changed. Modifying the key, datatype, and other fields is not permitted. - Custom property value can only be updated for **custom properties created without a script**. requestBody: description: The payload to update the custom property for the device. required: true content: application/json: schema: $ref: '#/components/schemas/UpdateDeviceCustomPropertyPayload' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/UpdateDeviceCustomPropertyResponse' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/CustomProperties/updateDeviceCustomProperty' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "key": "Test66", "value": "1;1;1", "dataType": "Enum", "DeviceID": "8b485d8e-5960-43ff-b55d-295a97040a17", "DeviceName": "6144", "GroupPath": "6144", "RetrieveValueFromScript": false, "CustomPropertyScript": null, "ScriptExecutionContext": null, "TimeInterval": 0 }' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/CustomProperties/updateDeviceCustomProperty"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your-Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.PUT); request.AddJsonBody(new { key = "Test66", value = "1;1;1", dataType = "Enum", DeviceID = "8b485d8e-5960-43ff-b55d-295a97040a17", DeviceName = "6144", GroupPath = "6144", RetrieveValueFromScript = false, CustomPropertyScript = (string)null, ScriptExecutionContext = (string)null, TimeInterval = 0 }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: Java source: | String URL = "https://yourdomain.com/api/v2/CustomProperties/updateDeviceCustomProperty"; OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\n \"key\": \"Test66\",\n \"value\": \"1;1;1\",\n \"dataType\": \"Enum\",\n \"DeviceID\": \"8b485d8e-5960-43ff-b55d-295a97040a17\",\n \"DeviceName\": \"6144\",\n \"GroupPath\": \"6144\",\n \"RetrieveValueFromScript\": false,\n \"CustomPropertyScript\": null,\n \"ScriptExecutionContext\": null,\n \"TimeInterval\": 0\n}"); Request request = new Request.Builder() .url(URL) .put(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your-Api-Key") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/CustomProperties/updateDeviceCustomProperty" headers = { 'ApiKey': "Your-Api-Key", 'Content-Type': "application/json", } credentials = ("Username", "Password") payload = { "key": "Test66", "value": "1;1;1", "dataType": "Enum", "DeviceID": "8b485d8e-5960-43ff-b55d-295a97040a17", "DeviceName": "6144", "GroupPath": "6144", "RetrieveValueFromScript": False, "CustomPropertyScript": None, "ScriptExecutionContext": None, "TimeInterval": 0 } response = requests.put(url, auth=credentials, headers=headers, json=payload) print(response.text) api/v2/devicefilter/CreateAdvancedQuery: post: tags: - Advanced Query 🚀 [BETA] # summary: "🚀 Create Advanced Device Filter Query BETA" summary: Create Advanced Device Filter Query description: | 🚀 **Beta Feature:** This API is currently in **Beta** and available only to specific customers. Functionality and behavior may change in future updates.

This API allows you to create an advanced device filter query in SureMDM.

⚠️ **Note:** Ensure that the filter query is structured correctly with valid conditions. requestBody: description: > Device filter query payload with advanced filters. Below are the instructions for using filter conditions:

Condition Options for Text Condition Columns:
Click to expand
Condition Description Value
= is or equals =
!= is not or not equals !=
|_| contains |_|
!|_| not contains !|_|
|_ starts with |_
!|_ not starts with !|_
_| ends with _|
!_| not ends with !_|

Condition Options for Numeric Condition Columns:
Click to expand
Condition Description Value
= is or equals =
!= is not or not equals !=
> greater than >
< less than <
>= greater than or equal to >=
<= less than or equal to <=
|-| between |-|
!|-| not between !|-|

Below are the instructions for using logical operators (`joinCondition`) for advanced filtering:
Click to expand
Option Description
And Combines multiple conditions where all must be true for the filter to match.
Or Combines multiple conditions where at least one must be true for the filter to match.
And ( Starts a grouped condition with an `AND` logical operator. (includeStart will be true)
Or ( Starts a grouped condition with an `OR` logical operator. (includeStart will be true)
) Closes a grouped condition. (includeStop will be true)
) And Closes a grouped condition and appends an `AND` logical operator. (includeStop will be true)
) Or Closes a grouped condition and appends an `OR` logical operator. (includeStop will be true)

Note on `includeStart` and `includeStop`:
Click to expand
  • `includeStart`: Refers to the start of a grouped condition.
  • `includeStop`: Refers to the end of a grouped condition.
`includeStart` and `includeStop` will only be applicable for grouped conditions.
required: true content: application/json: schema: type: object properties: FilterName: type: string description: | The name of the filter query. This is a user-defined name to identify the filter. example: "usernameAdvancedFilterNew" FilterQuery: type: string description: > The filter query defines the conditions to filter devices based on various properties.

Supported columns for filtering are listed below:
Click to expand
Supported Column Name Prop Type Condition
Device name DeviceName textWithFilters text
Device Manufacturer DeviceManufacture text text
Platform/Model DeviceModelName textWithFilters text
IP Address DeviceIPAddress text text
Network operator Operator text text
Agent version AgentVersion text numeric
OS version ReleaseVersion text numeric
SureLock Version SureLockVersion text numeric
SureFox Version SureFoxVersion text numeric
SureVideo Version SureVideoVersion text numeric
IMEI IMEI textWithFilters text
IMEI 2 IMEI2 text text
MEID MEID text text
IMSI IMSI text text
Phone Number PhoneNumber text text
Serial Number SerialNumber textWithFilters text
OS Build Number OsBuildNumber text text
Group Path DeviceGroupPath text text
Sim Serial Number (ICCID) SimSerialNumber text text
Network Type NetworkType text text

Additionally, two additional columns are available for advanced Filters:

Click to expand details about Additional Columns
  • Installed Application:
    • Name: Application name
    • Prop: Package ID
    • Type: Numeric
    • Val: The value of the app version
    • IsApp: True
    • ValueLabel: The app version value
  • Custom Property:
    • Name: The key name of the custom property
    • Prop: Same as the key name
    • Type: Text
    • IsCP: True
    • Val: The value of the custom property
    • ValueLabel: The value of the custom property

Example Payload for Installed Applications and Custom Properties
                      {
                        "FilterName": "Skeths1s",
                        "FilterQuery": [
                          {
                            "name": "Boolean Windows Script_API",
                            "prop": "Boolean Windows Script_API",
                            "condition": "=",
                            "type": "text",
                            "isCP": true,
                            "val": "as",
                            "valueLabel": "as"
                          },
                          {
                            "joinCondition": "And"
                          },
                          {
                            "name": "Chrome",
                            "prop": "com.android.chrome",
                            "condition": "=",
                            "type": "numeric",
                            "isApp": true,
                            "val": "12.21",
                            "valueLabel": "12.21"
                          }
                        ],
                        "isQuerySearch": true
                      }
                        

Query filters should be formatted as follows for each column:
{"name":"", "prop":"", "condition":"", "type":"", "val":"", "valueLabel":"", "isCP":true, "isApp":true}

Explanation of Parameters:
  • `val`: The value to be searched for in the respective column.
  • `valueLabel`: This is identical to `val` and is used to display the values given for each prop in the UI..
  • `val1`: This is applicable for numeric condition columns when "between" or "not between" is selected. In such cases, `valueLabel` is formatted as `val & val1`.
  • `isCP`: This is applicable only when "Custom Properties" is selected while creating the advanced query.
  • `isApp`: This is applicable only when "Installed Applications" is added in the advanced query.

Join Condition:
The `joinCondition` is required between two filter columns.
When filtering between two columns, a `joinCondition` must be specified to connect them. This ensures that the conditions are evaluated correctly between the two filters.

Example Payload for Join Condition
                      {
                        "FilterName": "usernameAdvancedFilterNew",
                        "FilterQuery": [
                          {
                            "name": "Device Manufacturer",
                            "prop": "DeviceManufacture",
                            "condition": "|_|",
                            "type": "text",
                            "val": "XIOMI",
                            "valueLabel": "XIOMI"
                          },
                          { "joinCondition": "Or" },
                          {
                            "name": "Platform / Model",
                            "prop": "DeviceModelName",
                            "condition": "!=",
                            "type": "textWithFilters",
                            "val": "ANDROID",
                            "valueLabel": "ANDROID"
                          },
                          { "joinCondition": "Or" },
                          {
                            "name": "IP Address",
                            "prop": "DeviceIPAddress",
                            "condition": "=",
                            "type": "text",
                            "val": "2323243.232",
                            "valueLabel": "2323243.232"
                          },
                          { "joinCondition": "Or" },
                          {
                            "name": "Phone Number",
                            "prop": "PhoneNumber",
                            "condition": "!=",
                            "type": "text",
                            "val": "9349347834288734",
                            "valueLabel": "9349347834288734"
                          },
                          { "joinCondition": "Or" },
                          {
                            "name": "Group Path",
                            "prop": "DeviceGroupPath",
                            "condition": "!=",
                            "type": "text",
                            "val": "GROUP/HOME",
                            "valueLabel": "GROUP/HOME"
                          }
                        ],
                        "isQuerySearch": true
                      }
                        

This example shows how the filters are connected using "Or" as the `joinCondition`. The query filters are specified one by one, and each filter is joined using the `joinCondition` to logically combine the conditions. example: > [{"name":"Device Manufacturer","prop":"DeviceManufacture","condition":"|_|","type":"text","val":"XIOMI","valueLabel":"XIOMI"}, {"joinCondition":"Or"}, {"name":"Platform / Model","prop":"DeviceModelName","condition":"!=","type":"textWithFilters","val":"ANDROID","valueLabel":"ANDROID"}, {"joinCondition":"Or"}, {"name":"IP Address","prop":"DeviceIPAddress","condition":"=","type":"text","val":"2323243.232","valueLabel":"2323243.232"}, {"joinCondition":"Or"}, {"name":"Phone Number","prop":"PhoneNumber","condition":"!=","type":"text","val":"9349347834288734","valueLabel":"9349347834288734"}, {"joinCondition":"Or"}, {"name":"Group Path","prop":"DeviceGroupPath","condition":"!=","type":"text","val":"GROUP/HOME","valueLabel":"GROUP/HOME"}] isQuerySearch: type: boolean description: | A flag indicating whether the filter is used for querying search results. example: true responses: '200': description: ok content: application/json: schema: $ref: '#/components/schemas/AddSmartFilterResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/devicefilter/CreateAdvancedQuery' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "FilterName": "agentVersionFilterusername", "FilterQuery": "[{\"name\":\"Agent Version\",\"prop\":\"AgentVersion\",\"condition\":\"=\",\"type\":\"text\",\"val\":\"27.45.54\",\"valueLabel\":\"27.45.54\"}]", "isQuerySearch": true }' - lang: C# source: | // SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter/CreateAdvancedQuery"; var client = new RestClient(URL); // Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ApiKey header client.AddDefaultHeader("ApiKey", "Your-Api-Key"); // Set content type client.AddDefaultHeader("Content-Type", "application/json"); // Set request method var request = new RestRequest(Method.POST); // Add JSON payload request.AddJsonBody(new { FilterName = "agentVersionFilterusername", FilterQuery = "[{\"name\":\"Agent Version\",\"prop\":\"AgentVersion\",\"condition\":\"=\",\"type\":\"text\",\"val\":\"27.45.54\",\"valueLabel\":\"27.45.54\"}]", isQuerySearch = true }); // Send request IRestResponse response = client.Execute(request); // Read response Console.WriteLine(response.Content); - lang: JAVA source: | // SureMDM API URL of your account String URL = "https://yourdomain.com/api/v2/devicefilter/CreateAdvancedQuery"; // Create request OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\n \"FilterName\": \"agentVersionFilterusername\",\n \"FilterQuery\": \"[{\\\"name\\\":\\\"Agent Version\\\",\\\"prop\\\":\\\"AgentVersion\\\",\\\"condition\\\":\\\"=\\\",\\\"type\\\":\\\"text\\\",\\\"val\\\":\\\"27.45.54\\\",\\\"valueLabel\\\":\\\"27.45.54\\\"}]\",\n \"isQuerySearch\": true\n}"); Request request = new Request.Builder() .url(URL) .post(body) // Basic authentication header .addHeader("Authorization", Credentials.basic("Username", "Password")) // ApiKey header .addHeader("ApiKey", "Your-Api-Key") // Set content type .addHeader("Content-Type", "application/json") .build(); // Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter/CreateAdvancedQueryr" # Add headers headers = { # Api-Key header 'ApiKey': "Your-Api-Key", # Set content type 'Content-Type': "application/json", } # Basic authentication credentials credentials = ("Username", "Password") # JSON payload payload = { "FilterName": "agentVersionFilterusername", "FilterQuery": "[{\"name\":\"Agent Version\",\"prop\":\"AgentVersion\",\"condition\":\"=\",\"type\":\"text\",\"val\":\"27.45.54\",\"valueLabel\":\"27.45.54\"}]", "isQuerySearch": True } # Send request response = requests.post(url, auth=credentials, headers=headers, json=payload) print(response.text) api/v2/devicefilter/smartfilters: get: operationId: getAllSmartFilters tags: - Advanced Query 🚀 [BETA] summary: Get all advanced query filters description: | This API lets you retrieve a list of all advanced query filters present under your SureMDM account. The filters contain advanced conditions based on device properties like Agent Version, IMEI, Device Model, etc. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAdvancedFiltersOutputModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/devicefilter/smartfilters' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter/smartfilters"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicefilter/smartfilters"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter/smartfilters" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/devicefilter/smartfilter/delete: put: tags: - Advanced Query 🚀 [BETA] summary: Delete advanced query filter description: This API allows you to delete a specific advanced query filter from your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdvanceQueryFilterDeleteModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AdvancedQueryFilterDeleteResponseModel' '400': description: Failed content: application/json: schema: $ref: '#/components/schemas/AdvancedQueryFilterDeleteFailureResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/devicefilter/smartfilter/delete' \ -H 'ApiKey: 11111111111111111111' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "FilterId": "11635" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter/smartfilter/delete"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{ \"FilterId\": \"11635\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/api/v2/devicefilter/smartfilter/delete"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"FilterId\": \"11635\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter/smartfilter/delete" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"FilterId\": \"11635\" }" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/devicefilter/EditSmartFilter: put: tags: - Advanced Query 🚀 [BETA] summary: Edit advanced query filter description: This API allows you to edit an existing advanced query filter in your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/AdvancedQueryFilterEditRequestModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateFilterResponseModel1' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/UpdateFilterResponseModel2' '400': description: Bad Request / Invalid Filter Query content: application/json: schema: $ref: '#/components/schemas/UpdateFilterResponseModel3' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/devicefilter/EditSmartFilter' \ -H 'ApiKey: 11111111111111111111' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "FilterName": "agentVersionFilter34424", "FilterQuery": "[{\"name\":\"Agent Version\",\"prop\":\"AgentVersion\",\"condition\":\"=\",\"type\":\"text\",\"val\":\"27.45.54\",\"valueLabel\":\"27.45.54\"},{\"joinCondition\":\"Or\"},{\"name\":\"Platform / Model\",\"prop\":\"DeviceModelName\",\"condition\":\"!=\",\"type\":\"textWithFilters\",\"val\":\"Android\",\"valueLabel\":\"Android\"},{\"joinCondition\":\"Or\"},{\"name\":\"Phone Number\",\"prop\":\"PhoneNumber\",\"condition\":\"!=\",\"type\":\"text\",\"val\":\"21323213213213\",\"valueLabel\":\"21323213213213\"}]", "FilterId": "f8058543-de93-4d9e-9b6a-df931437e645", "isQuerySearch": true }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter/EditSmartFilter"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{ \"FilterName\": \"agentVersionFilter34424\", \"FilterQuery\": \"[{\\\"name\\\":\\\"Agent Version\\\",\\\"prop\\\":\\\"AgentVersion\\\",\\\"condition\\\":\\\"=\\\",\\\"type\\\":\\\"text\\\",\\\"val\\\":\\\"27.45.54\\\",\\\"valueLabel\\\":\\\"27.45.54\\\"},{\\\"joinCondition\\\":\\\"Or\\\"},{\\\"name\\\":\\\"Platform / Model\\\",\\\"prop\\\":\\\"DeviceModelName\\\",\\\"condition\\\":\\\"!=\\\",\\\"type\\\":\\\"textWithFilters\\\",\\\"val\\\":\\\"Android\\\",\\\"valueLabel\\\":\\\"Android\\\"},{\\\"joinCondition\\\":\\\"Or\\\"},{\\\"name\\\":\\\"Phone Number\\\",\\\"prop\\\":\\\"PhoneNumber\\\",\\\"condition\\\":\\\"!=\\\",\\\"type\\\":\\\"text\\\",\\\"val\\\":\\\"21323213213213\\\",\\\"valueLabel\\\":\\\"21323213213213\\\"}]\", \"FilterId\": \"f8058543-de93-4d9e-9b6a-df931437e645\", \"isQuerySearch\": true }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicefilter/EditSmartFilter"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"FilterName\": \"agentVersionFilter34424\", \"FilterQuery\": \"[{\\\"name\\\":\\\"Agent Version\\\",\\\"prop\\\":\\\"AgentVersion\\\",\\\"condition\\\":\\\"=\\\",\\\"type\\\":\\\"text\\\",\\\"val\\\":\\\"27.45.54\\\",\\\"valueLabel\\\":\\\"27.45.54\\\"},{\\\"joinCondition\\\":\\\"Or\\\"},{\\\"name\\\":\\\"Platform / Model\\\",\\\"prop\\\":\\\"DeviceModelName\\\",\\\"condition\\\":\\\"!=\\\",\\\"type\\\":\\\"textWithFilters\\\",\\\"val\\\":\\\"Android\\\",\\\"valueLabel\\\":\\\"Android\\\"},{\\\"joinCondition\\\":\\\"Or\\\"},{\\\"name\\\":\\\"Phone Number\\\",\\\"prop\\\":\\\"PhoneNumber\\\",\\\"condition\\\":\\\"!=\\\",\\\"type\\\":\\\"text\\\",\\\"val\\\":\\\"21323213213213\\\",\\\"valueLabel\\\":\\\"21323213213213\\\"}]\", \"FilterId\": \"f8058543-de93-4d9e-9b6a-df931437e645\", \"isQuerySearch\": true }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter/EditSmartFilter" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"FilterName\": \"agentVersionFilter34424\", \"FilterQuery\": \"[{\\\"name\\\":\\\"Agent Version\\\",\\\"prop\\\":\\\"AgentVersion\\\",\\\"condition\\\":\\\"=\\\",\\\"type\\\":\\\"text\\\",\\\"val\\\":\\\"27.45.54\\\",\\\"valueLabel\\\":\\\"27.45.54\\\"},{\\\"joinCondition\\\":\\\"Or\\\"},{\\\"name\\\":\\\"Platform / Model\\\",\\\"prop\\\":\\\"DeviceModelName\\\",\\\"condition\\\":\\\"!=\\\",\\\"type\\\":\\\"textWithFilters\\\",\\\"val\\\":\\\"Android\\\",\\\"valueLabel\\\":\\\"Android\\\"},{\\\"joinCondition\\\":\\\"Or\\\"},{\\\"name\\\":\\\"Phone Number\\\",\\\"prop\\\":\\\"PhoneNumber\\\",\\\"condition\\\":\\\"!=\\\",\\\"type\\\":\\\"text\\\",\\\"val\\\":\\\"21323213213213\\\",\\\"valueLabel\\\":\\\"21323213213213\\\"}]\", \"FilterId\": \"f8058543-de93-4d9e-9b6a-df931437e645\", \"isQuerySearch\": true }" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/devicefilter/addfilterjobs/{FilterID}: post: tags: - Advanced Query 🚀 [BETA] summary: Add default job to AdvancedQuery filter description: Adds a default job to the specified filter group. parameters: - name: FilterID in: path required: true description: | ID of the Advance Query filter allocated by the SureMDM to which you want to add a default job..
Filter ID can be retrieved using the [Get all the Advanced Query](#operation/getAllSmartFilters) API. schema: type: string example: "9114a5cc-9843-4dee-9ded-12acacb32343" requestBody: description: Payload to add default jobs to the filter. required: true content: application/json: schema: $ref: '#/components/schemas/FilterAddJobPayload' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FilterAddJobResponse' x-code-samples: - lang: CURL source: > curl -X POST 'https://yourdomain.com/api/v2/devicefilter/addfilterjobs/9114a5cc-9843-4dee-9ded-12acacb32343' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '[{"JobID":"c0a19661-f808-4f9e-a268-a115d3a1e41f","DownloadType":2,"DeviceChargingState":"0","ApplyOnExistingDevices":1}]' - lang: Java source: | import java.net.HttpURLConnection; import java.net.URL; import java.io.OutputStream; import org.json.JSONArray; import org.json.JSONObject; public class Main { public static void main(String[] args) throws Exception { String url = "https://yourdomain.com/api/v2/devicefilter/addfilterjobs/9114a5cc-9843-4dee-9ded-12acacb32343"; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("ApiKey", "Your-Api-Key"); con.setRequestProperty("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="); con.setRequestProperty("Content-Type", "application/json"); con.setDoOutput(true); JSONArray payload = new JSONArray(); JSONObject job = new JSONObject(); job.put("JobID", "c0a19661-f808-4f9e-a268-a115d3a1e41f"); job.put("DownloadType", 2); job.put("DeviceChargingState", "0"); job.put("ApplyOnExistingDevices", 1); payload.put(job); try (OutputStream os = con.getOutputStream()) { byte[] input = payload.toString().getBytes("utf-8"); os.write(input, 0, input.length); } int responseCode = con.getResponseCode(); System.out.println("Response Code : " + responseCode); } } - lang: C# source: | using System; using System.Net.Http; using System.Text; using Newtonsoft.Json; class Program { static void Main(string[] args) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("ApiKey", "Your-Api-Key"); client.DefaultRequestHeaders.Add("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="); client.DefaultRequestHeaders.Add("Content-Type", "application/json"); var payload = new [] { new { JobID = "c0a19661-f808-4f9e-a268-a115d3a1e41f", DownloadType = 2, DeviceChargingState = "0", ApplyOnExistingDevices = 1 } }; var json = JsonConvert.SerializeObject(payload); var content = new StringContent(json, Encoding.UTF8, "application/json"); var response = client.PostAsync("https://yourdomain.com/api/v2/devicefilter/addfilterjobs/9114a5cc-9843-4dee-9ded-12acacb32343", content).Result; Console.WriteLine(response.StatusCode); } } - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/devicefilter/addfilterjobs/9114a5cc-9843-4dee-9ded-12acacb32343" headers = { 'ApiKey': "Your-Api-Key", 'Authorization': "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", 'Content-Type': "application/json", } payload = [ { "JobID": "c0a19661-f808-4f9e-a268-a115d3a1e41f", "DownloadType": 2, "DeviceChargingState": "0", "ApplyOnExistingDevices": 1 } ] response = requests.post(url, headers=headers, json=payload) print(response.json()) api/v2/devicefilter/getfilterjobs/{filterId}: get: tags: - Advanced Query 🚀 [BETA] summary: Get default job applied to advanced query filter description: Retrieve the list of jobs applied to the specified advanced query filter. parameters: - name: filterId in: path required: true description: | ID of the filter allocated by the SureMDM for which the default jobs need to be retrieved.
Filter ID can be retrieved using the [Get all the Advanced filters](#operation/getAllSmartFilters) API. schema: type: string example: "9114a5cc-9843-4dee-9ded-12acacb32343" responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/GetJobsAppliedToFilterResponseModel' x-code-samples: - lang: CURL source: > curl -X GET 'https://yourdomain.com/api/v2/devicefilter/getfilterjobs/{filterId}' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/devicefilter/getfilterjobs/{filterId}" headers = { 'ApiKey': "Your-Api-Key", 'Authorization': "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", } response = requests.get(url, headers=headers) print(response.json()) - lang: C# source: | using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("ApiKey", "Your-Api-Key"); client.DefaultRequestHeaders.Add("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="); var url = "https://yourdomain.com/api/v2/devicefilter/getfilterjobs/{filterId}"; var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } } } - lang: Java source: | import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Main { public static void main(String[] args) { try { String url = "https://yourdomain.com/api/v2/devicefilter/getfilterjobs/{filterId}"; HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("ApiKey", "Your-Api-Key"); conn.setRequestProperty("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("GET request failed"); } } catch (Exception e) { e.printStackTrace(); } } } api/v2/devicefilter/{FilterId}: put: tags: - Advanced Query 🚀 [BETA] summary: Set priority of a default job in an advanced query filter description: This API allows you to set the priority of a default job in an advanced query filter by specifying the filter ID and job details. parameters: - name: FilterId in: path required: true schema: type: string description: | ID of the Advance Query filter allocated by the SureMDM where the default job priority needs to be updated.
Filter ID can be retrieved using the [Get all the Advanced Query](#operation/getAllSmartFilters) API. example: "9114a5cc-9843-4dee-9ded-12acacb32343" requestBody: content: application/json: schema: $ref: '#/components/schemas/AddJobsToAdvancedQuerySetPriorityRequestModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AddJobsSetPrioriytAdvancedQueryResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343' \ -H 'ApiKey: 11111111111111111111' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '[{"JobID":"e3bdcc42-99cb-46b7-9ba4-889000c4d485","Priority":1},{"JobID":"27c483b1-bd1b-444e-a61a-e5d25366342e","Priority":2}]' - lang: C# source: | // SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343"; var client = new RestClient(URL); // Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // Set content type client.AddDefaultHeader("Content-Type", "application/json"); // Set request method var request = new RestRequest(Method.PUT); // Request payload string PayLoad = "[{\"JobID\":\"e3bdcc42-99cb-46b7-9ba4-889000c4d485\",\"Priority\":1},{\"JobID\":\"27c483b1-bd1b-444e-a61a-e5d25366342e\",\"Priority\":2}]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); // Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // SureMDM API URL of your account String URL = "https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343"; // Create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "[{\"JobID\":\"e3bdcc42-99cb-46b7-9ba4-889000c4d485\",\"Priority\":1},{\"JobID\":\"27c483b1-bd1-444e-a61a-e5d25366342e\",\"Priority\":2}]"; RequestBody body = RequestBody.create(mediaType, PayLoad); // Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // Send payload .put(body) // Basic authentication header .addHeader("Authorization", Credentials.basic("Username", "Password")) // ApiKey header .addHeader("ApiKey", "Your Api-Key") // Set content type .addHeader("Content-Type", "application/json") .build(); // Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343" # Add headers headers = { # Api-Key header 'ApiKey': "Your Api-Key", # Set content type 'Content-Type': "application/json", } # Basic authentication credentials Credentials = ("Username", "Password") # Payload payload = '[{"JobID":"e3bdcc42-99cb-46b7-9ba4-889000c4d485","Priority":1},{"JobID":"27c483b1-bd1b-444e-a61a-e5d25366342e","Priority":2}]' # Send request response = requests.put(url, auth=Credentials, data=payload, headers=headers) print(response.text) api/v2/devicefilter/{FilterId}/{JobID}: delete: tags: - Advanced Query 🚀 [BETA] summary: Delete a default job from an advanced query filter description: This API allows you to delete a default job associated with an advanced query filter by specifying the filter ID and job ID. parameters: - name: FilterId in: path required: true schema: type: string description: | ID of the Advance Query filter allocated by the SureMDM from which the default job should be deleted.
Filter ID can be retrieved using the [Get all the Advanced Query](#operation/getAllSmartFilters) API. - name: JobID in: path required: true schema: type: string description: Unique identifier of the default job to be deleted. example: "e3bdcc42-99cb-46b7-9ba4-889000c4d485" responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteDefaultJobFromAdvancedQueryResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343/e3bdcc42-99cb-46b7-9ba4-889000c4d485' \ -H 'ApiKey: 11111111111111111111' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | // SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343/e3bdcc42-99cb-46b7-9ba4-889000c4d485"; var client = new RestClient(URL); // Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // Set request method var request = new RestRequest(Method.DELETE); // Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // SureMDM API URL of your account String URL = "https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343/e3bdcc42-99cb-46b7-9ba4-889000c4d485"; // Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // Set request method .delete() // Basic authentication header .addHeader("Authorization", Credentials.basic("Username", "Password")) // ApiKey header .addHeader("ApiKey", "Your Api-Key") .build(); // Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicefilter/9114a5cc-9843-4dee-9ded-12acacb32343/e3bdcc42-99cb-46b7-9ba4-889000c4d485" # Add headers headers = { # Api-Key header 'ApiKey': "Your Api-Key", } # Basic authentication credentials Credentials = ("Username", "Password") # Send request response = requests.delete(url, auth=Credentials, headers=headers) print(response.text) api/v2/devicefilter/CloneFilter: put: tags: - Advanced Query 🚀 [BETA] summary: Clone an existing advanced query filter description: This API allows you to clone an existing advanced query filter by specifying the filter ID, new filter name, and whether to clone existing jobs. requestBody: content: application/json: schema: $ref: '#/components/schemas/CloneFilterRequestModel' required: true responses: '200': description: Successful response (including success and handled errors) content: application/json: schema: oneOf: - $ref: '#/components/schemas/CloneFilterSuccessResponse' - $ref: '#/components/schemas/CloneFilterNotFoundResponse' - $ref: '#/components/schemas/CloneFilterFailureResponse' # '400': # description: Invalid input parameters # content: # application/json: # schema: # $ref: '#/components/schemas/CloneFilterInvalidInputResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/devicefilter/CloneFilter' \ -H 'ApiKey: Your_Api_Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "FilterId": "e7856be1-b3eb-440d-8148-5112924d63ec", "FilterName": "Cloned_Filter_With_Jobs1", "cloneExistingJobs": true }' - lang: C# source: | using RestSharp; string URL = "https://yourdomain.com/api/v2/devicefilter/CloneFilter"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); var request = new RestRequest(Method.PUT); request.AddHeader("ApiKey", "Your_Api_Key"); request.AddHeader("Content-Type", "application/json"); request.AddJsonBody(new { FilterId = "e7856be1-b3eb-440d-8148-5112924d63ec", FilterName = "Cloned_Filter_With_Jobs1", cloneExistingJobs = true }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String url = "https://yourdomain.com/api/v2/devicefilter/CloneFilter"; String json = "{ \"FilterId\": \"e7856be1-b3eb-440d-8148-5112924d63ec\", \"FilterName\": \"Cloned_Filter_With_Jobs1\", \"cloneExistingJobs\": true }"; RequestBody body = RequestBody.create(MediaType.parse("application/json"), json); Request request = new Request.Builder() .url(url) .put(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your_Api_Key") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); } } - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/devicefilter/CloneFilter" headers = { 'ApiKey': "Your_Api_Key", 'Content-Type': "application/json" } credentials = ("Username", "Password") data = { "FilterId": "e7856be1-b3eb-440d-8148-5112924d63ec", "FilterName": "Cloned_Filter_With_Jobs1", "cloneExistingJobs": True } response = requests.put(url, json=data, auth=credentials, headers=headers) print(response.text) api/v2/jobfolder/all: get: operationId: getAllFolders tags: - Folders summary: Get all folders description: | This API retrieves a list of all folders in your SureMDM account. **Note:** This API will display **all folders**, including those related to jobs, folder, reports and other modules. It provides a comprehensive view of your SureMDM folder structure. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetJobFolderOutPutModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/jobfolder/all' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobfolder/all"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobfolder/all"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobfolder/all" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/jobfolder: post: tags: - Folders summary: Create folder description: This api lets you create a job folder under your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateJobFolder' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CreateJobFolderOutPutModel' '403': description: Forbidden content: application/json: schema: type: string example: Access denied description: User does not have permission for this action x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/jobfolder' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "ParentFolderID": null, "FolderName": "test_folder" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobfolder"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"ParentFolderID\": null, \"FolderName\": \"test_folder\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobfolder"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"ParentFolderID\": null, \"FolderName\": \"test_folder\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobfolder" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"ParentFolderID\": null, \"FolderName\": \"test_folder\" }" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) put: tags: - Folders summary: Set folder name description: This api lets you change name of the folder under your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/EditJobFolder' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditJobFolderResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/jobfolder' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "FolderName": "test_folder", "FolderID": "a435a679-b9f9-47b8-86a5-ccb45370b66a", "ParentFolderID": null }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobfolder"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{ \"FolderName\": \"test_folder\", \"FolderID\": \"a435a679-b9f9-47b8-86a5-ccb45370b66a\", \"ParentFolderID\": null }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobfolder"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"FolderName\": \"test_folder\", \"FolderID\": \"a435a679-b9f9-47b8-86a5-ccb45370b66a\", \"ParentFolderID\": null }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobfolder" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"FolderName\": \"test_folder\", \"FolderID\": \"a435a679-b9f9-47b8-86a5-ccb45370b66a\", \"ParentFolderID\": null }" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/jobfolder/{folderID}': delete: tags: - Folders summary: Delete folder description: This api lets you delete folder from your SureMDM account. parameters: - name: folderID in: path description: ID of the job folder you want to delete required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteJobFolderResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/jobfolder/{folderID}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobfolder/{folderID}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobfolder/{folderID}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobfolder/{folderID}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") print(response.text) 'api/v2/jobfolder/deleteFolderWithoutContents': delete: tags: - Folders summary: Delete folder without deleting the contents description: This api lets you delete folder without deleting its contents from your SureMDM account.
All jobs and subfolders will be moved to the root path. requestBody: content: application/json: schema: type: array items: type: string description: Folder IDs to be deleted example: - "69a24d7b-f17e-4a2d-9f41-a8d68693fe25" required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteJobFolderWithoutContentsResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/jobfolder/deleteFolderWithoutContents' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobfolder/deleteFolderWithoutContents"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Request payload string PayLoad ="["a435a679-b9f9-47b8-86a5-ccb45370b66a"]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobfolder/deleteFolderWithoutContents"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="["a435a679-b9f9-47b8-86a5-ccb45370b66a"]"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobfolder/deleteFolderWithoutContents" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "["a435a679-b9f9-47b8-86a5-ccb45370b66a"]" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/job': post: tags: - Jobs summary: Create jobs operationId: createJobTypeA description: This api lets you create job.
Jobs are actions which can be performed on the devices. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/FileTransferJob' - $ref: '#/components/schemas/InstallJob' - $ref: '#/components/schemas/WiFiConfigJob' - $ref: '#/components/schemas/NotificationPolicyJob' - $ref: '#/components/schemas/DeviceMigrationJob' - $ref: '#/components/schemas/SMSTrackingJob' - $ref: '#/components/schemas/CallTrackingJob' - $ref: '#/components/schemas/AppSettingsJob' - $ref: '#/components/schemas/RemoteWipeJob' - $ref: '#/components/schemas/TextMessageJob' - $ref: '#/components/schemas/LocationTrackingJob' - $ref: '#/components/schemas/GeoFencingJob' - $ref: '#/components/schemas/TimeFencingJob' - $ref: '#/components/schemas/NetworkFencingJob' - $ref: '#/components/schemas/CompliancePolicyJob' - $ref: '#/components/schemas/NixAgentSettingJob' - $ref: '#/components/schemas/RemoteBuzzJob' - $ref: '#/components/schemas/AgentUpgradeJob' - $ref: '#/components/schemas/RunScriptJob' - $ref: '#/components/schemas/SecurityPolicyJob' - $ref: '#/components/schemas/CompositeJob' - $ref: '#/components/schemas/LockDeviceJob' - $ref: '#/components/schemas/ThirdPartyApplicationSettings' - $ref: '#/components/schemas/AlertMessageJob' - $ref: '#/components/schemas/EmailConfigurationJob' - $ref: '#/components/schemas/TelecomManagementPolicyJob' - $ref: '#/components/schemas/RelayServerJob' - $ref: '#/components/schemas/DeviceInfoConfigJob' - $ref: '#/components/schemas/LostModeJob' description: List of Jobs required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/JobResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/job/"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.POST); // ... Request payload string PayLoad = "{ \"JobName\": \"Notify\", \"JobType\": \"File Transfer\", \"JobID\": \"2ADGJNJ68JKMBB1\", \"Platform\": \"Android\", \"FolderId\": 2, \"VersionCompare\": \"\", \"MinimumVersion\": 2, \"PayLoad\": [ \"eyJTdWJqZWN0IjoiZmNoYmciLCJCb2R5IjoidGh0ZnkiLCJSZWFkTm90aWZpY2F0aW9uIjp0cnVlLCJGb3JjZVJlYWQiOmZhbHNlLCJSaWNoVGV4dEJvZHkiOiIiLCJSaWNoVGV4dEh0bWwiOiIifQ==\" ], \"DeleteFileAfterDeployment\": \"false\", \"AppFilterName\": \"\", \"AppFilterCompare\": \"\", \"AppFilterCompareVersion\": \"\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/job/"; // ... create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"JobName\": \"Notify\", \"JobType\": \"File Transfer\", \"JobID\": \"2ADGJNJ68JKMBB1\", \"Platform\": \"Android\", \"FolderId\": 2, \"VersionCompare\": \"\", \"MinimumVersion\": 2, \"PayLoad\": [ \"eyJTdWJqZWN0IjoiZmNoYmciLCJCb2R5IjoidGh0ZnkiLCJSZWFkTm90aWZpY2F0aW9uIjp0cnVlLCJGb3JjZVJlYWQiOmZhbHNlLCJSaWNoVGV4dEJvZHkiOiIiLCJSaWNoVGV4dEh0bWwiOiIifQ==\" ], \"DeleteFileAfterDeployment\": \"false\", \"AppFilterName\": \"\", \"AppFilterCompare\": \"\", \"AppFilterCompareVersion\": \"\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // ... Send payload .post(body) // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/job/" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Payload payload = "{ \"JobName\": \"Notify\", \"JobType\": \"File Transfer\", \"JobID\": \"2ADGJNJ68JKMBB1\", \"Platform\": \"Android\", \"FolderId\": 2, \"VersionCompare\": \"\", \"MinimumVersion\": 2, \"PayLoad\": [ \"eyJTdWJqZWN0IjoiZmNoYmciLCJCb2R5IjoidGh0ZnkiLCJSZWFkTm90aWZpY2F0aW9uIjp0cnVlLCJGb3JjZVJlYWQiOmZhbHNlLCJSaWNoVGV4dEJvZHkiOiIiLCJSaWNoVGV4dEh0bWwiOiIifQ==\" ], \"DeleteFileAfterDeployment\": \"false\", \"AppFilterName\": \"\", \"AppFilterCompare\": \"\", \"AppFilterCompareVersion\": \"\"}" # ... Executing request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) get: operationId: getAllJobs tags: - Jobs summary: Get all jobs description: This api lets you retrieve list of jobs present under your SureMDM account. parameters: - in: query name: FolderId description: | ID of the job folder where the job is stored.
Folder ID can be retrieved using [Get all Folders](#operation/getAllFolders) API.
Note: **For home (default), the folder ID is null.** required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/JobOutputModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/job?FolderId={FolderID}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/job?FolderId=" + FolderID; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/job?FolderId=" + FolderID; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/job" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Query parameters params={"FolderId":"0da0d788-f8cd-4803-a112-c43a4cfa9cec"} #Send request response = requests.get(url,auth=Credentials,params=params,headers=headers) print(response.text) put: tags: - Jobs summary: Edit job description: | This api lets you edit job under your SureMDM account. requestBody: content: application/json: schema: discriminator: mapping: File Transfer: '#/components/schemas/FileTransferJobEdit' Install: '#/components/schemas/InstallJobEdit' WiFi Configuration: '#/components/schemas/WiFiConfigJobEdit' Notification Policy: '#/components/schemas/NotificationPolicyJobEdit' Device Migration: '#/components/schemas/DeviceMigrationJobEdit' SMS Tracking: '#/components/schemas/SMSTrackingJobEdit' Call Tracking: '#/components/schemas/CallTrackingJobEdit' Application Settings: '#/components/schemas/AppSettingsJobEdit' Application Permissions: '#/components/schemas/ApplicationPermissionsJobEdit' Remote Wipe: '#/components/schemas/RemoteWipeJobEdit' Text Message: '#/components/schemas/TextMessageJobEdit' Location Tracking: '#/components/schemas/LocationTrackingJobEdit' Geo Fencing: '#/components/schemas/GeoFencingJobEdit' Time Fencing: '#/components/schemas/TimeFencingJobEdit' Network Fencing: '#/components/schemas/NetworkFencingJobEdit' Compliance Policy: '#/components/schemas/CompliancePolicyJobEdit' Nix Agent Settings: '#/components/schemas/NixAgentSettingJobEdit' Agent Upgrade: '#/components/schemas/AgentUpgradeJobEdit' Run script: '#/components/schemas/RunScriptJobEdit' Remote Buzz: '#/components/schemas/RemoteBuzzJobEdit' Security Policy: '#/components/schemas/SecurityPolicyJobEdit' Composite Jobs: '#/components/schemas/CompositeJobEdit' Lock Device: '#/components/schemas/LockDeviceJobEdit' # Modify Profile: '#/components/schemas/CreateProfileJobEdit' Third Party Application Settings: '#/components/schemas/SureLockSettingsJobEdit' Alert Message: '#/components/schemas/AlertMessageJobEdit' Email Configuration: '#/components/schemas/EmailConfigurationJobEdit' Telecom Management Policy: '#/components/schemas/TelecomManagementPolicyJobEdit' Relay Server Configuration: '#/components/schemas/RelayServerConfigurationJobEdit' Device Info Configuration: '#/components/schemas/DeviceInfoConfigurationJobEdit' Lost Mode: '#/components/schemas/EditLostModeJob' required: true responses: '200': description: OK content: application/json: schema: discriminator: mapping: File Transfer Job: '#/components/schemas/EditJobNewResponseModel' Install Job: '#/components/schemas/EditJobNewResponseModel' Others: '#/components/schemas/EditJobNewResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/job' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "JobID": "f38f9258-62ce-4187-b8aa-9914e129f015", "JobName": "test job", "JobType": "File Transfer", "Platform": "android", "PayLoad": [ "eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=" ] }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/job"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/job"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/job" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) delete: tags: - Jobs summary: Delete job description: This api lets you delete a particular job from your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/JobDeleteModel' required: true responses: '200': description: ok content: application/json: schema: $ref: '#/components/schemas/JobDeleteResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/JobDeleteFailedResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' api/v2/job/{JobId}/Size: get: tags: - Jobs summary: Get Job Size description: | This API retrieves the total size of the job identified by the specified JobId. It calculates the sum of the S3 storage and file chunks, allowing for jobs that may have a mixture of subjobs stored in S3 and file chunks when an old job is modified. parameters: - name: JobId in: path required: true description: The unique identifier for the job whose size is being requested. schema: type: string # - name: Size # in: path # required: false # description: Size parameter is part of the route but is not used in the logic. # schema: # type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/JobSizeResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/job/{JobId}/Size' -H 'ApiKey: Your_Api_Key' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | // SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/job/{JobId}/Size"; var client = new RestClient(URL); // Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // Set request method var request = new RestRequest(Method.GET); // Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // SureMDM API URL of your account String URL = "https://yourdomain.com/api/v2/job/{JobId}/Size"; // Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // Basic authentication header .addHeader("Authorization", Credentials.basic("Username", "Password")) // ApiKey header .addHeader("ApiKey", "Your Api-Key") // Set content type .addHeader("Content-Type", "application/json") .build(); // Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # SureMDM API URL of your account url = "https://yourdomain.com/api/v2/job/{JobId}/Size" # Add headers headers = { 'ApiKey': "Your Api-Key", 'Content-Type': "application/json", } # Basic authentication credentials Credentials = ("Username", "Password") # Send request response = requests.get(url, auth=Credentials, headers=headers) print(response.text) api/v2/job/createprofile: post: tags: - Profiles summary: Create Profile description: | This api lets you create profile under your SureMDM account. requestBody: content: application/json: schema: oneOf: # - $ref: '#/components/schemas/FileTransferJob' # - $ref: '#/components/schemas/InstallJob' # - $ref: '#/components/schemas/WiFiConfigJob' # - $ref: '#/components/schemas/NotificationPolicyJob' # - $ref: '#/components/schemas/DeviceMigrationJob' # - $ref: '#/components/schemas/SMSTrackingJob' # - $ref: '#/components/schemas/CallTrackingJob' # - $ref: '#/components/schemas/AppSettingsJob' # - $ref: '#/components/schemas/RemoteWipeJob' # - $ref: '#/components/schemas/TextMessageJob' # - $ref: '#/components/schemas/LocationTrackingJob' # - $ref: '#/components/schemas/GeoFencingJob' # - $ref: '#/components/schemas/TimeFencingJob' # - $ref: '#/components/schemas/NetworkFencingJob' # - $ref: '#/components/schemas/CompliancePolicyJob' # - $ref: '#/components/schemas/NixAgentSettingJob' # - $ref: '#/components/schemas/RunScriptJob' # - $ref: '#/components/schemas/RemoteBuzzJob' # - $ref: '#/components/schemas/SecurityPolicyJob' # - $ref: '#/components/schemas/LockDeviceJob' # - $ref: '#/components/schemas/CompositeJob' # - $ref: '#/components/schemas/DelayJob' - $ref: '#/components/schemas/CreateProfile' # - $ref: '#/components/schemas/SureLockSettingsJob' # - $ref: '#/components/schemas/AlertMessageJob' # - $ref: '#/components/schemas/EmailConfigurationJob' # - $ref: '#/components/schemas/TelecomManagementPolicyJob' # - $ref: '#/components/schemas/RelayServerConfigurationJob' # - $ref: '#/components/schemas/AgentUpgradeJob' # - $ref: '#/components/schemas/DeviceInfoConfigurationJob' # - $ref: '#/components/schemas/ApplicationPermissionsJob' discriminator: mapping: Create Profile: '#/components/schemas/CreateProfile' # File Transfer: '#/components/schemas/FileTransferJob' # Install: '#/components/schemas/InstallJob' # WiFi Configuration: '#/components/schemas/WiFiConfigJob' # Notification Policy: '#/components/schemas/NotificationPolicyJob' # Device Migration: '#/components/schemas/DeviceMigrationJob' # SMS Tracking: '#/components/schemas/SMSTrackingJob' # Call Tracking: '#/components/schemas/CallTrackingJob' # Application Settings: '#/components/schemas/AppSettingsJob' # Application Permissions: '#/components/schemas/ApplicationPermissionsJob' # Remote Wipe: '#/components/schemas/RemoteWipeJob' # Text Message: '#/components/schemas/TextMessageJob' # Location Tracking: '#/components/schemas/LocationTrackingJob' # Geo Fencing: '#/components/schemas/GeoFencingJob' # Time Fencing: '#/components/schemas/TimeFencingJob' # Network Fencing: '#/components/schemas/NetworkFencingJob' # Compliance Policy: '#/components/schemas/CompliancePolicyJob' # Nix Agent Settings: '#/components/schemas/NixAgentSettingJob' # Agent Upgrade: '#/components/schemas/AgentUpgradeJob' # Run script: '#/components/schemas/RunScriptJob' # Remote Buzz: '#/components/schemas/RemoteBuzzJob' # Security Policy: '#/components/schemas/SecurityPolicyJob' # Lock Device: '#/components/schemas/LockDeviceJob' # Composite Job: '#/components/schemas/CompositeJob' # Delay Job: '#/components/schemas/DelayJob' # Third Party Application Settings: '#/components/schemas/SureLockSettingsJob' # Alert Message: '#/components/schemas/AlertMessageJob' # Email Configuration: '#/components/schemas/EmailConfigurationJob' # Telecom Management Policy: '#/components/schemas/TelecomManagementPolicyJob' # Relay Server Configuration: '#/components/schemas/RelayServerConfigurationJob' # Device Info Configuration: '#/components/schemas/DeviceInfoConfigurationJob' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProfileCreationModel' '500': description: OK content: application/json: schema: $ref: '#/components/schemas/ProfileFailedModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/job/createprofile' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{"AppFilterCompare": "2", "AppFilterCompareVersion": "", "AppFilterName": "0", "FolderId": null, "JobName": "test job", "JobType": "File Transfer", "Platform": "android", "PayLoad": ["eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0="] }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/job/createprofile"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/job/createprofile"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/job/createprofile" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) # put: # tags: # - Profiles # summary: Edit job # description: | # This api lets you edit job under your SureMDM account. # requestBody: # content: # application/json: # schema: # discriminator: # mapping: # File Transfer: '#/components/schemas/FileTransferJobEdit' # Install: '#/components/schemas/InstallJobEdit' # WiFi Configuration: '#/components/schemas/WiFiConfigJobEdit' # Notification Policy: '#/components/schemas/NotificationPolicyJobEdit' # Device Migration: '#/components/schemas/DeviceMigrationJobEdit' # SMS Tracking: '#/components/schemas/SMSTrackingJobEdit' # Call Tracking: '#/components/schemas/CallTrackingJobEdit' # Application Settings: '#/components/schemas/AppSettingsJobEdit' # Application Permissions: '#/components/schemas/ApplicationPermissionsJobEdit' # Remote Wipe: '#/components/schemas/RemoteWipeJobEdit' # Text Message: '#/components/schemas/TextMessageJobEdit' # Location Tracking: '#/components/schemas/LocationTrackingJobEdit' # Geo Fencing: '#/components/schemas/GeoFencingJobEdit' # Time Fencing: '#/components/schemas/TimeFencingJobEdit' # Network Fencing: '#/components/schemas/NetworkFencingJobEdit' # Compliance Policy: '#/components/schemas/CompliancePolicyJobEdit' # Nix Agent Settings: '#/components/schemas/NixAgentSettingJobEdit' # Agent Upgrade: '#/components/schemas/AgentUpgradeJobEdit' # Run script: '#/components/schemas/RunScriptJobEdit' # Remote Buzz: '#/components/schemas/RemoteBuzzJobEdit' # Security Policy: '#/components/schemas/SecurityPolicyJobEdit' # Composite Jobs: '#/components/schemas/CompositeJobEdit' # Lock Device: '#/components/schemas/LockDeviceJobEdit' # Modify Profile: '#/components/schemas/CreateProfileJobEdit' # Third Party Application Settings: '#/components/schemas/SureLockSettingsJobEdit' # Alert Message: '#/components/schemas/AlertMessageJobEdit' # Email Configuration: '#/components/schemas/EmailConfigurationJobEdit' # Telecom Management Policy: '#/components/schemas/TelecomManagementPolicyJobEdit' # Relay Server Configuration: '#/components/schemas/RelayServerConfigurationJobEdit' # Device Info Configuration: '#/components/schemas/DeviceInfoConfigurationJobEdit' # required: true # responses: # '200': # description: OK # content: # application/json: # schema: # discriminator: # mapping: # File Transfer Job: '#/components/schemas/FileTransferJobResponse' # Install Job: '#/components/schemas/InstallJobResponse' # Others: '#/components/schemas/OtherJobResponse' # x-code-samples: # - lang: CURL # source: | # curl -X PUT 'https://yourdomain.com/api/v2/job' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "JobID": "f38f9258-62ce-4187-b8aa-9914e129f015", "JobName": "test job", "JobType": "File Transfer", "Platform": "android", "PayLoad": [ "eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=" ] }' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/job"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.POST); # //Request payload # string PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/job"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # //Send payload # .post(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/job" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}" # #Send request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) # delete: # tags: # - Jobs # summary: Delete job # description: This api lets you delete aparticular job from your SureMDM account. # requestBody: # content: # application/json: # schema: # $ref: '#/components/schemas/JobDeleteModel' # required: true # responses: # '200': # description: ok # content: # application/json: # schema: # type: object # properties: # Message: # type: string # description: Message # example: '' # Data: # type: string # description: Data returned # example: '' # Result: # type: boolean # description: Result # example: true 'api/v2/job/EditProfile': put: tags: - Profiles summary: Edit Profiles description: | This api lets you edit profile under your SureMDM account. requestBody: content: application/json: schema: discriminator: mapping: # File Transfer: '#/components/schemas/FileTransferJobEdit' # Install: '#/components/schemas/InstallJobEdit' # WiFi Configuration: '#/components/schemas/WiFiConfigJobEdit' # Notification Policy: '#/components/schemas/NotificationPolicyJobEdit' # Device Migration: '#/components/schemas/DeviceMigrationJobEdit' # SMS Tracking: '#/components/schemas/SMSTrackingJobEdit' # Call Tracking: '#/components/schemas/CallTrackingJobEdit' # Application Settings: '#/components/schemas/AppSettingsJobEdit' # Application Permissions: '#/components/schemas/ApplicationPermissionsJobEdit' # Remote Wipe: '#/components/schemas/RemoteWipeJobEdit' # Text Message: '#/components/schemas/TextMessageJobEdit' # Location Tracking: '#/components/schemas/LocationTrackingJobEdit' # Geo Fencing: '#/components/schemas/GeoFencingJobEdit' # Time Fencing: '#/components/schemas/TimeFencingJobEdit' # Network Fencing: '#/components/schemas/NetworkFencingJobEdit' # Compliance Policy: '#/components/schemas/CompliancePolicyJobEdit' # Nix Agent Settings: '#/components/schemas/NixAgentSettingJobEdit' # Agent Upgrade: '#/components/schemas/AgentUpgradeJobEdit' # Run script: '#/components/schemas/RunScriptJobEdit' # Remote Buzz: '#/components/schemas/RemoteBuzzJobEdit' # Security Policy: '#/components/schemas/SecurityPolicyJobEdit' # Composite Jobs: '#/components/schemas/CompositeJobEdit' # Lock Device: '#/components/schemas/LockDeviceJobEdit' Modify Profile: '#/components/schemas/CreateProfileJobEdit' # Third Party Application Settings: '#/components/schemas/SureLockSettingsJobEdit' # Alert Message: '#/components/schemas/AlertMessageJobEdit' # Email Configuration: '#/components/schemas/EmailConfigurationJobEdit' # Telecom Management Policy: '#/components/schemas/TelecomManagementPolicyJobEdit' # Relay Server Configuration: '#/components/schemas/RelayServerConfigurationJobEdit' # Device Info Configuration: '#/components/schemas/DeviceInfoConfigurationJobEdit' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditJobNewResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/job/EditProfile' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "JobID": "f38f9258-62ce-4187-b8aa-9914e129f015", "JobName": "test job", "JobType": "File Transfer", "Platform": "android", "PayLoad": [ "eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=" ] }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/job/EditProfile"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/job/EditProfile"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/job/EditProfile" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"FolderId\": null, \"JobName\": \"test job\", \"JobType\": \"File Transfer\", \"Platform\": \"android\", \"MinimumVersion\": \"28\", \"VersionCompare\": \"2\", \"PayLoad\": [\"eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0=\" ]}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/profiledetail/List/{platform}/{profileFolderId}: get: operationId: getDetailsOfAllProfile tags: - Profiles summary: Get all profiles description: | This api lets you get all profiles.
Note: For home(default), folder ID is null
To filter profiles, path parameters Limit, Offset, SortColumn and SortOrder are a must. parameters: - name: Platform in: path description: | Platform Type of device
Platform Supported: "Android", "Windows", "iOS", "macOS", "Linux" required: true schema: type: string example: Android - name: Profile Folder ID in: path description: ID of the folder (by default null) required: true schema: type: string # - name: Limit # in: path # description: Number of device # schema: # type: string # example: '20' # - name: Offset # in: path # description: Result offset value # schema: # type: string # example: '0' # - name: SortColumn # in: path # description: Sort column name # schema: # type: string # enum: # - LastModified # - JobName # example: LastModified # - name: SortOrder # in: path # description: | # Sorting order
asc: Ascending order
desc: Descending order # schema: # type: string # example: asc responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetProfileResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/profiledetail/List/{platform}/{profileFolderId}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/profiledetail/List/{platform}/{profileFolderId}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/profiledetail/List/{platform}/{profileFolderId}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/profiledetail/List/{platform}/{profileFolderId}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/profiledetail/{platform}/{jobid}: get: tags: - Profiles summary: Get profile details description: This api lets you get details of a particular profile. parameters: - name: Platform in: path description: | Platform Type of device
Platform Supported: "Android", "Windows", "iOS", "macOS", "Linux" required: true schema: type: string example: Android - name: Job ID in: path description: The ID of the profile required: true schema: type: string example: ed449cd1-10a8-44b4-919c-8e2f9671e83c responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProfileOutputModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/profiledetail/{platform}/{jobid}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/profiledetail/{platform}/{jobid}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/profiledetail/{platform}/{jobid}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/profiledetail/{platform}/{jobid}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/Profile/Search: post: tags: - Profiles summary: Search for existing profiles description: | This API allows you to search for profiles based on platform, search value, and optional filtering criteria. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProfileSearchRequestModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProfileSearchResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST "https://yourdomain.com/api/v2/Profile/Search" \ -H "Content-Type: application/json" \ -H "ApiKey: Your-Api-Key" \ -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" \ -d '{ "Platform": "ANDROID", "SearchValue": "c2VjdA==", "Limit": 10, "Offset": 0, "SortColumn": "LastModified", "SortOrder": "desc" }' - lang: C# source: | using RestSharp; using System; class Program { static void Main() { var client = new RestClient("https://yourdomain.com/api/v2/Profile/Search"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("ApiKey", "Your-Api-Key"); request.AddHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="); request.AddJsonBody(new { Platform = "ANDROID", SearchValue = "c2VjdA==", Limit = 10, Offset = 0, SortColumn = "LastModified", SortOrder = "desc" }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); } } - lang: JAVA source: | import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = "{" + "\"Platform\":\"ANDROID\"," + "\"SearchValue\":\"c2VjdA==\"," + "\"Limit\":10," + "\"Offset\":0," + "\"SortColumn\":\"LastModified\"," + "\"SortOrder\":\"desc\"" + "}"; RequestBody body = RequestBody.create( json, MediaType.parse("application/json")); Request request = new Request.Builder() .url("https://yourdomain.com/api/v2/Profile/Search") .post(body) .addHeader("ApiKey", "Your-Api-Key") .addHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); } } - lang: Python source: | import requests from requests.auth import HTTPBasicAuth url = "https://yourdomain.com/api/v2/Profile/Search" headers = { "ApiKey": "Your-Api-Key", "Content-Type": "application/json" } payload = { "Platform": "ANDROID", "SearchValue": "c2VjdA==", "Limit": 10, "Offset": 0, "SortColumn": "LastModified", "SortOrder": "desc" } response = requests.post(url, json=payload, headers=headers, auth=HTTPBasicAuth("Username", "Password")) print(response.text) api/v2/Profile/assignProfileToGroup: post: tags: - Profiles summary: Assign Profile to Group description: This API assigns a selected profile to one or more groups. requestBody: content: application/json: schema: $ref: '#/components/schemas/AssignProfileToGroupRequestModel' description: Payload containing group IDs and profile details. required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AssignProfileToGroupResponseModel' x-code-samples: - lang: CURL source: | curl -X POST "https://yourdomain.com/api/v2/Profile/assignProfileToGroup" \ -H "ApiKey: Your-Api-Key" \ -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" \ -H "Content-Type: application/json" \ -d '{ "SelectedGroups": ["a399fc28-219e-4913-b106-f335ab8a8e1b"], "ProfileId": "e9f92a55-04d6-40cc-8993-a5fabe70292d", "ProfileName": "ss" }' - lang: C# source: | using RestSharp; using System; class Program { static void Main() { string URL = "https://yourdomain.com/api/v2/Profile/assignProfileToGroup"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your-Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.POST); string PayLoad = "{ \"SelectedGroups\": [\"a399fc28-219e-4913-b106-f335ab8a8e1b\"], \"ProfileId\": \"e9f92a55-04d6-40cc-8993-a5fabe70292d\", \"ProfileName\": \"ss\" }"; request.AddParameter("application/json", PayLoad, ParameterType.RequestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); } } - lang: JAVA source: | import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { String URL = "https://yourdomain.com/api/v2/Profile/assignProfileToGroup"; OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"SelectedGroups\": [\"a399fc28-219e-4913-b106-f335ab8a8e1b\"], \"ProfileId\": \"e9f92a55-04d6-40cc-8993-a5fabe70292d\", \"ProfileName\": \"ss\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); Request request = new Request.Builder() .url(URL) .post(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your-Api-Key") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); } } - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/Profile/assignProfileToGroup" headers = { "ApiKey": "Your-Api-Key", "Content-Type": "application/json" } auth = ("Username", "Password") payload = { "SelectedGroups": ["a399fc28-219e-4913-b106-f335ab8a8e1b"], "ProfileId": "e9f92a55-04d6-40cc-8993-a5fabe70292d", "ProfileName": "ss" } response = requests.post(url, json=payload, headers=headers, auth=auth) print(response.text) api/v2/job/Search: post: tags: - Jobs summary: Search for existing jobs description: | This API allows you to search for jobs based on platform, search value, and optional filtering criteria. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/JobSearchRequestModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/JobSearchResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST "https://yourdomain.com/api/v2/job/Search" \ -H "Content-Type: application/json" \ -H "ApiKey: Your-Api-Key" \ -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" \ -d '{ "Platform": "Android", "SearchValue": "dGVzdA==", "Limit": 20, "Offset": 0, "SortColumn": "LastModified", "SortOrder": "desc" }' - lang: C# source: | using RestSharp; using System; class Program { static void Main() { var client = new RestClient("https://yourdomain.com/api/v2/job/Search"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/json"); request.AddHeader("ApiKey", "Your-Api-Key"); request.AddHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="); request.AddJsonBody(new { Platform = "Android", SearchValue = "dGVzdA==", Limit = 20, Offset = 0, SortColumn = "LastModified", SortOrder = "desc" }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); } } - lang: JAVA source: | import okhttp3.*; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); String json = "{" + "\"Platform\":\"Android\"," + "\"SearchValue\":\"dGVzdA==\"," + "\"Limit\":20," + "\"Offset\":0," + "\"SortColumn\":\"LastModified\"," + "\"SortOrder\":\"desc\"" + "}"; RequestBody body = RequestBody.create( json, MediaType.parse("application/json")); Request request = new Request.Builder() .url("https://yourdomain.com/api/v2/job/Search") .post(body) .addHeader("ApiKey", "Your-Api-Key") .addHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); } } - lang: Python source: | import requests from requests.auth import HTTPBasicAuth url = "https://yourdomain.com/api/v2/job/Search" headers = { "ApiKey": "Your-Api-Key", "Content-Type": "application/json" } payload = { "Platform": "Android", "SearchValue": "dGVzdA==", "Limit": 20, "Offset": 0, "SortColumn": "LastModified", "SortOrder": "desc" } response = requests.post(url, json=payload, headers=headers, auth=HTTPBasicAuth("Username", "Password")) print(response.text) api/v2/upload/uploadfile: post: tags: - Jobs summary: Upload files description: | This api lets you upload files which will be used by `FileTransferJob`/`InstallJob`. requestBody: content: application/json: schema: $ref: '#/components/schemas/UploadFileModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UploadResponseModel' '413': description: OK content: application/json: schema: $ref: '#/components/schemas/ExceedSizeLimitResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/upload/uploadfile' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "JobID": "62da7a4f-b17b-46e7-8571-60eec7b8561f", "SubJobID": "ec9c3482-b6dc-42a4-b2da-592693f5835f", "FileName": "test.apk", "FileSize": 1533360 }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/upload/uploadfile"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"JobID\": \"62da7a4f-b17b-46e7-8571-60eec7b8561f\", \"SubJobID\": \"ec9c3482-b6dc-42a4-b2da-592693f5835f\", \"FileName\": \"test.apk\", \"FileSize\": 1533360 }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/upload/uploadfile"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"JobID\": \"62da7a4f-b17b-46e7-8571-60eec7b8561f\", \"SubJobID\": \"ec9c3482-b6dc-42a4-b2da-592693f5835f\", \"FileName\": \"test.apk\", \"FileSize\": 1533360 }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/upload/uploadfile" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"JobID\": \"62da7a4f-b17b-46e7-8571-60eec7b8561f\", \"SubJobID\": \"ec9c3482-b6dc-42a4-b2da-592693f5835f\", \"FileName\": \"test.apk\", \"FileSize\": 1533360 }" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/job/CreateInstallJob: post: tags: - Jobs summary: Create File Transfer / Install Job description: | This API creates a **File Transfer** or **Install Job** . It allows uploading one or more files (such as APKs or compressed archives) and pushing them to the device. Based on the selected JobType, files can either be transferred only or transferred and installed. requestBody: required: true content: multipart/form-data: schema: type: object required: - JobName - JobType - Platform - files properties: JobName: type: string description: Name of the job example: Sample install job JobType: type: string enum: [Install, File Transfer] description: | JobType (Mandatory). Possible values: - `"Install"`: Transfer and install APK files - `"File Transfer"`: Only transfer files without installation example: Install Platform: type: string enum: [Android] description: | Name of platform
Platform Supported: "android", "androidwear", "windows_ce",
"windows_mobile", "windows" example: Android files: type: array description: List of files to be uploaded items: type: string format: binary FolderId: type: string description: Optional folder ID to categorize the job DevicePath: type: string description: Optional path on device where files will be copied example: \sdcard\ Install: type: boolean description: Optional flag to trigger installation after file transfer default: false responses: '200': description: Success content: application/json: schema: type: object properties: message: type: string example: Success data: type: string format: uuid description: Unique job ID example : "2751ab8a-b3e1-4dcb-bf15-44ef4f86323b" Status: type: boolean example: true '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST "https://yourdomain.com/api/v2/job/CreateInstallJob" \ -H "ApiKey: Your-Api-Key" \ -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" \ -H "Content-Type: multipart/form-data" \ -F "files=@C:/path/to/app.apk" \ -F "files=@C:/path/to/resource.tar.gz" \ -F "JobName=Sample install job" \ -F "JobType=Install" \ -F "Platform=Android" \ -F "DevicePath=" \ -F "Install=True" - lang: C# source: | using RestSharp; using System; class Program { static void Main() { string URL = "https://yourdomain.com/api/v2/job/CreateInstallJob"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your-Api-Key"); var request = new RestRequest(Method.POST); request.AlwaysMultipartFormData = true; request.AddFile("files", @"C:\path\to\app.apk"); request.AddFile("files", @"C:\path\to\resource.tar.gz"); request.AddParameter("JobName", "Sample install job"); request.AddParameter("JobType", "Install"); request.AddParameter("Platform", "Android"); request.AddParameter("DevicePath", ""); request.AddParameter("Install", "True"); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); } } - lang: JAVA source: | import okhttp3.*; import java.io.File; public class Main { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/octet-stream"); MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM) .addFormDataPart("JobName", "Sample install job") .addFormDataPart("JobType", "Install") .addFormDataPart("Platform", "Android") .addFormDataPart("DevicePath", "") .addFormDataPart("Install", "True") .addFormDataPart("files", "app.apk", RequestBody.create(new File("C:/path/to/app.apk"), mediaType)) .addFormDataPart("files", "resource.tar.gz", RequestBody.create(new File("C:/path/to/resource.tar.gz"), mediaType)); RequestBody body = builder.build(); Request request = new Request.Builder() .url("https://yourdomain.com/api/v2/job/CreateInstallJob") .post(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your-Api-Key") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); } } - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/job/CreateInstallJob" headers = { "ApiKey": "Your-Api-Key" } auth = ("Username", "Password") files = [ ('files', open('C:/path/to/app.apk','rb')), ('files', open('C:/path/to/resource.tar.gz','rb')) ] data = { 'JobName': 'Sample install job', 'JobType': 'Install', 'Platform': 'Android', 'DevicePath': '', 'Install': 'True' } response = requests.post(url, headers=headers, auth=auth, files=files, data=data) print(response.text) # ' api/v2/job' : # post: # tags: # - Jobs # summary: Create jobs # operationId: createJobTypeA # description: This api lets you create job.
Jobs are actions which can be performed on the devices. # requestBody: # content: # application/json: # schema: # oneOf: # - $ref: '#/components/schemas/FileTransferJob' # - $ref: '#/components/schemas/InstallJob' # - $ref: '#/components/schemas/WiFiConfigJob' # - $ref: '#/components/schemas/NotificationPolicyJob' # - $ref: '#/components/schemas/DeviceMigrationJob' # - $ref: '#/components/schemas/SMSTrackingJob' # - $ref: '#/components/schemas/CallTrackingJob' # - $ref: '#/components/schemas/AppSettingsJob' # - $ref: '#/components/schemas/RemoteWipeJob' # - $ref: '#/components/schemas/TextMessageJob' # - $ref: '#/components/schemas/LocationTrackingJob' # - $ref: '#/components/schemas/GeoFencingJob' # - $ref: '#/components/schemas/TimeFencingJob' # - $ref: '#/components/schemas/NetworkFencingJob' # - $ref: '#/components/schemas/CompliancePolicyJob' # - $ref: '#/components/schemas/NixAgentSettingJob' # - $ref: '#/components/schemas/RemoteBuzzJob' # description: List of Jobs # required: true # responses: # '200': # description: OK # content: # application/json: # schema: # $ref: '#/components/schemas/JobResponseModel' # x-code-samples: # - lang: C# # source: | # // ... API URL # string URL = "https://yourdomain.com/api/v2/job/"; # var client = new RestClient(URL); # // ... Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # // ... ApiKey Header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # // ... Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # // ... Set request method # var request = new RestRequest(Method.POST); # // ... Request payload # string PayLoad = "{ \"JobName\": \"Notify\", \"JobType\": \"File Transfer\", \"JobID\": \"2ADGJNJ68JKMBB1\", \"Platform\": \"Android\", \"FolderId\": 2, \"VersionCompare\": \"\", \"MinimumVersion\": 2, \"PayLoad\": [ \"eyJTdWJqZWN0IjoiZmNoYmciLCJCb2R5IjoidGh0ZnkiLCJSZWFkTm90aWZpY2F0aW9uIjp0cnVlLCJGb3JjZVJlYWQiOmZhbHNlLCJSaWNoVGV4dEJvZHkiOiIiLCJSaWNoVGV4dEh0bWwiOiIifQ==\" ], \"DeleteFileAfterDeployment\": \"false\", \"AppFilterName\": \"\", \"AppFilterCompare\": \"\", \"AppFilterCompareVersion\": \"\"}"; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # // ... Executing Request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # // ... API URL # String URL="https://yourdomain.com/api/v2/job/"; # // ... create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = "{ \"JobName\": \"Notify\", \"JobType\": \"File Transfer\", \"JobID\": \"2ADGJNJ68JKMBB1\", \"Platform\": \"Android\", \"FolderId\": 2, \"VersionCompare\": \"\", \"MinimumVersion\": 2, \"PayLoad\": [ \"eyJTdWJqZWN0IjoiZmNoYmciLCJCb2R5IjoidGh0ZnkiLCJSZWFkTm90aWZpY2F0aW9uIjp0cnVlLCJGb3JjZVJlYWQiOmZhbHNlLCJSaWNoVGV4dEJvZHkiOiIiLCJSaWNoVGV4dEh0bWwiOiIifQ==\" ], \"DeleteFileAfterDeployment\": \"false\", \"AppFilterName\": \"\", \"AppFilterCompare\": \"\", \"AppFilterCompareVersion\": \"\"}"; # RequestBody body = RequestBody.create(mediaType, PayLoad); # // ... Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # // ... Send payload # .post(body) # // ... Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # // ... ApiKey Header # .addHeader("ApiKey", "Your Api-Key") # // ... Set content type # .addHeader("Content-Type", "application/json") # .build(); # // ... Execute request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # # ... Api url # url = "https://yourdomain.com/api/v2/job/" # # ... Add headers # headers = { # # ... Api-Key header # 'ApiKey': "Your Api-Key", # # ... Set Content type # 'Content-Type': "application/json", # } # # ... Basic authentication credentials # Credentials=("Username","Password") # # ... Payload # payload = "{ \"JobName\": \"Notify\", \"JobType\": \"File Transfer\", \"JobID\": \"2ADGJNJ68JKMBB1\", \"Platform\": \"Android\", \"FolderId\": 2, \"VersionCompare\": \"\", \"MinimumVersion\": 2, \"PayLoad\": [ \"eyJTdWJqZWN0IjoiZmNoYmciLCJCb2R5IjoidGh0ZnkiLCJSZWFkTm90aWZpY2F0aW9uIjp0cnVlLCJGb3JjZVJlYWQiOmZhbHNlLCJSaWNoVGV4dEJvZHkiOiIiLCJSaWNoVGV4dEh0bWwiOiIifQ==\" ], \"DeleteFileAfterDeployment\": \"false\", \"AppFilterName\": \"\", \"AppFilterCompare\": \"\", \"AppFilterCompareVersion\": \"\"}" # # ... Executing request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) # 'api/v2/JobQueue/JobQueueDetails/{DeviceId}/{Limit}': # get: # tags: # - Job Queue # summary: Get job queue of device # description: | # This api lets you retrieve device job queue information. # parameters: # - name: DeviceId # required: true # schema: # type: string # description: ID of the device # in: path # - name: Limit # required: true # schema: # type: string # description: Results limit # in: path # responses: # '200': # description: OK # content: # application/json: # schema: # $ref: '#/components/schemas/JobQueueResponseModel' # x-code-samples: # - lang: C# # source: | # // ... API URL # string URL = "https://yourdomain.com/api/v2/JobQueue/JobQueueDetails/{DeviceId}/{Limit}"; # var client = new RestClient(URL); # // ... Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # // ... ApiKey Header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # // ... Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # // ... Set request method # var request = new RestRequest(Method.GET); # // ... Executing Request # IRestResponse response = client.Execute(request); # // ... Read response # Console.WriteLine(response.Content); # - lang: JAVA # source: | # // ... API URL # String URL="https://yourdomain.com/api/v2/JobQueue/JobQueueDetails/{DeviceId}/{Limit}"; # // ... Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # .get() # // ... Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # // ... ApiKey Header # .addHeader("ApiKey", "Your ApiKey") # // ... Set content type # .addHeader("Content-Type", "application/json") # .build(); # // ... Execute request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # # ... Api url # url = "https://yourdomain.com/api/v2/JobQueue/JobQueueDetails/{DeviceId}/{Limit}" # # ... Add headers # headers = { # # ... Api-Key header # 'ApiKey': "Your Api-Key", # # ... Set Content type # 'Content-Type': "application/json", # } # # ... Basic authentication credentials # Credentials=("Username","Password") # # ... Executing request # response = requests.get(url,auth=Credentials,headers=headers) # print(response.text) api/v2/dynamicjob: post: tags: - Device summary: 'Apply dynamic job on device ' description: | This api lets you apply dynamic jobs on the device.

Dynamic jobs are quick actions in SureMDM that can be applied on the devices. Like, Locking device, Rebooting device, Changing device pin etc.
requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/LockDevice' - $ref: '#/components/schemas/RebootDevice' - $ref: '#/components/schemas/RefreshDevice' - $ref: '#/components/schemas/TextMessage' - $ref: '#/components/schemas/GetDeviceApps' - $ref: '#/components/schemas/Wipe' - $ref: '#/components/schemas/Buzz' - $ref: '#/components/schemas/ChangePin' - $ref: '#/components/schemas/CallTracking' - $ref: '#/components/schemas/SMSTracking' - $ref: '#/components/schemas/ChangeDeviceName' - $ref: '#/components/schemas/SetBluetoothName' - $ref: '#/components/schemas/SetDeviceNotes' - $ref: '#/components/schemas/LocationTracking' - $ref: '#/components/schemas/GeoFence' - $ref: '#/components/schemas/TimeFence' - $ref: '#/components/schemas/NetworkFence' - $ref: '#/components/schemas/UninstallApplication' - $ref: '#/components/schemas/ClearAppData' - $ref: '#/components/schemas/LostMode' discriminator: mapping: Lock Device: '#/components/schemas/LockDevice' Reboot Device: '#/components/schemas/RebootDevice' Refresh Device: '#/components/schemas/RefreshDevice' Get Device Apps: '#/components/schemas/GetDeviceApps' Wipe: '#/components/schemas/Wipe' Buzz: '#/components/schemas/Buzz' Change Pin: '#/components/schemas/ChangePin' Call Tracking: '#/components/schemas/CallTracking' SMS Tracking: '#/components/schemas/SMSTracking' Change Device Name: '#/components/schemas/ChangeDeviceName' Set Bluetooth Name: '#/components/schemas/SetBluetoothName' Set Device Notes: '#/components/schemas/SetDeviceNotes' Location Tracking: '#/components/schemas/LocationTracking' Geo Fence: '#/components/schemas/GeoFence' Time Fence: '#/components/schemas/TimeFence' Network Fence: '#/components/schemas/NetworkFence' Uninstall Application: '#/components/schemas/UninstallApplication' Clear AppData: '#/components/schemas/ClearAppData' Lost Mode: '#/components/schemas/LostMode' description: Dynamic jobs required: true responses: '200': description: OK content: application/json: schema: oneOf: - $ref: '#/components/schemas/Call_Tracking' - $ref: '#/components/schemas/SMS_Tracking' - $ref: '#/components/schemas/Change_Device_Name' - $ref: '#/components/schemas/Set_Bluetooth_Name' - $ref: '#/components/schemas/Others' '403': description: Forbidden content: application/json: schema: type: string example: Access denied description: User does not have permission for this action x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/dynamicjob' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceID": "1111111111111111111", "JobType": "Lock" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/dynamicjob"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"DeviceID\": \"1111111111111111111\", \"JobType\": \"REMOTE_BUZZ\", \"PayLoad\": \"{\\\"Interval\\\":\\\"3\\\"} \"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/dynamicjob"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"DeviceID\": \"1111111111111111111\", \"JobType\": \"REMOTE_BUZZ\", \"PayLoad\": \"{\\\"Interval\\\":\\\"3\\\"} \"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/dynamicjob" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"DeviceID\": \"1111111111111111111\", \"JobType\": \"REMOTE_BUZZ\", \"PayLoad\": \"{\\\"Interval\\\":\\\"3\\\"} \"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/jobassignment: post: tags: - Device summary: Apply job on device description: | This api lets you apply job on the device(s). In SureMDM jobs are actions or set of rules that can be applied to the device.
Jobs can be applied Immediately or can be scheduled. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/Immediate' - $ref: '#/components/schemas/Periodically' - $ref: '#/components/schemas/Days_Time' - $ref: '#/components/schemas/Date_Time' discriminator: mapping: Immediately: '#/components/schemas/Immediate' Periodically: '#/components/schemas/Periodically' Schedule Days And Time: '#/components/schemas/Days_Time' Schedule Date And Time: '#/components/schemas/Date_Time' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/ApplyJobResponseModel' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/FailedApplyJobResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/jobassignment' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceIds": ["1111111111111111111"], "JobId": "eaa76725-ff02-4c45-8fca-4f6145d65d3f", "DownloadType": 0 }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobassignment"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"DeviceIds\": [ \"dd82dba7-6773-439b-91de-b5139411c2ae\" ], \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobassignment"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"DeviceIds\": [ \"dd82dba7-6773-439b-91de-b5139411c2ae\" ], \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobassignment" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"DeviceIds\": [ \"dd82dba7-6773-439b-91de-b5139411c2ae\" ], \"JobId\": \"83c7277e-f471-43ef-99cd-3c48bb6969de\", \"RecursiveScheduleTime\": \"{\\\"Time\\\":\\\"10:41\\\",\\\"Days\\\":[\\\"0\\\",\\\"5\\\",\\\"6\\\"],\\\"GMTTimeInterval\\\":-330}\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) # 'api/v2/blacklistdevice/{deviceIds}': # delete: # tags: # - Device # summary: Delete blacklisted device # description: | # This api lets you delete blacklisted device(s) from the list of your SureMDM account. # parameters: # - name: Deviceids # in: path # description: | # Array of device ID(s) to be deleted.

# For example,
/BlacklistDevice/["51d9e5e2-25ea-4bd8-8f53-7360908d6288"] # required: true # schema: # type: array # items: # type: string # responses: # '200': # description: OK # content: # application/json: # schema: # $ref: '#/components/schemas/BlacklistDeleteSuccessResponseModel' # # '400': # # description: Bad Request # # content: # # application/json: # # schema: # # $ref: '#/components/schemas/BlacklistDeleteFailureResponseModel' # x-code-samples: # - lang: CURL # source: | # curl -X DELETE 'https://yourdomain.com/api/v2/blacklistdevice/[%2251d9e5e2-25ea-4bd8-8f53-7360908d6288%22]' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/blacklistdevice/{deviceIds}"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.DELETE); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/blacklistdevice/{deviceIds}"; # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # .delete() # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/blacklistdevice/{deviceIds}" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Send request # response = requests.delete(url,auth=Credentials,headers=headers) # print(response.text) 'api/v2/blacklistdevice/DeviceIDs/inBulk': post: tags: - Device summary: Delete blacklisted devices in bulk description: | This API allows you to delete one or more blacklisted devices from your SureMDM account.
You can pass a single device ID or an array of multiple device IDs to remove them from the blacklist. requestBody: description: List of device IDs to be deleted required: true content: application/json: schema: type: array items: type: string example: ["51d9e5e2-25ea-4bd8-8f53-7360908d6288", "af7c2a56-bf1e-4876-b17f-52e61af70912"] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BlacklistDeleteSuccessResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/blacklistdevice/inBulk' \ -H 'ApiKey: 11111111111111111111' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '["51d9e5e2-25ea-4bd8-8f53-7360908d6288", "af7c2a56-bf1e-4876-b17f-52e61af70912"]' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/blacklistdevice/inBulk"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Send request request.AddJsonBody(new List { "51d9e5e2-25ea-4bd8-8f53-7360908d6288", "af7c2a56-bf1e-4876-b17f-52e61af70912" }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/blacklistdevice/inBulk"; //Create request OkHttpClient client = new OkHttpClient(); RequestBody body = RequestBody.create( MediaType.parse("application/json"), "[\"51d9e5e2-25ea-4bd8-8f53-7360908d6288\", \"af7c2a56-bf1e-4876-b17f-52e61af70912\"]" ); Request request = new Request.Builder() .url(URL) .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/blacklistdevice/inBulk" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.post(url,auth=Credentials,headers=headers,json=["51d9e5e2-25ea-4bd8-8f53-7360908d6288", "af7c2a56-bf1e-4876-b17f-52e61af70912"]) print(response.text) api/v2/dynamicjobqueue: post: tags: - Device summary: Dynamic job queue status of device description: This api lets you retrieve dynamic job queue information of the particular device(s). requestBody: content: application/json: schema: $ref: '#/components/schemas/DynamicJobQueueDevice' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DynamicJobQueueResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/dynamicjobqueue' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "PayLoad": "[\"3167f5e3-4ac5-41c1-823c-714374edbdb4\"]" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/dynamicjobqueue"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{\"PayLoad\": \"[\\\"4b6aa13a-c377-4b1d-bae0-cc01f6d5dd70\\\",\\\"dd82dba7-6773-439b-91de-b5139411c2ae\\\"]\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/dynamicjobqueue"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{\"PayLoad\": \"[\\\"4b6aa13a-c377-4b1d-bae0-cc01f6d5dd70\\\",\\\"dd82dba7-6773-439b-91de-b5139411c2ae\\\"]\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/dynamicjobqueue" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{\"PayLoad\": \"[\\\"4b6aa13a-c377-4b1d-bae0-cc01f6d5dd70\\\",\\\"dd82dba7-6773-439b-91de-b5139411c2ae\\\"]\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/jobqueue/ReApply: put: tags: - Device summary: Re-apply job description: This api lets you re-apply job on the device from the job queue of that particular device. requestBody: content: application/json: schema: $ref: '#/components/schemas/ReapplyJobModel' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReapplyJobResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/jobqueue/ReApply' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceId": "22c245da-df91-4bd2-9ee9-75a9ccf61142", "JobID": "4DCB6E38-075C-4D55-9C3E-3D116EE04160", "RowId": "bba3d489-4503-41ff-a890-228a6250d72e", "Status": "Error" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobqueue/ReApply"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{ \"DeviceId\": \"22c245da-df91-4bd2-9ee9-75a9ccf61142\", \"JobID\": \"4DCB6E38-075C-4D55-9C3E-3D116EE04160\", \"RowId\": \"bba3d489-4503-41ff-a890-228a6250d72e\", \"Status\": \"Error\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobqueue/ReApply"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"DeviceId\": \"22c245da-df91-4bd2-9ee9-75a9ccf61142\", \"JobID\": \"4DCB6E38-075C-4D55-9C3E-3D116EE04160\", \"RowId\": \"bba3d489-4503-41ff-a890-228a6250d72e\", \"Status\": \"Error\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobqueue/ReApply" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"DeviceId\": \"22c245da-df91-4bd2-9ee9-75a9ccf61142\", \"JobID\": \"4DCB6E38-075C-4D55-9C3E-3D116EE04160\", \"RowId\": \"bba3d489-4503-41ff-a890-228a6250d72e\", \"Status\": \"Error\" }" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/jobqueue/Devices/{DeviceID}/{ShowAll}': get: operationId: jobQueueStatusOfDevice tags: - Device summary: Job queue status of device by ID description: This api lets you retrieve Job queue information of the particular device. parameters: - name: DeviceID in: path description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). required: true schema: type: string - name: ShowAll in: path description: | Whether to show all jobs in queue or only pending jobs.
trueGet all jobs
falseGet only pending jobs
required: true schema: type: boolean responses: '200': description: OK content: application/json: schema: type: array items: type: object properties: JobID: type: string description: ID of the job.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: ffea8e48-c1df-4548-94f4-e02cdd1e224b JobName: type: string description: Name of the job example: test Time: type: string description: Date and time when job was applied example: '4/4/2019 7:16:59 AM' Size: type: string description: Size of job(in kb) example: '111534' Type: type: string description: Type of the job example: File Transfer Status: type: string description: | Job status
enum: - DEPLOYED - SCHEDULED - PENDING example: SCHEDULED RowId: type: string description: ID of the job in device job queue
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: DCFBBBEE-C043-426F-ACCF-212925BFD4BD Success: type: string description: Whether job is successfully applied example: '1' JobComments: type: string description: Details of job example: | [4/2/2019 11:17:12 AM (UTC)] Job pending to be applied NetworkType: type: string description: Type of network used for applying job
ValueDescription
0WiFi network
1Mobile network
2Any network
example: '2' DeviceIdJobQueue: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 on which job is/was applied example: 8a14faf3-a26b-4ffb-aa52-f60c792d452b x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/jobqueue/Devices/{DeviceID}/{ShowAll}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/jobqueue/Devices/{DeviceID}/{ShowAll}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/jobqueue/Devices/{DeviceID}/{ShowAll}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/jobqueue/Devices/{DeviceID}/{ShowAll}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/preapproveddevice/GetDeviceList: post: tags: - Device summary: Get pre-approved devices description: | This api lets you retrieve details of pre-approved device(s) from your SureMDM account.
Pre-approved device does not require approval of the admin when enrolled into the SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/GetPreapprovedDevicePayLoad' description: Filter parameters required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PreapprovedDeviceResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/preapproveddevice/getdevicelist' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "Limit": 20, "Offset": 0, "IsSearch": true, "SearchValue": "", "SortOrder": "asc", "SortColumn": "DeviceName" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/preapproveddevice/getdevicelist"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"Limit\": 20, \"Offset\": 0, \"IsSearch\": true, \"SearchValue\": \"\", \"SortOrder\": \"asc\", \"SortColumn\": \"DeviceName\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/preapproveddevice/getdevicelist"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"Limit\": 20, \"Offset\": 0, \"IsSearch\": true, \"SearchValue\": \"\", \"SortOrder\": \"asc\", \"SortColumn\": \"DeviceName\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/preapproveddevice/getdevicelist" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"Limit\": 20, \"Offset\": 0, \"IsSearch\": true, \"SearchValue\": \"\", \"SortOrder\": \"asc\", \"SortColumn\": \"DeviceName\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/devicegrid: post: operationId: getDeviceDetails tags: - Device summary: Get device details description: | This api lets you retrieve details of device(s) and provides additional search and filter functionality along with it. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/GetAllDevices' - $ref: '#/components/schemas/GetHomeGroupDevices' - $ref: '#/components/schemas/GetDevicesOfParticularGroup' - $ref: '#/components/schemas/SearchDevice' - $ref: '#/components/schemas/AdvSearchDevice' discriminator: mapping: Get all devices : '#/components/schemas/GetAllDevices' Get devices in Home group : '#/components/schemas/GetHomeGroupDevices' Get devices of particular group : '#/components/schemas/GetDevicesOfParticularGroup' Search devices : '#/components/schemas/SearchDevice' Advance Search devices : '#/components/schemas/AdvSearchDevice' description: > Sample scripts for Advance Search Devices
Click to expand Advance Search sample scripts
Language Sample Script
CURL
                      curl -X POST "https://yourdomain.com/api/v2/devicegrid" \
                      -H "Content-Type: application/json" \
                      -H "Authorization: Basic " \
                      -H "ApiKey: Your Api-Key" \
                      -d '{
                        "AdanceSearch": true,
                        "AdvSearchJobID": "",
                        "AdvSearchValue": ["android"],
                        "SearchColumns": ["DeviceModelName"],
                        "EnableDeviceGlobalSearch": false,
                        "ID": null,
                        "IsTag": false,
                        "Limit": 1000,
                        "Offset": 0,
                        "SearchValue": "",
                        "SortColumn": "ConnectionStatus",
                        "SortOrder": "desc",
                        "Source": "External",
                        "ApplicationList": [
                          "com.google.android.apps.subscriptions.red",
                          "com.google.android.googlequicksearchbox"
                        ],
                        "SearchPayload": [],
                        "SubgroupDevicesEnable": false,
                        "IsIncludedBlackListed": false,
                        "NameSearchOption": "0",
                        "ModelSearchOption": "0",
                        "DataUsageSearchOption": "",
                        "Columns": [
                          "DeviceName", "DeviceModelName", "ConnectionStatus", "LastTimeStamp", "AgentVersion",
                          "Battery", "BatteryHealth", "KnoxStatus", "ReleaseVersion", "DeviceRegistered",
                          "Temperature", "NixPollingType", "PhoneNumber", "DeviceUserName", "BSSID",
                          "OsBuildNumber", "AfwProfile", "DeviceGroupPath", "BasicIntegrity",
                          "EfotaRegistrationStatus", "DeviceID", "Hostname", "MacAddress", "DeviceManufacture",
                          "AADDeviceId", "AADEnrollmentStatus", "ManagementType"
                        ]
                      }'
                    
C#
                      var client = new HttpClient();
                      var request = new HttpRequestMessage(HttpMethod.Post, "https://yourdomain.com/api/v2/devicegrid");
                      var payload = new {
                        AdanceSearch = true,
                        AdvSearchJobID = "",
                        AdvSearchValue = new[] { "android" },
                        SearchColumns = new[] { "DeviceModelName" },
                        EnableDeviceGlobalSearch = false,
                        ID = (string)null,
                        IsTag = false,
                        Limit = 1000,
                        Offset = 0,
                        SearchValue = "",
                        SortColumn = "ConnectionStatus",
                        SortOrder = "desc",
                        Source = "External",
                        ApplicationList = new[] {
                          "com.google.android.apps.subscriptions.red",
                          "com.google.android.googlequicksearchbox"
                        },
                        SearchPayload = new object[] {},
                        SubgroupDevicesEnable = false,
                        IsIncludedBlackListed = false,
                        NameSearchOption = "0",
                        ModelSearchOption = "0",
                        DataUsageSearchOption = "",
                        Columns = new[] {
                          "DeviceName", "DeviceModelName", "ConnectionStatus", "LastTimeStamp", "AgentVersion",
                          "Battery", "BatteryHealth", "KnoxStatus", "ReleaseVersion", "DeviceRegistered",
                          "Temperature", "NixPollingType", "PhoneNumber", "DeviceUserName", "BSSID",
                          "OsBuildNumber", "AfwProfile", "DeviceGroupPath", "BasicIntegrity",
                          "EfotaRegistrationStatus", "DeviceID", "Hostname", "MacAddress", "DeviceManufacture",
                          "AADDeviceId", "AADEnrollmentStatus", "ManagementType"
                        }
                      };
                      request.Content = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");
                      request.Headers.Add("ApiKey", "Your Api-Key");
                      request.Headers.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("Username:Password")));
                      var response = await client.SendAsync(request);
                      Console.WriteLine("Response Code: " + (int)response.StatusCode);
                      var responseBody = await response.Content.ReadAsStringAsync();
                      Console.WriteLine("Response Body: " + responseBody);
                    
Java
                      HttpClient client = HttpClient.newHttpClient();
                      String json = """
                      {
                        "AdanceSearch": true,
                        "AdvSearchJobID": "",
                        "AdvSearchValue": ["android"],
                        "SearchColumns": ["DeviceModelName"],
                        "EnableDeviceGlobalSearch": false,
                        "ID": null,
                        "IsTag": false,
                        "Limit": 1000,
                        "Offset": 0,
                        "SearchValue": "",
                        "SortColumn": "ConnectionStatus",
                        "SortOrder": "desc",
                        "Source": "External",
                        "ApplicationList": [
                          "com.google.android.apps.subscriptions.red",
                          "com.google.android.googlequicksearchbox"
                        ],
                        "SearchPayload": [],
                        "SubgroupDevicesEnable": false,
                        "IsIncludedBlackListed": false,
                        "NameSearchOption": "0",
                        "ModelSearchOption": "0",
                        "DataUsageSearchOption": "",
                        "Columns": [
                          "DeviceName", "DeviceModelName", "ConnectionStatus", "LastTimeStamp", "AgentVersion",
                          "Battery", "BatteryHealth", "KnoxStatus", "ReleaseVersion", "DeviceRegistered",
                          "Temperature", "NixPollingType", "PhoneNumber", "DeviceUserName", "BSSID",
                          "OsBuildNumber", "AfwProfile", "DeviceGroupPath", "BasicIntegrity",
                          "EfotaRegistrationStatus", "DeviceID", "Hostname", "MacAddress", "DeviceManufacture",
                          "AADDeviceId", "AADEnrollmentStatus", "ManagementType"
                        ]
                      }
                      """;
                      HttpRequest request = HttpRequest.newBuilder()
                        .uri(URI.create("https://yourdomain.com/api/v2/devicegrid"))
                        .header("Content-Type", "application/json")
                        .header("ApiKey", "Your Api-Key")
                        .header("Authorization", "Basic " + Base64.getEncoder().encodeToString("Username:Password".getBytes()))
                        .POST(HttpRequest.BodyPublishers.ofString(json))
                        .build();
                      HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
                      System.out.println("Response Code: " + response.statusCode());
                      System.out.println("Response Body: " + response.body());
                    
Python
                      import requests
                      import base64
                      import json

                      # Basic Auth credentials
                      username = "your username"
                      password = "your password"
                      credentials = f"{username}:{password}"
                      encoded_credentials = base64.b64encode(credentials.encode()).decode()

                      # Headers
                      headers = {
                          "Content-Type": "application/json",
                          "ApiKey": "YourApiKey",
                          "Authorization": f"Basic {encoded_credentials}"
                      }

                      # JSON payload
                      payload = {
                          "AdanceSearch": True,
                          "AdvSearchJobID": "",
                          "AdvSearchValue": ["android"],
                          "SearchColumns": ["DeviceModelName"],
                          "EnableDeviceGlobalSearch": False,
                          "ID": None,
                          "IsTag": False,
                          "Limit": 1000,
                          "Offset": 0,
                          "SearchValue": "",
                          "SortColumn": "ConnectionStatus",
                          "SortOrder": "desc",
                          "Source": "External",
                          "ApplicationList": [
                              "com.google.android.apps.subscriptions.red",
                              "com.google.android.googlequicksearchbox"
                          ],
                          "SearchPayload": [],
                          "SubgroupDevicesEnable": False,
                          "IsIncludedBlackListed": False,
                          "NameSearchOption": "0",
                          "ModelSearchOption": "0",
                          "DataUsageSearchOption": "",
                          "Columns": [
                              "DeviceName", "DeviceModelName", "ConnectionStatus", "LastTimeStamp", "AgentVersion",
                              "Battery", "BatteryHealth", "KnoxStatus", "ReleaseVersion", "DeviceRegistered",
                              "Temperature", "NixPollingType", "PhoneNumber", "DeviceUserName", "BSSID",
                              "OsBuildNumber", "AfwProfile", "DeviceGroupPath", "BasicIntegrity",
                              "EfotaRegistrationStatus", "DeviceID", "Hostname", "MacAddress", "DeviceManufacture",
                              "AADDeviceId", "AADEnrollmentStatus", "ManagementType"
                          ]
                      }

                      # Make the POST request
                      url = "https://yourdomain.com/api/v2/devicegrid"
                      response = requests.post(url, headers=headers, json=payload)

                      # Print the response
                      print("Response Code:", response.status_code)
                      print("Response Body:", response.text)
            
required: true responses: '200': description: OK content: application/json: schema: discriminator: mapping: ResponseWithSourceInternal: '#/components/schemas/PostDeviceResponseModel' ResponseWithSourceExternal: '#/components/schemas/PostDeviceResponseModelForExternal' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/devicegrid' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "ID": "AllDevices", "IsTag": false, "SortColumn": "LastTimeStamp", "SortOrder": "desc", "Limit": 10, "Offset": 0, "IsSearch": "false" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicegrid"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"Limit\": 20, \"Offset\": 0, \"IsSearch\": true, \"SearchValue\": \"\", \"SortOrder\": \"asc\", \"SortColumn\": \"DeviceName\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicegrid"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"Limit\": 20, \"Offset\": 0, \"IsSearch\": true, \"SearchValue\": \"\", \"SortOrder\": \"asc\", \"SortColumn\": \"DeviceName\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicegrid" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"Limit\": 20, \"Offset\": 0, \"IsSearch\": true, \"SearchValue\": \"\", \"SortOrder\": \"asc\", \"SortColumn\": \"DeviceName\"}" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) # api/v2/device: # get: # deprecated : true # tags: # - Device # summary: Get device details # description: | # This api lets you retrieve details of device(s) such as battery details, WiFi details, online/offline, IP address, platform details etc.
# - Default: Retrieves details of all device(s) from home group when no parameters are passed.
# Following query parameters can be used to retrieve details of specific device(s). # parameters: # - name: GroupID # required: true # in: query # type: string # default: 123 # description: | # ID of the group
# - To retrieve device details of particular Group using it's GroupID. # Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API. # Note: For Home group, GroupID is null. # schema: # type: string # - name: DeviceName # in: query # description: | # Name of the device
# - To retrieve device details using device name. # schema: # type: string # - name: MACaddress # in: query # description: | # WiFi MAC address of the device
# - To retrieve device details using WiFi MAC address of the device. # schema: # type: string # responses: # '200': # description: OK # content: # application/json: # schema: # $ref: '#/components/schemas/DeviceModel' # x-code-samples: # - lang: CURL # source: | # curl -X GET 'https://yourdomain.com/api/v2/device' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/device"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.GET); # //Send request # IRestResponse response = client.Execute(request); # //Read response # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/device"; # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # .get() # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your ApiKey") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/device" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Send request # response = requests.get(url,auth=Credentials,headers=headers) # print(response.text) # put: # deprecated : true # tags: # - Device # summary: Delete device # description: | # This api lets you move your device to pending delete list or force deletes the device. # requestBody: # content: # application/json: # schema: # oneOf: # - $ref: '#/components/schemas/PendingDeleteDevice' # - $ref: '#/components/schemas/DeleteDevice' # - $ref: '#/components/schemas/ForceDeleteFromPendingDelete' # discriminator: # mapping: # Move to pending delete list : '#/components/schemas/PendingDeleteDevice' # Delete the device from console : '#/components/schemas/DeleteDevice' # Force delete the device from pending delete : '#/components/schemas/ForceDeleteFromPendingDelete' # responses: # '200': # description: OK # content: # application/json: # schema: # oneOf: # - $ref: '#/components/schemas/PendingDeleteDeviceResponse' # - $ref: '#/components/schemas/DeleteDeviceResponse' # - $ref: '#/components/schemas/ForceDeleteFromPendingDeleteResponse' # x-code-samples: # - lang: CURL # source: | # curl -X PUT 'https://yourdomain.com/api/v2/device' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceId": "103deb23-1dc1-4caf-9f77-2dd80c94c31f", "Action": "DELETE_DEVICE" }' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/device"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.PUT); # //Request payload # string PayLoad = "{\"Action\":\"DELETE_DEVICE\",\"DeviceId\":\"dd82dba7-6773-439b-91de-b5139411c2ae\"}"; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/device"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad="{\"Action\":\"DELETE_DEVICE\",\"DeviceId\":\"dd82dba7-6773-439b-91de-b5139411c2ae\"}"; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # //Send payload # .put(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/device" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "{\"Action\":\"DELETE_DEVICE\",\"DeviceId\":\"dd82dba7-6773-439b-91de-b5139411c2ae\"}" # #Send request # response = requests.put(url,auth=Credentials,data=payload,headers=headers) # print(response.text) 'api/v2/device/delete': put: tags: - Device summary: Delete device description: | This api lets you move device(s) to Recycle Bin or force delete the device from Recycle Bin. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/PendingDeleteDevice' - $ref: '#/components/schemas/ForceDeleteFromPendingDelete' discriminator: mapping: Move to Recycle Bin : '#/components/schemas/PendingDeleteDevice' Force delete the device from Recycle Bin : '#/components/schemas/ForceDeleteFromPendingDelete' responses: '200': description: OK content: application/json: schema: oneOf: - $ref: '#/components/schemas/PendingDeleteDeviceResponse' - $ref: '#/components/schemas/ForceDeleteFromPendingDeleteResponse' '400': description: Failed Operation content: application/json: schema: $ref: '#/components/schemas/FailResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/device/delete' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceId": "103deb23-1dc1-4caf-9f77-2dd80c94c31f", "Action": "DELETE_DEVICE" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/device/delete"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{\"Action\":\"DELETE_DEVICE\",\"DeviceId\":\"dd82dba7-6773-439b-91de-b5139411c2ae\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/device/delete"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{\"Action\":\"DELETE_DEVICE\",\"DeviceId\":\"dd82dba7-6773-439b-91de-b5139411c2ae\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/device/delete" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{\"Action\":\"DELETE_DEVICE\",\"DeviceId\":\"dd82dba7-6773-439b-91de-b5139411c2ae\"}" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/device/{DeviceId}': get: tags: - Device summary: Get device details by ID description: 'This api lets you retrieve device details such as battery details, WiFi details, online/offline, IP address, platform details etc. of particular device from your SureMDM account.' parameters: - name: DeviceId in: path required: true description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceDetailResponseModel' '400': description: Failed Operation content: application/json: schema: $ref: '#/components/schemas/DeviceNotFoundResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/device/{DeviceId}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/device/{DeviceId}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/device/{DeviceId}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/device/{DeviceId}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/devicename: get: operationId: getDeviceName tags: - Device summary: Get device name description: This api lets you retrieve name of a particular device from your SureMDM account. parameters: - in: query name: DeviceID description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceNameResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/devicename' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicename"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicename"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicename" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Query parameters params={"DeviceID":"5137b7ab-bb14-48c6-960c-d641d6c501fc"} #Send request response = requests.get(url,auth=Credentials,params=params,headers=headers) print(response.text) # put: # deprecated : true # tags: # - Device # summary: Change device name # description: This api lets you change name of a particular device present under your SureMDM account. # requestBody: # content: # application/json: # schema: # $ref: '#/components/schemas/SetDeviceName' # description: '' # required: true # responses: # '200': # description: OK # content: # application/json: # schema: # type: string # example: true # description: | # true: Device name successfully changed.
# false: Device name change failed. # x-code-samples: # - lang: CURL # source: | # curl -X PUT 'https://yourdomain.com/api/v2/devicename' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceId": "1111111111111111111", "DeviceName": "John Doe - Device 101" }' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/devicename"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.PUT); # //Request payload # string PayLoad = "{ \"DeviceId\": \"1111111111111111111\", \"DeviceName\": \"Client002\"}"; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/devicename"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad="{ \"DeviceId\": \"1111111111111111111\", \"DeviceName\": \"Client002\"}"; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # //Send payload # .put(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your Api-Key") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/devicename" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "{ \"DeviceId\": \"1111111111111111111\", \"DeviceName\": \"Client002\"}" # #Send request # response = requests.put(url,auth=Credentials,data=payload,headers=headers) # print(response.text) api/v2/deviceassignment: put: tags: - Device summary: Move devices to a Group description: This api lets you move device to a particular group on your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/DeviceAssignment' description: '' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SuccessDeviceResponseModel' '400': description: OK content: application/json: schema: $ref: '#/components/schemas/NoDevicesResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/deviceassignment' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '[ { "DeviceId": "aa8b3b36-9684-42b6-996b-84c319df75ff", "GroupId": "1234f195-69a3-4f7d-9c94-957d27573987", "SourceGroupId": "null" } ]' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/deviceassignment"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "[ { \"DeviceId\": \"aa8b3b36-9684-42b6-996b-84c319df75ff\", \"GroupId\": \"1234f195-69a3-4f7d-9c94-957d27573987\", \"SourceGroupId\": \"null\" }]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/deviceassignment"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="[ { \"DeviceId\": \"aa8b3b36-9684-42b6-996b-84c319df75ff\", \"GroupId\": \"1234f195-69a3-4f7d-9c94-957d27573987\", \"SourceGroupId\": \"null\" }]"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/deviceassignment" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "[ { \"DeviceId\": \"aa8b3b36-9684-42b6-996b-84c319df75ff\", \"GroupId\": \"1234f195-69a3-4f7d-9c94-957d27573987\", \"SourceGroupId\": \"null\" }]" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) # 'api/v2/getdevicelistbygroupid/{GroupID}': # get: # deprecated: true # tags: # - Device # summary: Move all devices to home group # description: This api lets you transfer all the devices of a particular group to the home group under you SureMDM account. # parameters: # - name: GroupID # in: path # required: true # description: 'ID of the group allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.' # schema: # type: string # responses: # '200': # description: OK # content: # application/json: # schema: # type: string # description: Number of devices moved to the home group. # example: 1 # x-code-samples: # - lang: CURL # source: | # curl -X GET 'https://yourdomain.com/api/v2/getdevicelistbygroupid/{GroupID}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/getdevicelistbygroupid/{GroupID}"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.GET); # //Send request # IRestResponse response = client.Execute(request); # //Read response # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL="https://yourdomain.com/api/v2/getdevicelistbygroupid/{GroupID}"; # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # .get() # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your ApiKey") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/getdevicelistbygroupid/{GroupID}" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Send request # response = requests.get(url,auth=Credentials,headers=headers) # print(response.text) 'api/v2/installedapp/android/{DeviceId}/device/{Limit}/{Offset}/{Search}/{Sort}/{Order}/{Platform}': get: tags: - Device summary: Get installed applications on device description: This api lets you retrieve list of applications which are installed on device present under your SureMDM account. parameters: - name: DeviceId in: path required: true description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API. schema: type: string - name: Limit in: path required: false description: Number of apps to be displayed (set to 0 by default) schema: type: integer - name: Offset in: path required: false description: Offset value (set to 0 by default) schema: type: integer - name: Search in: path required: false description: | Search value (if search value is not required, value should be 'false')
PlatformValues
Defaultfalse
Androidsystem, installed
Windowsnative, uwp
schema: type: string - name: Sort in: path required: false description: | Sort value
Attributes that can be used to sort are: Name, Type, Id, Version, AppSize schema: type: string - name: Order in: path required: false description: | Sort Order
Values: asc, desc schema: type: string - name: Platform in: path required: false description: | Platform
Values: Android, Windows schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InstalledAppsModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/installedapp/android/{DeviceId}/device/{Limit}/{Offset}/{Search}/{Sort}/{Order}/{Platform}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/installedapp/android/{DeviceId}/device/{Limit}/{Offset}/{Search}/{Sort}/{Order}/{Platform}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/installedapp/android/{DeviceId}/device/{Limit}/{Offset}/{Search}/{Sort}/{Order}/{Platform}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/installedapp/android/{DeviceId}/device/{Limit}/{Offset}/{Search}/{Sort}/{Order}/{Platform}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/devicelog/{DeviceId}': get: tags: - Device summary: Get Device logs description: | This api lets you retrieve logs of particular device present under your SureMDM account. These device log contains records about each and every activity performed on device or by the device. parameters: - name: DeviceId in: path description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeviceLogOutput' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/devicelog/{DeviceId}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/devicelog/{DeviceId}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/devicelog/{DeviceId}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/devicelog/{DeviceId}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/calllog/{DeviceID}': get: tags: - Device summary: Get call logs of device description: | This api lets you retrieve call logs of particular device present under your SureMDM account. parameters: - name: DeviceID in: path description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CallLogOutput' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/calllog/{DeviceID}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/calllog/{DeviceID}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/calllog/{DeviceID}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/calllog/{DeviceID}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/smslog/{DeviceID}': get: tags: - Device summary: Get SMS logs of device description: This api lets you retrieve SMS logs of particular device present under your SureMDM account. parameters: - name: DeviceID in: path description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SMSLogOutput' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/smslog/{DeviceID}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/smslog/{DeviceID}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/smslog/{DeviceID}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/smslog/{DeviceID}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/datausagepolicynew/{DeviceID}/{TagID}': get: tags: - Device summary: Get device data usage description: | This api lets you retrieve total data usage of particular device within specified time frame using device ID present under your SureMDM account.
Data usage information includes data used through WiFI and Mobile-data along with explicit information of data used by each application.

Sample: /DataUsagePolicy/8afaf3-a26b-4ffb-aa52-f60c72d452b/01092021-30092021

parameters: - name: DeviceID in: path description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). required: true schema: type: string - name: TagID in: path description: | Start and End dates in form of (DDMMYYYY-DDMMYYYY)
Note: TagID will work according to billing cycle only (1st to 30th date of the month) required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DataUsageOutput' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/datausagepolicynew/{DeviceID}/{TagID}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/datausagepolicynew/{DeviceID}/{TagID}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/datausagepolicynew/{DeviceID}/{TagID}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/datausagepolicynew/{DeviceID}/{TagID}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/unapproveddevice: get: tags: - Device summary: Get unapproved devices description: | This api lets you retrieve details of unapproved device(s) present under your SureMDM account.
Unapproved devices are the devices which are enrolled into SureMDM but are yet to be approved by the administartor.
responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UnapprovedOutput' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/unapproveddevice' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/unapproveddevice"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/unapproveddevice" //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/unapproveddevice" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) put: tags: - Device summary: Approve specific device(s) description: | This api lets you approve specific device(s) from the unapproved device list under your SureMDM account. requestBody: content: application/json: schema: type: array items: type: string description: Array of device ID example: - aa8b3b36-9684-42b6-996b-84c319df75ff - 1234f195-69a3-4f7d-9c94-957d27573987 required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApprovedDevicesResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/unapproveddevice' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '[ "aa8b3b36-9684-42b6-996b-84c319df75ff", "1234f195-69a3-4f7d-9c94-957d27573987" ]' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/unapproveddevice"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "[ \"aa8b3b36-9684-42b6-996b-84c319df75ff\", \"1234f195-69a3-4f7d-9c94-957d27573987\"]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/unapproveddevice"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="[ \"aa8b3b36-9684-42b6-996b-84c319df75ff\", \"1234f195-69a3-4f7d-9c94-957d27573987\"]"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/unapproveddevice" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "[ \"aa8b3b36-9684-42b6-996b-84c319df75ff\", \"1234f195-69a3-4f7d-9c94-957d27573987\"]" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/deviceapproval/approve-all: get: tags: - Device summary: Approve all devices description: This api lets you approve all the unapproved devices under your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApprovedDeviceCountResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/deviceapproval/approve-all' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/deviceapproval/approve-all"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/deviceapproval/approve-all"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/deviceapproval/approve-all" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/blacklistdevice: get: tags: - Device summary: Get blacklisted devices description: This api lets you retrieve details of blacklisted devices from your SureMDM account.
Blacklisted devices are blocked to communicate with your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BlacklistOutput' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/blacklistdevice' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/blacklistdevice"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/blacklistdevice"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/blacklistdevice" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/BlacklistDevice/{deviceIds}': put: tags: - Device summary: Blacklist device description: | This api lets you blacklist the device(s) using from your SureMDM account.
Blacklisted devices are blocked to communicate with your SureMDM account. parameters: - name: DeviceIds in: path description: | Array of device ID(s) to be blacklisted.

**Note:** Device IDs must be URL encoded, with `%22` at the start and end of each device ID.

For example:
`/blacklistdevice/[%22eb7a409f-d32d-4c21-a929-28dbe047656e%22]`

This URL encodes the quotation marks needed around each device ID. required: true schema: type: array items: type: string example: - "%22eb7a409f-d32d-4c21-a929-28dbe047656e%22" - "%22fa9e2d24-1234-5678-9abc-def0a1b23456%22" responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BlacklistSuccessResponseModel' '400': description: OK content: application/json: schema: $ref: '#/components/schemas/BlacklistFailureResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/BlacklistDevice/{deviceIds}" ; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/BlacklistDevice/{deviceIds}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/BlacklistDevice/{deviceIds}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.put(url,auth=Credentials,headers=headers) print(response.text) api/v2/whitelist: put: tags: - Device summary: Whitelist device description: | This api lets you whitelist the blacklisted device(s) under your SureMDM account. Whitelisting the device enables blacklisted device to restore its communication to your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/WhitelistPayload' example: - 35ffdeb0-0f9f-4220-95d6-15c3e185e7fd - 8a76b3fc-6299-422b-a650-53adf2be1398 required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/WhitelistSuccessResponseModel' '400': description: OK content: application/json: schema: $ref: '#/components/schemas/WhitelistFailureResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/whitelist' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '[ "aa8b3b36-9684-42b6-996b-84c319df75ff", "1234f195-69a3-4f7d-9c94-957d27573987" ]' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/whitelist"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "[ \"35ffdeb0-0f9f-4220-95d6-15c3e185e7fd\", \"8a76b3fc-6299-422b-a650-53adf2be1398\"]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/whitelist"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="[ \"35ffdeb0-0f9f-4220-95d6-15c3e185e7fd\", \"8a76b3fc-6299-422b-a650-53adf2be1398\"]"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/whitelist" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "[ \"35ffdeb0-0f9f-4220-95d6-15c3e185e7fd\", \"8a76b3fc-6299-422b-a650-53adf2be1398\"]" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/location: post: tags: - Device summary: Get last location of the device description: | This api lets you retrieve last registered location of the device(s) under your SureMDM account. requestBody: content: application/json: schema: type: object properties: DeviceID: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API.
Note: Use [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) format to send multiple device IDs. example: 22c245da-df91-4bd2-9ee9-75a9ccf61142 required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LastLocationModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/location' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "DeviceID": "22c245da-df91-4bd2-9ee9-75a9ccf61142" }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/location"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{ \"DeviceID\": \"22c245da-df91-4bd2-9ee9-75a9ccf61142\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/location"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"DeviceID\": \"22c245da-df91-4bd2-9ee9-75a9ccf61142\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/location" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"DeviceID\": \"22c245da-df91-4bd2-9ee9-75a9ccf61142\" }" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) get: tags: - Device summary: Get location of device description: | This api lets you retrieve location information of device withing specified time frame. Location data of the device is collected periodically as periodicity specified while enabling location tracking on the device.
Location tracking can be enabled using 'LocationTracking' job under [`Apply dynamic job`](./#tag/Device/paths/~1dynamicjob/post) api.
parameters: - name: DeviceID in: query description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). required: true schema: type: string - name: FromTime in: query description: | From time
format: YYYY-MM-DDTHH:MM:SS
Sample: "2019-04-09T09:09:22" required: false schema: type: string - name: ToTime in: query description: | To time
format: YYYY-MM-DDTHH:MM:SS
Sample: "2019-04-09T09:09:22" required: false schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LastLocationModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/location?DeviceID={DeviceID}&FromTime={FromTime}&ToTime={ToTime}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/location?DeviceID=" + DeviceID + "&FromTime=" + FromTime + "&ToTime=" + ToTime; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/location?DeviceID=" + DeviceID + "&FromTime=" + FromTime + "&ToTime=" + ToTime; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/location" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Query parameters params={"DeviceID":"0da0d788-f8cd-4803-a112-c43a4cfa9cec","FromTime":"2019-04-09T09:09:22","ToTime":"2019-04-09T09:50:22"} #Send request response = requests.get(url,auth=Credentials,params=params,headers=headers) print(response.text) api/v2/device: post: tags: - Device summary: Add pre-approved device description: This api lets you add device to preapproved device list. requestBody: content: application/json: schema: $ref: '#/components/schemas/AddDevicePreapprovedModel' description: Payload required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AddPreapprovedDeviceResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/device"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.POST); // ... Request payload string PayLoad = "{ \"DeviceID\": \"DeviceName\", \"DeviceName\": \"asc\", \"ID\": 20, \"IDType\": \"2\", \"GroupID\": \"null\", \"GroupPath\": \"Home\", \"TagName\": \"Tag\", \"DeviceNotes\": \"\", \"SerialNumber\": \"null\", \"PhoneNumber\": \"+911111111111\", \"EmailId\": \"test@test.com\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/device"; // ... create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"DeviceID\": \"DeviceName\", \"DeviceName\": \"asc\", \"ID\": 20, \"IDType\": \"2\", \"GroupID\": \"null\", \"GroupPath\": \"Home\", \"TagName\": \"Tag\", \"DeviceNotes\": \"\", \"SerialNumber\": \"null\", \"PhoneNumber\": \"+911111111111\", \"EmailId\": \"test@test.com\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // ... Send payload .post(body) // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/device" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Payload payload = "{ \"DeviceID\": \"DeviceName\", \"DeviceName\": \"asc\", \"ID\": 20, \"IDType\": \"2\", \"GroupID\": \"null\", \"GroupPath\": \"Home\", \"TagName\": \"Tag\", \"DeviceNotes\": \"\", \"SerialNumber\": \"null\", \"PhoneNumber\": \"+911111111111\", \"EmailId\": \"test@test.com\" }" # ... Executing request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/PreapprovedDevice/DeleteDevice: post: tags: - Device summary: Delete pre-approved device description: This api lets you delete device from the preapproved device list. requestBody: content: application/json: schema: type: array description: Array of pre-approved device IDs items: type: string example: - '123456764' - '1234567674' description: Array of pre-approved device IDs required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteDeviceResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/PreapprovedDevice/DeleteDevice"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.POST); // ... Request payload string PayLoad = "[ \"123456764\", \"1234567674\"]"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/PreapprovedDevice/DeleteDevice"; // ... create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "[ \"123456764\", \"1234567674\"]"; RequestBody body = RequestBody.create(mediaType, PayLoad); // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // ... Send payload .post(body) // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/PreapprovedDevice/DeleteDevice" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Payload payload = "[ \"123456764\", \"1234567674\"]" # ... Executing request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/PreapprovedDevice/modifyregistrationpermission: put: tags: - Device summary: Modify pre-approved device description: This api lets you modify enrollment status of preapproved device. requestBody: content: application/json: schema: type: object required: - DeviceIDS - EnableEnroll properties: DeviceIDS: type: array description: Array of device Ids example: - '123456764' - '1234567674' items: type: string EnableEnroll: type: integer description: Allow or Block enrollment example: '0' description: Payload required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ModifyPreApproveResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/PreapprovedDevice/modifyregistrationpermission"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.PUT); // ... Request payload string PayLoad = "{ \"DeviceIDS\": [ [ \"123456764\", \"1234567674\" ] ], \"EnableEnroll\": \"0\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/PreapprovedDevice/modifyregistrationpermission"; // ... create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"DeviceIDS\": [ [ \"123456764\", \"1234567674\" ] ], \"EnableEnroll\": \"0\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // ... Send payload .put(body) // ... Basic authentication header .addHeader("Authorization",Credentials.basic("sa", "0000")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/PreapprovedDevice/modifyregistrationpermission" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Payload payload = "{ \"DeviceIDS\": [ [ \"123456764\", \"1234567674\" ] ], \"EnableEnroll\": \"0\"}" # ... Executing request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/GetRecoveryKey/AllDevices/{Limit}/{Offset}/{Sort}/{Order}: get: tags: - Device summary: Get recovery keys for multiple devices description: | Fetches the recovery keys of multiple devices on the console. **Note:** This API is **only supported for macOS** devices. It will not work for other platforms. **Constraints:** - `Limit` must be greater than 0. - `Offset` must be a non-negative value. - The difference between `Limit` and `Offset` (`Limit - Offset`) cannot exceed 1000. parameters: - name: Limit in: path required: true schema: type: integer example: 10 description: Number of results to fetch - name: Offset in: path required: true schema: type: integer example: 0 description: Number of records to skip before starting to return results - name: Sort in: path required: true schema: type: string example: "DeviceId" description: Possible values are `DeviceId`, `DeviceName`, and other values will default to `DateDeviceRegistered`. - name: Order in: path required: true schema: type: string enum: [asc, desc] example: "asc" responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetRecoveryKeysResponseModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/GetRecoveryKey/AllDevices/{Limit}/{Offset}/{Sort}/{Order}' \ -H 'ApiKey: Your Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/GetRecoveryKey/AllDevices/{Limit}/{Offset}/{Sort}/{Order}"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your Api-Key"); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: Java source: | String URL="https://yourdomain.com/api/v2/GetRecoveryKey/AllDevices/{Limit}/{Offset}/{Sort}/{Order}"; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your Api-Key") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/GetRecoveryKey/AllDevices/{Limit}/{Offset}/{Sort}/{Order}" headers = { 'ApiKey': "Your Api-Key" } credentials = ("Username", "Password") response = requests.get(url, auth=credentials, headers=headers) print(response.text) api/v2/UpdateCustomColumnValue: put: tags: - Device summary: Update custom column value(s) of device(s) description: | Updates the value of custom columns for specific devices in the console. **Note:** All fields in each object of the request body array are **mandatory**. You can send a list of update requests where: - Each object includes a `DeviceID`, `ColumnID`, and `ColumnValue`. - Each request can refer to different devices and columns. ⚠️ **Limit:** You cannot update more than **1000 records** in a single request. If the number of items exceeds 1000, the API will return an error. --- 🔎 To retrieve the custom column IDs, use the [Get device details](#operation/getDeviceDetails) API. In the response under `extraInfoDetails`, you will see mappings like: ```json "customColsHeaders": [ "col70", "col8", "gan" ], "customColsIds": [ "30652", "30653", "40801" ] ``` This shows the custom column headers and their corresponding column IDs. requestBody: required: true content: application/json: schema: type: array items: type: object required: - ColumnID - ColumnValue - DeviceID properties: ColumnID: type: string example: "30652" description: The unique identifier of the custom column. ColumnValue: type: string example: "Value_A1" description: The value to be set for the custom column. DeviceID: type: string example: "11111111111111111111b" description: The unique identifier of the device. example: - ColumnID: "30652" ColumnValue: "Value_A1" DeviceID: "080b84f2-cabf-4dca-b424-d472f480dd7e" - ColumnID: "30653" ColumnValue: "Value_B1" DeviceID: "11111111111111111111b" - ColumnID: "40801" ColumnValue: "Value_C1" DeviceID: "11111111111111111111b" responses: '200': description: Update successful content: application/json: schema: type: object properties: message: type: string example: "Success" data: type: string example: "3 VALUE_UPDATE_SUCCESSFULL" status: type: boolean example: true '400': description: Invalid Request - Too many records content: application/json: schema: type: object properties: message: type: string example: "Failed" data: type: string example: "You cannot update more than 1000 values at a time" status: type: boolean example: false '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' api/device/lostmodestatus/{deviceid}: get: tags: - Device summary: Get Lost Mode Status description: | Retrieves the current Lost Mode status and basic metadata for a specific device. **Use Case:** - Check whether a device is currently in Lost Mode. - Retrieve basic device details along with Lost Mode state. parameters: - name: deviceid in: path required: true description: Unique identifier of the device. schema: type: string example: 11111111111111111111b responses: '200': description: Successfully retrieved Lost Mode status content: application/json: schema: $ref: '#/components/schemas/LostModeStatusResponseModel' api/v2/message/{Offset}/{Limit}/{Order}/{SortColumn}/{Search}: get: tags: - Message summary: Fetch all messages description: This api lets you retrieve all the messages sent by devices to the SureMDM. parameters: - name: Offset in: path description: Result offset value required: true schema: type: string - name: Limit in: path description: Limit number of results required: true schema: type: string - name: Order in: path description: | Sorting order of results
asc: Ascending order
desc: Descending order required: true schema: type: string - name: SortColumn in: path description: | Column name on which sorting order will be applied
Available columns for sorting
- DeviceName - Subject - TimeStamp required: true schema: type: string - name: Search in: path description: | Search value
Note: It should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64)
Example:
null ➜ bnVsbA== required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AllMessageModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/message/{Offset}/{Limit}/{Order}/{SortColumn}/{Search}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/message/{Offset}/{Limit}/{Order}/{SortColumn}/{Search}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/message/{Offset}/{Limit}/{Order}/{SortColumn}/{Search}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/message/{Offset}/{Limit}/{Order}/{SortColumn}/{Search}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/message/{messageId}: get: tags: - Message summary: Get message details by ID description: This api lets you retrieve details of particular message under your SureMDM account. parameters: - name: messageId in: path description: ID of the message required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MessageIdModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/message/{messageId}' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/message/{messageId}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/message/{messageId}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/message/{messageId}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/message: get: tags: - Message summary: Fetch unread messages description: This api lets you fetch all the unread messages under your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MessageModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/message' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/message"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/message"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/message" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) put: tags: - Message summary: Mark messages description: This api lets you mark your inbox message as read/unread. requestBody: content: application/json: schema: $ref: '#/components/schemas/MarkMessage' required: true responses: '200': description: OK content: application/json: schema: type: string example: true description: | true: Message marked successfully.
false: Message marking failed. '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/message' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d '{ "SelectedMessgIds": "[\"3476562\"]", "IsRead": false }' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/message"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "{ \"SelectedMessgIds\": \"[\\\"3476562\\\"]\", \"IsRead\": false }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/message"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad="{ \"SelectedMessgIds\": \"[\\\"3476562\\\"]\", \"IsRead\": false }"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/message" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "{ \"SelectedMessgIds\": \"[\\\"3476562\\\"]\", \"IsRead\": false }" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) delete: tags: - Message summary: Delete message description: This api lets you delete message(s) from your SureMDM account. parameters: - name: id in: query description: | ID(s) of message which you want to delete.
sample:
/message?id=["80833"] required: true schema: type: array items: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteMessageModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/message' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/message" ; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/message"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/message" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Query parameters params={"id":"1129376"} #Send request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) api/v2/message/{days}/customdelete: delete: tags: - Message summary: Custom delete message description: This api lets you delete messages older than speicified days from your SureMDM account. parameters: - name: days in: path description: | Number of days required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CustomDeleteMessageModel' '401': description: Access Denied / Unauthorized content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/Message/{days}/customdelete' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/Message/{days}/customdelete"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/Message/{days}/customdelete"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/Message/{days}/customdelete" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) api/v2/things/thingsmodel: get: tags: - Things summary: Get Things Model details description: This api lets you retrieve distinct Model and its properties across all the enrolled things platform devices in SureMDM. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ThingsResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/things/thingsmodel' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/things/thingsmodel"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/things/thingsmodel"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/things/thingsmodel" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/report: get: tags: - Reports summary: Get reports list description: This api lets you retrieve available reports list under your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReportOutPutModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/report' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/report"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/report"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/report" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) post: operationId: requestReport tags: - Reports summary: Request reports description: | This api lets you request/generate reports from report list of your SureMDM account.
Retrieve requested reports using the [Get requested reports](#operation/getRequestedReports) API.
Use the offline report ID from the response with the [Retrieve report details by ID](#operation/searchReportDetails) API to get detailed information about the generated report. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/SystemLog' - $ref: '#/components/schemas/DeviceActivity' - $ref: '#/components/schemas/CallLogTracking' - $ref: '#/components/schemas/JobsDeployed' - $ref: '#/components/schemas/InstalledJobs' - $ref: '#/components/schemas/DeviceHealth' - $ref: '#/components/schemas/DataUsage' - $ref: '#/components/schemas/DataUsageLegacy' - $ref: '#/components/schemas/AppVersion' - $ref: '#/components/schemas/DeviceConnected' - $ref: '#/components/schemas/ComplianceReport' - $ref: '#/components/schemas/AssetTracking' - $ref: '#/components/schemas/DeviceHistory' discriminator: mapping: System log: '#/components/schemas/SystemLog' Device Activity: '#/components/schemas/DeviceActivity' Call log tracking: '#/components/schemas/CallLogTracking' Job deployment: '#/components/schemas/JobsDeployed' Install jobs: '#/components/schemas/InstalledJobs' Device Health: '#/components/schemas/DeviceHealth' Data usage: '#/components/schemas/DataUsage' Data usage legacy: '#/components/schemas/DataUsageLegacy' App version: '#/components/schemas/AppVersion' Device connection: '#/components/schemas/DeviceConnected' Compliance: '#/components/schemas/ComplianceReport' Asset tracking: '#/components/schemas/AssetTracking' Device history: '#/components/schemas/DeviceHistory' description: List of Reports required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReportGenerateResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/report' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -H 'Content-Type: application/json' -d 'OfflineReportId=&QueryParams=%7B%22groupid%22%3Anull%2C%22GroupName%22%3A%22Home%22%2C%22ShowAllLogs%22%3Atrue%2C%22ShowJobLogs%22%3Atrue%2C%22ShowAppInstallLogs%22%3Atrue%2C%22ShowUserSessionLogs%22%3Atrue%2C%22ShowDevicesDeletedLogs%22%3Atrue%2C%22date_start%22%3A%222021-10-16+00%3A01%22%2C%22date_end%22%3A%222021-10-16+09%3A07%22%7D&ReportID=100&ReportType=100&TimeZone=%2B0530+&EmailID=&GroupName=Home&CustomScheduleTime=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/report"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "OfflineReportId=&QueryParams=%7B%22groupid%22%3Anull%2C%22GroupName%22%3A%22Home%22%2C%22ShowAllLogs%22%3Atrue%2C%22ShowJobLogs%22%3Atrue%2C%22ShowAppInstallLogs%22%3Atrue%2C%22ShowUserSessionLogs%22%3Atrue%2C%22ShowDevicesDeletedLogs%22%3Atrue%2C%22date_start%22%3A%222021-10-16+00%3A01%22%2C%22date_end%22%3A%222021-10-16+09%3A07%22%7D&ReportID=100&ReportType=100&TimeZone=%2B0530+&EmailID=&GroupName=Home&CustomScheduleTime="; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/report"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "OfflineReportId=&QueryParams=%7B%22groupid%22%3Anull%2C%22GroupName%22%3A%22Home%22%2C%22ShowAllLogs%22%3Atrue%2C%22ShowJobLogs%22%3Atrue%2C%22ShowAppInstallLogs%22%3Atrue%2C%22ShowUserSessionLogs%22%3Atrue%2C%22ShowDevicesDeletedLogs%22%3Atrue%2C%22date_start%22%3A%222021-10-16+00%3A01%22%2C%22date_end%22%3A%222021-10-16+09%3A07%22%7D&ReportID=100&ReportType=100&TimeZone=%2B0530+&EmailID=&GroupName=Home&CustomScheduleTime="; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/report" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "OfflineReportId=&QueryParams=%7B%22groupid%22%3Anull%2C%22GroupName%22%3A%22Home%22%2C%22ShowAllLogs%22%3Atrue%2C%22ShowJobLogs%22%3Atrue%2C%22ShowAppInstallLogs%22%3Atrue%2C%22ShowUserSessionLogs%22%3Atrue%2C%22ShowDevicesDeletedLogs%22%3Atrue%2C%22date_start%22%3A%222021-10-16+00%3A01%22%2C%22date_end%22%3A%222021-10-16+09%3A07%22%7D&ReportID=100&ReportType=100&TimeZone=%2B0530+&EmailID=&GroupName=Home&CustomScheduleTime=" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/report/{Type}/1': get: operationId: getRequestedReports tags: - Reports summary: Get requested reports description: This api lets you retrieve requested reports under your SureMDM account. parameters: - name: Type in: path description: | Type of the report
1: On-Demand Reports List
2: Scheduled Reports List required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReportModel' '404': description: No reports found content: application/json: schema: $ref: '#/components/schemas/NoReportsFoundResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/report/{Type}/1' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/report/{Type}/1"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/report/{Type}/1"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/report/{Type}/1" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/report ': put: tags: - Reports summary: Delete scheduled report description: This api lets you delete report from scheduled report list of your SureMDM account. requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteScheduleReportPayload' description: Payload responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteReportResponseModel' # '400': # description: Failed to delete report # content: # application/json: # schema: # $ref: '#/components/schemas/DeleteReportFailureResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X DELETE 'https://yourdomain.com/api/v2/report/{ReportID}' -H 'ApiKey: 11111111111111111111' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/report/{ReportID}"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.DELETE); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/report/{ReportID}"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/report/{ReportID}" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) api/v2/report/search: post: operationId: searchReportDetails tags: - Reports summary: Retrieve report details by ID description: | This API allows you to search and retrieve detailed information about reports using their report IDs. You can search for a single report or multiple reports by providing comma-separated report IDs.

**Note:** The report ID can be obtained from: - The response of the [Request reports](#operation/requestReport) API when generating new reports - the response will contain a unique report ID in the `data` field that can be passed here to get report details - The [Get requested reports](#operation/getRequestedReports) API for previously generated reports - this API returns an `OfflineReportId` in the response which serves as the unique identifier to search report details in this API requestBody: content: application/json: schema: type: object required: - SearchReportId properties: SearchReportId: type: string description: | Single report ID or comma-separated list of report IDs to search for.
**Examples:**
• Single ID: `"20218"`
• Multiple IDs: `"20218,20219,20222"` example: "20218,20219,20222" example: SearchReportId: "20218,20219,20222" description: Search criteria containing report ID(s) required: true responses: '200': description: Report(s) found successfully content: application/json: schema: oneOf: - $ref: '#/components/schemas/SingleReportSearchResponseModel' - $ref: '#/components/schemas/MultipleReportSearchResponseModel' discriminator: mapping: single: '#/components/schemas/SingleReportSearchResponseModel' multiple: '#/components/schemas/MultipleReportSearchResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/report/search' \ -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{"OfflineReportId": "20218,20219,20222"}' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/report/search"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "{\"OfflineReportId\": \"20218,20219,20222\"}"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/report/search"; //create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{\"OfflineReportId\": \"20218,20219,20222\"}"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) //Send payload .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your Api-Key") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/report/search" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = {"OfflineReportId": "20218,20219,20222"} #Send request response = requests.post(url,auth=Credentials,json=payload,headers=headers) print(response.text) api/v2/Webhooks: get: tags: - Webhooks summary: Get all webhooks details description: This api lets you retrieve details of all the webhooks saved in your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/WebhookDetailsResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/Webhooks' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/Webhooks"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/Webhooks"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/Webhooks" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/user: post: tags: - User Details summary: Create a new user description: Adds a new user to the system with the specified details. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddEditUserModel' responses: '200': description: User successfully created content: application/json: schema: $ref: '#/components/schemas/UserCreateResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/user' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "UserData": { "UserID": "usernametestAPIDOC", "FirstName": "username", "Email": "usernametestAPIDOC@gmail.com" }, "Password": "c291cmF2dGVzdEFQSUAxMjM=" }' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/user"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.POST); request.AddJsonBody(new { UserData = new { UserID = "usernametestAPIDOC", FirstName = "username", Email = "usernametestAPIDOC@gmail.com" }, Password = "c291cmF2dGVzdEFQSUAxMjM=" }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/user"; OkHttpClient client = new OkHttpClient(); MediaType JSON = MediaType.get("application/json; charset=utf-8"); String jsonBody = "{ \"UserData\": { \"UserID\": \"usernametestAPIDOC\", \"FirstName\": \"username\", \"Email\": \"usernametestAPIDOC@gmail.com\" }, \"Password\": \"c291cmF2dGVzdEFQSUAxMjM=\" }"; RequestBody body = RequestBody.create(JSON, jsonBody); Request request = new Request.Builder() .url(URL) .post(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your ApiKey") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/user" headers = { 'ApiKey': "Your Api-Key", 'Content-Type': "application/json", } Credentials = ("Username", "Password") payload = { "UserData": { "UserID": "usernametestAPIDOC", "FirstName": "username", "Email": "usernametestAPIDOC@gmail.com" }, "Password": "c291cmF2dGVzdEFQSUAxMjM=" } response = requests.post(url, auth=Credentials, json=payload, headers=headers) print(response.text); put: tags: - User Details summary: Update User Details description: Modify an existing user's details. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddEditUserModelForPut' responses: '200': description: User updated successfully. content: application/json: schema: $ref: '#/components/schemas/UserUpdateResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/user' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "UserData": { "UserID": "usernametestAPIDOC", "FirstName": "username", "Email": "usernametestAPIDOC@gmail.com" }, "Password": "c291cmF2dGVzdEFQSUAxMjM=" }' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/user"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.PUT); request.AddJsonBody(new { UserData = new { UserID = "usernametestAPIDOC", FirstName = "username", Email = "usernametestAPIDOC@gmail.com" }, Password = "c291cmF2dGVzdEFQSUAxMjM=" }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/user"; OkHttpClient client = new OkHttpClient(); MediaType JSON = MediaType.get("application/json; charset=utf-8"); String jsonBody = "{ \"UserData\": { \"UserID\": \"usernametestAPIDOC\", \"FirstName\": \"username\", \"Email\": \"usernametestAPIDOC@gmail.com\" }, \"Password\": \"c291cmF2dGVzdEFQSUAxMjM=\" }"; RequestBody body = RequestBody.create(JSON, jsonBody); Request request = new Request.Builder() .url(URL) .put(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your ApiKey") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/user" headers = { 'ApiKey': "Your Api-Key", 'Content-Type': "application/json", } Credentials = ("Username", "Password") payload = { "UserData": { "UserID": "usernametestAPIDOC", "FirstName": "username", "Email": "usernametestAPIDOC@gmail.com" }, "Password": "c291cmF2dGVzdEFQSUAxMjM=" } response = requests.put(url, auth=Credentials, json=payload, headers=headers) print(response.text); get: summary: Get all available users description: Retrieves a list of all available users with their details. operationId: getAllUsers tags: - User Details responses: '200': description: User details retrieved successfully. content: application/json: schema: type: array items: $ref: '#/components/schemas/UserDetailsApiResponse' x-code-samples: - lang: C# source: | using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main() { string URL = "https://yourdomain.com/api/v2/user"; using HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync(URL); string result = await response.Content.ReadAsStringAsync(); Console.WriteLine(result); } } - lang: Python source: | import requests URL = "https://yourdomain.com/api/v2/user" response = requests.get(URL) print(response.json()) - lang: CURL source: | curl -X GET "https://yourdomain.com/api/v2/user" \ -H "ApiKey: Your-Api-Key" \ -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" - lang: Java source: | import java.net.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { String URL = "https://yourdomain.com/api/v2/user"; URL url = new URL(URL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } } api/v2/FolderAccessTemplate/getFolerTemplate: get: operationId: getAllFolderAccessTemplates tags: - User Details summary: Get Folder Templates description: Retrieves a list of folder access templates. responses: "200": description: Folder templates retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/FolderTemplateResponse' x-code-samples: - lang: CURL source: | curl -X GET "https://yourdomain.com/api/v2/FolderAccessTemplate/getFolerTemplate" -H "Authorization: Bearer " - lang: C# source: | using System.Net.Http; using System.Threading.Tasks; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer "); var response = await client.GetAsync("https://yourdomain.com/api/v2/FolderAccessTemplate/getFolerTemplate"); string result = await response.Content.ReadAsStringAsync(); - lang: Java source: | import java.net.http.*; import java.net.URI; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://yourdomain.com/api/v2/FolderAccessTemplate/getFolerTemplate")) .header("Authorization", "Bearer ") .GET() .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - lang: Python source: | import requests headers = {"Authorization": "Bearer "} response = requests.get("https://yourdomain.com/api/v2/FolderAccessTemplate/getFolerTemplate", headers=headers) print(response.json()) api/v2/user/GetDeviceGroupSet/true : get: operationId: getAllGroupTemplates tags: - User Details summary: Get Device Group Set description: Retrieves the device group set. # parameters: # - name: includesuperusertemplate # in: path # required: true # schema: # type: boolean # description: | # Determines whether to include the superuser template in the response. # - If **true**, the superuser template will be included. # - If **false**, the superuser template will not be included. responses: "200": description: Device group set retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/DeviceGroupSetResponseModel' x-code-samples: - lang: CURL source: | curl -X GET "https://yourdomain.com/api/v2/user/GetDeviceGroupSet/true" -H "Authorization: Bearer " - lang: C# source: | using System.Net.Http; using System.Threading.Tasks; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer "); var response = await client.GetAsync("https://yourdomain.com/api/v2/user/GetDeviceGroupSet/true"); string result = await response.Content.ReadAsStringAsync(); - lang: Java source: | import java.net.http.*; import java.net.URI; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://yourdomain.com/api/v2/user/GetDeviceGroupSet/true")) .header("Authorization", "Bearer ") .GET() .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - lang: Python source: | import requests headers = {"Authorization": "Bearer "} response = requests.get("https://yourdomain.com/api/v2/user/GetDeviceGroupSet/true", headers=headers) print(response.json()) api/v2/user/GetDeviceGridColumnSet: get: operationId: getAllDeviceGridColumnTemplates tags: - User Details summary: Get Device Grid Column Set description: Retrieves a list of device grid column sets. responses: "200": description: Device grid column set retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/DeviceGridColumnSetResponse' x-code-samples: - lang: CURL source: | curl -X GET "https://yourdomain.com/api/v2/user/GetDeviceGridColumnSet" -H "Authorization: Bearer " - lang: C# source: | using System.Net.Http; using System.Threading.Tasks; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer "); var response = await client.GetAsync("https://yourdomain.com/api/v2/user/GetDeviceGridColumnSet"); string result = await response.Content.ReadAsStringAsync(); - lang: Java source: | import java.net.http.*; import java.net.URI; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://yourdomain.com/api/v2/user/GetDeviceGridColumnSet")) .header("Authorization", "Bearer ") .GET() .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - lang: Python source: | import requests headers = {"Authorization": "Bearer "} response = requests.get("https://yourdomain.com/api/v2/user/GetDeviceGridColumnSet", headers=headers) print(response.json()) api/v2/user/getfolderset/true : get: operationId: getAllJobTemplates tags: - User Details summary: Get Folder Set description: Retrieves a list of folder sets based on the includeSuperUserTemplate flag. # parameters: # - name: includesuperusertemplate # in: path # required: true # description: | # Determines whether to include the superuser template in the response. # - If **true**, the superuser template will be included. # - If **false**, the superuser template will not be included. # schema: # type: boolean responses: "200": description: Folder set retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/FolderSetResponse' x-code-samples: - lang: cURL source: | curl -X GET "https://yourdomain.com/api/v2/user/getfolderset/true" -H "Authorization: Bearer " - lang: C# source: | using System.Net.Http; using System.Threading.Tasks; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Authorization", "Bearer "); var response = await client.GetAsync("https://yourdomain.com/api/v2/user/getfolderset/true"); string result = await response.Content.ReadAsStringAsync(); - lang: Java source: | import java.net.http.*; import java.net.URI; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://yourdomain.com/api/v2/user/getfolderset/true")) .header("Authorization", "Bearer ") .GET() .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); - lang: Python source: | import requests headers = {"Authorization": "Bearer "} response = requests.get("https://yourdomain.com/api/v2/user/getfolderset/true", headers=headers) print(response.json()) # api/v2/user/searchuser/{userid}: # get: # tags: # - User Details # summary: Search User by User ID # description: Retrieves user details based on the provided user ID. # parameters: # - name: userid # in: path # required: true # description: The unique identifier of the user to search. # schema: # type: string # responses: # "200": # description: User details retrieved successfully. # content: # application/json: # schema: # $ref: '#/components/schemas/UserSearchResponse' # x-code-samples: # - lang: cURL # source: | # curl -X GET "https://api.example.com/v2/user/searchuser/{userid}" -H "Authorization: Bearer " # - lang: C# # source: | # using System.Net.Http; # using System.Threading.Tasks; # HttpClient client = new HttpClient(); # client.DefaultRequestHeaders.Add("Authorization", "Bearer "); # var response = await client.GetAsync("https://api.example.com/v2/user/searchuser/{userid}"); # string result = await response.Content.ReadAsStringAsync(); # - lang: Java # source: | # import java.net.http.*; # import java.net.URI; # HttpClient client = HttpClient.newHttpClient(); # HttpRequest request = HttpRequest.newBuilder() # .uri(URI.create("https://api.example.com/v2/user/searchuser/{userid}")) # .header("Authorization", "Bearer ") # .GET() # .build(); # HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); # - lang: Python # source: | # import requests # headers = {"Authorization": "Bearer "} # response = requests.get("https://api.example.com/v2/user/searchuser/{userid}", headers=headers) # print(response.json()) api/v2/user/delete: put: tags: - User Details summary: Delete Users description: Deletes one or more users from the system. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeleteUserRequestModel' responses: '200': description: Users deleted successfully. content: application/json: schema: $ref: '#/components/schemas/DeleteUserResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/user/delete' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "UserIds": ["ss2112", "usernametest", "usernamefeb"] }' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/user/delete"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.PUT); request.AddJsonBody(new { UserIds = new string[] { "ss2112", "usernametest", "usernamefeb" } }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/user/delete"; OkHttpClient client = new OkHttpClient(); MediaType JSON = MediaType.get("application/json; charset=utf-8"); String jsonBody = "{ \"UserIds\": [\"ss2112\", \"usernametest\", \"usernamefeb\"] }"; RequestBody body = RequestBody.create(JSON, jsonBody); Request request = new Request.Builder() .url(URL) .put(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your ApiKey") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/user/delete" headers = { 'ApiKey': "Your Api-Key", 'Content-Type': "application/json", } Credentials = ("Username", "Password") payload = { "UserIds": ["ss2112", "usernametest", "usernamefeb"] } response = requests.put(url, auth=Credentials, json=payload, headers=headers) print(response.text); api/v2/user/changeuserpassword: put: tags: - User Details summary: Change User Password description: Updates the password for the specified user. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChangeUserPasswordRequestModel' responses: '200': description: Password changed successfully. content: application/json: schema: $ref: '#/components/schemas/ChangeUserPasswordResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/user/changeuserpassword' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "Password": "AAAAAAAAAAAAA==", "UserData": { "UserID": "test222" } }' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/user/changeuserpassword"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.PUT); request.AddJsonBody(new { Password = "AAAAAAAAAAAAA==", UserData = new { UserID = "test222" } }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/user/changeuserpassword"; OkHttpClient client = new OkHttpClient(); MediaType JSON = MediaType.get("application/json; charset=utf-8"); String jsonBody = "{ \"Password\": \"AAAAAAAAAAAAA==\", \"UserData\": { \"UserID\": \"test222\" } }"; RequestBody body = RequestBody.create(JSON, jsonBody); Request request = new Request.Builder() .url(URL) .put(body) .addHeader("Authorization", Credentials.basic("Username", "Password")) .addHeader("ApiKey", "Your ApiKey") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/user/changeuserpassword" headers = { 'ApiKey': "Your Api-Key", 'Content-Type': "application/json", } Credentials = ("Username", "Password") payload = { "Password": "AAAAAAAAAAAAA==", "UserData": { "UserID": "test222" } } response = requests.put(url, auth=Credentials, json=payload, headers=headers) print(response.text); api/v2/userrole: post: tags: - Roles summary: Create a new user role description: Creates a new user role with specified permissions. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUserRoleRequest' responses: '200': description: User role permissions saved successfully. content: application/json: schema: $ref: '#/components/schemas/CreateUserRoleResponse1' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/userrole' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ -d '{ "TemplateName": "newRoleAPIDOC", "TemplateDescription": "createRole-description", "TemplateData": [1,2,3,4] }' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/userrole"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your-Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.POST); request.AddJsonBody(new { TemplateName = "newRoleAPIDOC", TemplateDescription = "createRole-description", TemplateData = new int[] {1,2,3,4} }); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/userrole"; OkHttpClient client = new OkHttpClient(); MediaType JSON = MediaType.get("application/json; charset=utf-8"); String jsonBody = "{ \"TemplateName\": \"newRoleAPIDOC\", \"TemplateDescription\": \"createRole-description\", \"TemplateData\": [1,2,3,4] }"; RequestBody body = RequestBody.create(JSON, jsonBody); Request request = new Request.Builder() .url(URL) .post(body) .addHeader("ApiKey", "Your-Api-Key") .addHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); - lang: Python source: | import requests import json url = "https://yourdomain.com/api/v2/userrole" headers = { "ApiKey": "Your-Api-Key", "Authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", "Content-Type": "application/json" } payload = { "TemplateName": "newRoleAPIDOC", "TemplateDescription": "createRole-description", "TemplateData": [1,2,3,4] } response = requests.post(url, headers=headers, data=json.dumps(payload)) print(response.json()) put: summary: Modify role details tags: - Roles operationId: modifyUserRole requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ModifyRoleRequest' responses: '200': description: User role permissions updated successfully.. content: application/json: schema: $ref: '#/components/schemas/ModifyRoleResponse' x-code-samples: - lang: CURL source: | curl -X PUT "https://yourdomain.com/api/v2/userrole" \ -H "Content-Type: application/json" \ -d '{ "TemplateName": "!apply tag", "TemplateDescription": "modify the role", "TemplateData": [1,2,3,367,4,433,46,58,223,332,296,379,380,385,386,420,422,424,434,421,423,426,427,428,168,490,429,494,330,269,435,436], "TemplateId": "9EB04DE0-F264-4F6A-B24E-749332FFD411" }' - lang: C# source: | using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; class Program { static async Task Main() { var client = new HttpClient(); var requestBody = new { TemplateName = "!apply tag", TemplateDescription = "modify the role", TemplateData = new int[] {1,2,3,367,4,433,46,58,223,332,296,379,380,385,386,420,422,424,434,421,423,426,427,428,168,490,429,494,330,269,435,436}, TemplateId = "9EB04DE0-F264-4F6A-B24E-749332FFD411" }; var content = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json"); var response = await client.PutAsync("https://yourdomain.com/api/v2/userrole", content); var responseString = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseString); } } - lang: Java source: | import java.net.HttpURLConnection; import java.net.URL; import java.io.OutputStream; public class ModifyUserRole { public static void main(String[] args) throws Exception { URL url = new URL("https://yourdomain.com/api/v2/userrole"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("PUT"); conn.setRequestProperty("Content-Type", "application/json"); conn.setDoOutput(true); String jsonInput = "{\"TemplateName\": \"!apply tag\", \"TemplateDescription\": \"modify the role\", \"TemplateData\": [1,2,3,367,4,433,46,58,223,332,296,379,380,385,386,420,422,424,434,421,423,426,427,428,168,490,429,494,330,269,435,436], \"TemplateId\": \"9EB04DE0-F264-4F6A-B24E-749332FFD411\"}"; try (OutputStream os = conn.getOutputStream()) { os.write(jsonInput.getBytes()); os.flush(); } System.out.println("Response Code: " + conn.getResponseCode()); } } - lang: Python source: | import requests import json url = "https://yourdomain.com/api/v2/userrole" payload = { "TemplateName": "!apply tag", "TemplateDescription": "modify the role", "TemplateData": [1,2,3,367,4,433,46,58,223,332,296,379,380,385,386,420,422,424,434,421,423,426,427,428,168,490,429,494,330,269,435,436], "TemplateId": "9EB04DE0-F264-4F6A-B24E-749332FFD411" } headers = {"Content-Type": "application/json"} response = requests.put(url, data=json.dumps(payload), headers=headers) print(response.text) delete: summary: Delete User Roles tags: - Roles description: Deletes multiple user roles based on the provided list of Template IDs operationId: deleteUserRoles requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeleteUserRoleRequest' responses: '200': description: User roles deleted successfully. content: application/json: schema: $ref: '#/components/schemas/DeleteUserRoleResponse' x-code-samples: - lang: CURL source: | curl -X DELETE "https://yourdomain.com/api/v2/userrole" \ -H "Content-Type: application/json" \ -d '["74DFBA1C-4494-4F9C-87D6-E620BF6996FA", "3C908EF1-466E-43B7-9040-64AC85D9D993"]' - lang: C# source: | using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; class Program { static async Task Main() { string URL = "https://yourdomain.com/api/v2/userrole"; HttpClient client = new HttpClient(); var payload = new string[] { "74DFBA1C-4494-4F9C-87D6-E620BF6996FA", "3C908EF1-466E-43B7-9040-64AC85D9D993" }; StringContent content = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.DeleteAsync(URL); string responseString = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseString); } } - lang: PYTHON source: | import requests import json url = "https://yourdomain.com/api/v2/userrole" payload = ["74DFBA1C-4494-4F9C-87D6-E620BF6996FA", "3C908EF1-466E-43B7-9040-64AC85D9D993"] headers = {"Content-Type": "application/json"} response = requests.delete(url, data=json.dumps(payload), headers=headers) print(response.json()) - lang: JAVA source: | import java.net.HttpURLConnection; import java.net.URL; import java.io.OutputStream; import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { String url = "https://yourdomain.com/api/v2/userrole"; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("DELETE"); con.setRequestProperty("Content-Type", "application/json"); String jsonInputString = "[\"74DFBA1C-4494-4F9C-87D6-E620BF6996FA\", \"3C908EF1-466E-43B7-9040-64AC85D9D993\"]"; con.setDoOutput(true); try(OutputStream os = con.getOutputStream()) { byte[] input = jsonInputString.getBytes("utf-8"); os.write(input, 0, input.length); } Scanner scanner = new Scanner(con.getInputStream()); while (scanner.hasNext()) { System.out.println(scanner.nextLine()); } scanner.close(); } } api/v2/userrole/searchRole/{roleid}: get: summary: Search User Role tags: - Roles description: | Retrieves details of a **specific user role** based on the provided **Role ID (`roleid`)**. **How to obtain a valid `roleid`?** - Refer to the [Retrieve All User Role Templates](#operation/getAllFeatureTemplatesID) API. - In the response, locate the **`TemplateId`**, which can be used as the **`roleid`** parameter in this request. parameters: - name: roleid in: path required: true description: Unique identifier for the user role. schema: type: string responses: '200': description: Successful response with role details. content: application/json: schema: $ref: '#/components/schemas/SearchRoleResponseModel' x-code-samples: - lang: CURL source: | curl -X GET "https://yourdomain.com/api/v2/userrole/searchRole/{roleid}" -H "accept: application/json" - lang: C# source: | using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main() { var client = new HttpClient(); var response = await client.GetAsync("https://yourdomain.com/api/v2/userrole/searchRole/{roleid}"); var responseString = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseString); } } - lang: Java source: | import java.net.http.*; import java.net.URI; class Main { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://yourdomain.com/api/v2/userrole/searchRole/{roleid}")) .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } } - lang: Python source: | import requests response = requests.get("https://yourdomain.com/api/v2/userrole/searchRole/{roleid}") print(response.json()) api/v2/userrole/GetUserRole/true: get: operationId: getAllFeatureTemplatesID tags: - Roles summary: Retrieve all user role templates description: Fetches all available user role templates . # parameters: # - name: includesuperusertemplate # in: path # required: true # schema: # type: boolean # description: | # Determines whether to include the superuser template in the response. # - If **true**, the superuser template will be included. # - If **false**, the superuser template will not be included. responses: '200': description: Successfully retrieved user role templates. content: application/json: schema: $ref: '#/components/schemas/GetAllRoleResponseModelNew' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/userrole/GetUserRole/true' \ -H 'ApiKey: Your-Api-Key' \ -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' - lang: C# source: | string URL = "https://yourdomain.com/api/v2/userrole/GetUserRole/true"; var client = new RestClient(URL); client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); client.AddDefaultHeader("ApiKey", "Your-Api-Key"); client.AddDefaultHeader("Content-Type", "application/json"); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | String URL = "https://yourdomain.com/api/v2/userrole/GetUserRole/true"; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() .addHeader("ApiKey", "Your-Api-Key") .addHeader("Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ=") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute(); System.out.println(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/userrole/GetUserRole/true" headers = { "ApiKey": "Your-Api-Key", "Authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ=", "Content-Type": "application/json" } response = requests.get(url, headers=headers) print(response.json()) api/v2/account: get: tags: - Account details summary: Get account details description: This api lets you retrieve details of your SureMDM account. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountDetailsResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/account' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/account"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/account"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/account" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/customer: get: tags: - Customer details summary: Customer details description: Get the details of all customers responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CustomerOutputResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/customer' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/customer"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL="https://yourdomain.com/api/v2/customer"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/customer" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/version: get: tags: - API details summary: Get API version description: This api lets you retrieve version of SureMDM api that you are using. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApiVersionResponseModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/version' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/version"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/json"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/version"; //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/version" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/json", } #Basic authentication credentials Credentials=("Username","Password") #Send request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/QRCode/{GroupId}/{Platform}/{IsHttps}/{DeviceNameType}: get: tags: - Enrollment summary: Get QR code description: This api lets you retrieve custom QR-code which is used by Nix agent to enroll device into SureMDM with specific details. parameters: - name: GroupId in: path description: Group ID required: true schema: type: string - name: Platform in: path description: Platform type required: true schema: type: string - name: IsHttps in: path description: Is HTTP or HTTPS required: true schema: type: boolean - name: DeviceNameType in: path description: | Device name type (Use IMEI number,Mac Address, Serial number etc. This is effective for android only)
ValueDescription
UseSystemGeneratedUse system generated device name
UseIMEIUse IMEI number as device name
UseMacUse WiFi MAC address as device name
UseSerialNumberUse device's serial number as device name
UsePhoneNumberUse phone number used by the device as device name
SetManuallySet device name manually
required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/QRCodeModel' '403': description: Access Denied content: application/json: schema: $ref: '#/components/schemas/AccessDeniedResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/QRCode/{GroupId}/{Platform}/{IsHttps}/{DeviceNameType}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/QRCode/{GroupId}/{Platform}/{IsHttps}/{DeviceNameType}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/QRCode/{GroupId}/{Platform}/{IsHttps}/{DeviceNameType}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/filestore/shared: get: tags: - File Store summary: Get files description: | This api lets you retrieve files stored on SureMDM filestore. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetFilestoreResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/filestore/shared"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/filestore/shared"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/filestore/shared" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) post: tags: - File Store summary: Upload files description: | This api lets you upload file on the SureMDM filestore. requestBody: content: application/json: schema: $ref: '#/components/schemas/PostFilestoreModel' description: Payload required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UploadFileResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/filestore/shared"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.POST); // ... Request payload string PayLoad = "{\"fileName\": \"test.txt\" }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/filestore/shared"; // ... create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{\"fileName\": \"test.txt\" }"; RequestBody body = RequestBody.create(mediaType, PayLoad); // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // ... Send payload .post(body) // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/filestore/shared" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Payload payload = "{\"fileName\": \"test.txt\" }" # ... Executing request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/filestore/shared/{fileName}': get: tags: - File Store summary: Get file description: | This api lets you retrieve specific file from the filestore of the SureMDM. parameters: - name: fileName in: path description: Name of the file required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetFileResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/filestore/shared/{fileName}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/filestore/shared/{fileName}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/filestore/shared/{fileName}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/filestore/{fileName}': delete: tags: - File Store summary: Delete file description: | This api lets you delete file from the filestore of the SureMDM. parameters: - name: fileName in: path description: | Name of the file with extension
For example: image.png required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteFileResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/filestore/shared/{fileName}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.DELETE); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/filestore/shared/{fileName}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/filestore/shared/{fileName}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) 'api/v2/appstore/{PlatformType}': get: tags: - App Store summary: Get applications description: | This api lets you retrieve apps from SureMDM appstore. parameters: - name: PlatformType in: path description: | Platform type
For example: Android required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAppsResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/appstore/{PlatformType}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.GET); // ... Executing Request IRestResponse response = client.Execute(request); // ... Read response Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/appstore/{PlatformType}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your ApiKey") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/appstore/{PlatformType}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.get(url,auth=Credentials,headers=headers) print(response.text) api/v2/appstore: post: operationId: getPreSignedURL tags: - App Store summary: Upload application to app store description: | This api lets you upload app on the SureMDM appstore. requestBody: content: application/json: schema: $ref: '#/components/schemas/UploadAppModel' description: Payload required: true responses: '200': description: OK content: application/json: schema: oneOf: - $ref: '#/components/schemas/WithAppUrl' - $ref: '#/components/schemas/WithoutAppUrl' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/appstore"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.POST); // ... Request payload string PayLoad = "{ \"AppPackage\": \"com.nix\", \"AppTitle\": \"SureMDM Nix Agent\", \"PlatformType\": \"Android\", \"AppURL\": \"https:\/\/play.google.com\/store\/apps\/details?id=com.nix&hl=en_IN\", \"AppVersion\": 14.2, \"AppVersionCode\": 10, \"AppDescription\": null, \"AppSize\": null, \"AppCategory\": null, \"AppIcon\": null }"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/appstore"; // ... create PayLoad MediaType mediaType = MediaType.parse("application/json"); String PayLoad = "{ \"AppPackage\": \"com.nix\", \"AppTitle\": \"SureMDM Nix Agent\", \"PlatformType\": \"Android\", \"AppURL\": \"https:\/\/play.google.com\/store\/apps\/details?id=com.nix&hl=en_IN\", \"AppVersion\": 14.2, \"AppVersionCode\": 10, \"AppDescription\": null, \"AppSize\": null, \"AppCategory\": null, \"AppIcon\": null }"; RequestBody body = RequestBody.create(mediaType, PayLoad); // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) // ... Send payload .post(body) // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/appstore" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Payload payload = "{ \"AppPackage\": \"com.nix\", \"AppTitle\": \"SureMDM Nix Agent\", \"PlatformType\": \"Android\", \"AppURL\": \"https:\/\/play.google.com\/store\/apps\/details?id=com.nix&hl=en_IN\", \"AppVersion\": 14.2, \"AppVersionCode\": 10, \"AppDescription\": null, \"AppSize\": null, \"AppCategory\": null, \"AppIcon\": null }" # ... Executing request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/EAM: # post: # tags: # - App Store # summary: Get presigned URL to upload apps to S3 # description: This api lets you retrieve a S3 signed URL to upload APKs for your SureMDM account App Store. # requestBody: # content: # application/json: # schema: # $ref: '#/components/schemas/EAMRequestModel' # responses: # '200': # description: OK # content: # application/json: # schema: # $ref: '#/components/schemas/EAMAppDetailsS3ResponseModel' # x-code-samples: # - lang: CURL # source: | # curl -X POST 'https://yourdomain.com/api/v2/EAM' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -d 'AppTitle=com.sonyericsson.androidapp.torchapp-2.1.15-20115-minAPI11.apk&AppSize=885802&IsS3Storage=true&PlatformType=Android' # - lang: C# # source: | # //SureMDM API URL of your account # string URL = "https://yourdomain.com/api/v2/EAM"; # var client = new RestClient(URL); # //Basic authentication header # client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); # //ApiKey header # client.AddDefaultHeader("ApiKey", "Your Api-Key"); # //Set content type # client.AddDefaultHeader("Content-Type", "application/json"); # //Set request method # var request = new RestRequest(Method.POST); # //Request payload # string PayLoad = "AppTitle=com.sonyericsson.androidapp.torchapp-2.1.15-20115-minAPI11.apk&AppSize=885802&IsS3Storage=true&PlatformType=Android"; # request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); # //Send request # IRestResponse response = client.Execute(request); # //Read response # Console.WriteLine(response.Content); # - lang: JAVA # source: | # //SureMDM API URL of your account # String URL= "https://yourdomain.com/api/v2/EAM"; # //create PayLoad # MediaType mediaType = MediaType.parse("application/json"); # String PayLoad = "AppTitle=com.sonyericsson.androidapp.torchapp-2.1.15-20115-minAPI11.apk&AppSize=885802&IsS3Storage=true&PlatformType=Android"; # RequestBody body = RequestBody.create(mediaType, PayLoad); # //Create request # OkHttpClient client = new OkHttpClient(); # Request request = new Request.Builder() # .url(URL) # .post(body) # //Basic authentication header # .addHeader("Authorization",Credentials.basic("Username", "Password")) # //ApiKey header # .addHeader("ApiKey", "Your ApiKey") # //Set content type # .addHeader("Content-Type", "application/json") # .build(); # //Send request # Response response = client.newCall(request).execute(); # System.out.print(response.body().string()); # - lang: Python # source: | # import requests # #SureMDM API URL of your account # url = "https://yourdomain.com/api/v2/EAM" # #Add headers # headers = { # #Api-Key header # 'ApiKey': "Your Api-Key", # #Set content type # 'Content-Type': "application/json", # } # #Basic authentication credentials # Credentials=("Username","Password") # #Payload # payload = "AppTitle=com.sonyericsson.androidapp.torchapp-2.1.15-20115-minAPI11.apk&AppSize=885802&IsS3Storage=true&PlatformType=Android" # #Send request # response = requests.post(url,auth=Credentials,data=payload,headers=headers) # print(response.text) put: tags: - App Store summary: Edit app details description: | This api lets you edit apps present in your SureMDM account App Store.
Note: The package names of the existing app and the edit replacement app should be the same. requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/EAMRequestApkNewModel' - $ref: '#/components/schemas/EAMRequestEditNewApkModel' discriminator: mapping: Get Signed URL to upload APK: '#/components/schemas/EAMRequestApkNewModel' Edit App Details: '#/components/schemas/EAMRequestEditNewApkModel' responses: '200': description: OK content: application/json: schema: discriminator: mapping: Get Signed URL to upload APK: '#/components/schemas/EAMAppUpdateWithSignedUrlResponseModel' Edit App Details: '#/components/schemas/EAMAppUpdateNewResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/EAM' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -d 'GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App+Description+2&AppCategory=edited+category&AppIcon=data%3Aimage%2Fpng%3Bbase64%2C+{icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115&MD5Checksum=' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/EAM"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/x-www-form-urlencoded"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App+Description+2&AppCategory=edited+category&AppIcon=data%3Aimage%2Fpng%3Bbase64%2C+{icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115&MD5Checksum="; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/EAM"; //create PayLoad MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); String PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App+Description+2&AppCategory=edited+category&AppIcon=data%3Aimage%2Fpng%3Bbase64%2C+{icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115&MD5Checksum="; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/x-www-form-urlencoded") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/EAM" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/x-www-form-urlencoded", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App+Description+2&AppCategory=edited+category&AppIcon=data%3Aimage%2Fpng%3Bbase64%2C+{icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115&MD5Checksum=" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/appstore/{Guid}: put: tags: - App Store summary: Save App to App Store description: | Retrieve the S3 link to upload using the [`Upload application to app store`](#operation/getPreSignedURL) API.
**Important:** - Ensure the `appUrl` parameter is excluded from the request payload, as omitting it is necessary to obtain the presigned URL. Once the presigned URL is received, send a PUT request directly to this URL with the APK file in the request body to upload it to S3.

For information about uploaded apps, use the [`Get specific app details`](#operation/getSpecificAppDetails) API. parameters: - name: Guid in: path description: | Unique identifier (GUID) for the app to be saved to the App Store.
Example: `34aa5259-a93b-4991-9398-9c022c30f923` required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EAMSaveAppDetailsRequestModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EAMAppDetailsSuccessModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/EAM/EAMSaveAppDetails' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -d 'GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/EAM/EAMSaveAppDetails"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/x-www-form-urlencoded"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/EAM/EAMSaveAppDetails"; //create PayLoad MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); String PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/EAM/EAMSaveAppDetails" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/x-www-form-urlencoded", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/EAM/CreateWebApp: post: tags: - App Store summary: Save Web App to App Store description: | This API allows you to add a Web App directly to the App Store without uploading an APK file. **Key Points:** - Provide the hosted URL in `AppURL`. - `AppType` should be `1` (indicates Web App). - `AppSource` should be `0`.
requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EAMSaveWebAppDetailsRequestModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/WebAppPostAndPutResponseModel' x-code-samples: - lang: CURL source: | curl -X POST 'https://yourdomain.com/api/v2/EAM/CreateWebApp' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -d 'GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/EAM/CreateWebApp"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/x-www-form-urlencoded"); //Set request method var request = new RestRequest(Method.POST); //Request payload string PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/EAM/CreateWebApp"; //create PayLoad MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); String PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .post(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/EAM/CreateWebApp" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/x-www-form-urlencoded", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115" #Send request response = requests.post(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/EAM/EditWebAppDetails: put: tags: - App Store summary: Edit Web App details description: | This API allows you to edit the details of a Web App directly in the App Store without uploading an APK file. User needs to pass the GUID which they received while creating the Web App.
requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EAMEditWebAppDetailsRequestModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/WebAppPostAndPutResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/EAM/EditWebAppDetails' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -d 'GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/EAM/EditWebAppDetails"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/x-www-form-urlencoded"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/EAM/EditWebAppDetails"; //create PayLoad MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); String PayLoad = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/EAM/EditWebAppDetails" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/x-www-form-urlencoded", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "GUID=a91bb7f5-f411-4500-99e9-76a11bd8c7c9&AppPackage=com.sonyericsson.androidapp.torchapp&AppTitle=SampleApp2&AppVersion=2.1.15&AppDescription=App%20Description%202&AppCategory=abc2&AppIcon={icon}&AppURL=1%2FEAM%2FAndroid%2F91e14cab-80e5-4f6e-b458-98a46077122b&AppSize=885802&IsS3Storage=true&PlatformType=Android&AppVersionCode=20115" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) api/v2/EAM/SearchWebApp/{guid}: get: tags: - App Store summary: Search Web App by GUID description: | Retrieves details of a Web App from the App Store using its GUID. parameters: - name: guid in: path required: true description: Unique identifier (GUID) of the Web App schema: type: string example: 34aa5259-a93b-4991-9398-9c022c30f923 responses: '200': description: Successfully retrieved Web App details content: application/json: schema: $ref: '#/components/schemas/WebAppSearchResponseModel' '400': description: Bad request (GUID missing or invalid) '401': description: Unauthorized (missing permissions) x-code-samples: - lang: CURL source: | curl -X GET 'https://yourdomain.com/api/v2/EAM/SearchWebApp/34aa5259-a93b-4991-9398-9c022c30f923' \ -H 'ApiKey: YOUR_API_KEY' \ -H 'Authorization: Basic base64(username:password)' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/EAM/SearchWebApp/34aa5259-a93b-4991-9398-9c022c30f923"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set request method var request = new RestRequest(Method.GET); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/EAM/SearchWebApp/34aa5259-a93b-4991-9398-9c022c30f923"; OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .get() //Basic authentication header .addHeader("Authorization", Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") .build(); Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests url = "https://yourdomain.com/api/v2/EAM/SearchWebApp/34aa5259-a93b-4991-9398-9c022c30f923" headers = { "ApiKey": "YOUR_API_KEY" } auth = ("username", "password") response = requests.get(url, headers=headers, auth=auth) print(response.text) api/v2/EAM/DeleteWebApps: delete: tags: - App Store summary: Delete Web Apps description: | Deletes one or more Web Apps from the App Store. requestBody: required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/EAMDeleteWebAppRequestModel' responses: '200': description: Apps removed successfully or failure message content: application/json: schema: $ref: '#/components/schemas/DeleteWebAppResponseModel' '400': description: Bad request / Access denied '403': description: Forbidden (no permission for platform) api/v2/EAM/EAMGetAppDetails: put: operationId: getSpecificAppDetails tags: - App Store summary: Get specific app details description: | This api gets details of an app uploaded to the app store.
Note: The apk must already be uploaded to either S3 or file storage. requestBody: content: application/json: schema: $ref: '#/components/schemas/EAMGetAppDetailsRequestModel' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EAMGetAppDetailsNewResponseModel' x-code-samples: - lang: CURL source: | curl -X PUT 'https://yourdomain.com/api/v2/EAM/EAMGetAppDetails' -H 'ApiKey: AAAAAA-AAAA-AAAA-AAAA-AAAAAAAA' -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' -d 'GUID=34aa5259-a93b-4991-9398-9c022c30f923&AppURL=1%2FEAM%2FiOS%2F34aa5259-a93b-4991-9398-9c022c30f923&IsS3Storage=true&PlatformType=Android' - lang: C# source: | //SureMDM API URL of your account string URL = "https://yourdomain.com/api/v2/EAM/EAMGetAppDetails"; var client = new RestClient(URL); //Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); //ApiKey header client.AddDefaultHeader("ApiKey", "Your Api-Key"); //Set content type client.AddDefaultHeader("Content-Type", "application/x-www-form-urlencoded"); //Set request method var request = new RestRequest(Method.PUT); //Request payload string PayLoad = "GUID=34aa5259-a93b-4991-9398-9c022c30f923&AppURL=1%2FEAM%2FiOS%2F34aa5259-a93b-4991-9398-9c022c30f923&IsS3Storage=true&PlatformType=Android"; request.AddParameter("undefined", PayLoad, ParameterType.RequestBody); //Send request IRestResponse response = client.Execute(request); //Read response Console.WriteLine(response.Content); - lang: JAVA source: | //SureMDM API URL of your account String URL= "https://yourdomain.com/api/v2/EAM/EAMGetAppDetails"; //create PayLoad MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); String PayLoad = "GUID=34aa5259-a93b-4991-9398-9c022c30f923&AppURL=1%2FEAM%2FiOS%2F34aa5259-a93b-4991-9398-9c022c30f923&IsS3Storage=true&PlatformType=Android"; RequestBody body = RequestBody.create(mediaType, PayLoad); //Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .put(body) //Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) //ApiKey header .addHeader("ApiKey", "Your ApiKey") //Set content type .addHeader("Content-Type", "application/json") .build(); //Send request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests #SureMDM API URL of your account url = "https://yourdomain.com/api/v2/EAM/EAMGetAppDetails" #Add headers headers = { #Api-Key header 'ApiKey': "Your Api-Key", #Set content type 'Content-Type': "application/x-www-form-urlencoded", } #Basic authentication credentials Credentials=("Username","Password") #Payload payload = "GUID=34aa5259-a93b-4991-9398-9c022c30f923&AppURL=1%2FEAM%2FiOS%2F34aa5259-a93b-4991-9398-9c022c30f923&IsS3Storage=true&PlatformType=Android" #Send request response = requests.put(url,auth=Credentials,data=payload,headers=headers) print(response.text) 'api/v2/appstore/{GUID}': delete: tags: - App Store summary: Delete an application description: | This api lets you delete app from the SureMDM appstore. parameters: - name: GUID in: path description: Unique identifier of an application generated by the SureMDM. required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DeleteAppResponseModel' x-code-samples: - lang: C# source: | // ... API URL string URL = "https://yourdomain.com/api/v2/appstore/{GUID}"; var client = new RestClient(URL); // ... Basic authentication header client.Authenticator = new HttpBasicAuthenticator("Username", "Password"); // ... ApiKey Header client.AddDefaultHeader("ApiKey", "Your Api-Key"); // ... Set content type client.AddDefaultHeader("Content-Type", "application/json"); // ... Set request method var request = new RestRequest(Method.DELETE); // ... Executing Request IRestResponse response = client.Execute(request); Console.WriteLine(response.Content); - lang: JAVA source: | // ... API URL String URL="https://yourdomain.com/api/v2/appstore/{GUID}"; // ... Create request OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(URL) .delete() // ... Basic authentication header .addHeader("Authorization",Credentials.basic("Username", "Password")) // ... ApiKey Header .addHeader("ApiKey", "Your Api-Key") // ... Set content type .addHeader("Content-Type", "application/json") .build(); // ... Execute request Response response = client.newCall(request).execute(); System.out.print(response.body().string()); - lang: Python source: | import requests # ... Api url url = "https://yourdomain.com/api/v2/appstore/{GUID}" # ... Add headers headers = { # ... Api-Key header 'ApiKey': "Your Api-Key", # ... Set Content type 'Content-Type': "application/json", } # ... Basic authentication credentials Credentials=("Username","Password") # ... Executing request response = requests.delete(url,auth=Credentials,headers=headers) print(response.text) servers: - url: 'https://yourdomain.com' components: schemas: PostFilestoreModel: type: object required: - fileName properties: fileName: description: | Name of the file with extension
For example: test.txt type: string example: test.txt JobCreateModel: type: object required: - JobName - FolderId - JobType - Platform - PayLoad properties: JobName: type: string description: Name of the job example: test FolderId: type: string description: ID of the job folder (null for default folder) example: f38f9258-62ce-4187-b8aa-9914e129f015 RemoteBuzzJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Send remote buzz job PayLoad: description: | Job specific payload
{ "Periodicity": "5", "VolumeType": "1", "VolumeLock": true, "VolumeLevel":"89" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/RemoteBuzzPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "any",
example: FolderId: null JobName: test job JobType: REMOTE_BUZZ Platform: android PayLoad: - eyJQZXJpb2RpY2l0eSI6MSwiVm9sdW1lVHlwZSI6IjIiLCJWb2x1bWVMb2NrIjp0cnVlLCJWb2x1bWVMZXZlbCI6ODl9 RemoteBuzzPayLoad: type: array items: type: object properties: Periodicity: type: string description: Buzz periodicity in secs example: true AgentUpgradeJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Agent upgrade job PayLoad: description: | Job specific payload
{ "selectAgent": "2", "LocalPath": "https://mars.astrouploads.com/support/inout/nixagent.apk", "DevicePath": "/sdcard/", "IsDynamicJob": false } **Note**: Ensure that each JSON object within the `PayLoad` array is stringified (wrapped in double quotes and properly escaped). type: array items: type: string Platform: type: string description: | Name of platform
Platform Supported: "android" addtionalInformation: type: string description: Additional information for the job example: "" example: FolderId: null JobName: sadsd JobType: Nix Upgrade Platform: android PayLoad: - "{\"selectAgent\":\"2\",\"LocalPath\":\"https://mars.astrouploads.com/support/inout/nixagent.apk\",\"DevicePath\":\"/sdcard/\",\"IsDynamicJob\":false}" addtionalInformation: "" RunScriptJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Run script job PayLoad: description: | Job specific payload
Base64 encoded script content.
Example: YW55IHNjcmlwdA==
Note:
PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform
Platform Supported: "android", "AndroidVR",
"linux", "IOS", "androidwear" addtionalInformation: type: string description: | Additional information for the job
Contains script details in JSON format.

Example:
{ "selectedScript": "plaintext" } example: "{\"selectedScript\":\"plaintext\"}" example: FolderId: null JobID: null JobName: sass JobType: run_script Platform: android PayLoad: - ZHNhZGRz addtionalInformation: "{\"selectedScript\":\"plaintext\"}" SecurityPolicyJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Security policy job to apply specific security settings to devices. PayLoad: description: | Base64 encoded JSON object representing the security policy settings.
Example JSON object before Base64 encoding:

{ "PasswordPolicy": { "EnforcePassword": "none", "MinPasswordLength": "FOUR", "PasswordStrength": "NO_RESTRICTION", "DeviceAutolock": "NONE", "DeviceWipeAttempts": "NEVER" }, "PeripheralSettings": { "EnforceSettings": false, "AirplaneMode": "DONT_CARE", "DisableBluetooth": "DONT_CARE", "GPS": "DONT_CARE", "MobileData": "DONT_CARE", "WiFi": "DONT_CARE", "WiFiHotspot": "DONT_CARE", "PrivateDNSMode": "off", "PrivateDNSModification": "Allow", "BrightnessSettings": "DONT_CARE", "RotationSettings": "DONT_CARE", "SoundSettings": "DONT_CARE", "LockScreenShortcuts": "DONT_CARE", "DisableCamera": "DONT_CARE", "SDCardAccess": "DONT_CARE", "PowerSavingMode": "DONT_CARE" } } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform
Platform Supported: android addtionalInformation: type: string description: Additional information about the job. example: "" example: FolderId: null JobID: null JobName: SSD JobType: security_policy PayLoad: - eyJQYXNzd29yZFBvbGljeSI6eyJFbmZvcmNlUGFzc3dvcmQiOiJub25lIiwiTWluUGFzc3dvcmRMZW5ndGgiOiJGT1VSIiwiUGFzc3dvcmRTdHJlbmd0aCI6Ik5PX1JFU1RSSUNUSU9OIiwiRGV2aWNlQXV0b2xvY2siOiJOT05FIiwiRGV2aWNlV2lwZUF0dGVtcHRzIjoiTkVWRVIifSwiUGVyaXBoZXJhbFNldHRpbmdzIjp7IkVuZm9yY2VTZXR0aW5ncyI6ZmFsc2UsIkFpcnBsYW5lTW9kZSI6IkRPTlRfQ0FSRSIsIkRpc2FibGVCbHVldG9vdGgiOiJET05UX0NBUkUiLCJHUFMiOiJET05UX0NBUkUiLCJNb2JpbGVEYXRhIjoiRE9OVF9DQVJFIiwiV2lGaSI6IkRPTlRfQ0FSRSIsIldpRmlIb3RzcG90IjoiRE9OVF9DQVJFIiwiUHJpdmF0ZUROU01vZGUiOiJvZmYiLCJQcml2YXRlRE5TTW9kaWZpY2F0aW9uIjoiQWxsb3ciLCJCcmlnaHRuZXNzU2V0dGluZ3MiOiJET05UX0NBUkUiLCJSb3RhdGlvblNldHRpbmdzIjoiRE9OVF9DQVJFIiwiU291bmRTZXR0aW5ncyI6IkRPTlRfQ0FSRSIsIkxvY2tTY3JlZW5TaG9ydGN1dHMiOiJET05UX0NBUkUiLCJEaXNhYmxlQ2FtZXJhIjoiRE9OVF9DQVJFIiwiU0RDYXJkQWNjZXNzIjoiRE9OVF9DQVJFIiwiUG93ZXJTYXZpbmdNb2RlIjoiRE9OVF9DQVJFIn19 Platform: android addtionalInformation: "" CompositeJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Composite job type for performing multiple tasks in sequence. MinimumVersion: type: string description: Minimum required version of the agent for the job to run. example: "0" PayLoad: description: | Base64 encoded array of job IDs to be executed as part of the composite job.

Example:
[ "22622dc5-0ce1-4310-b98e-936c0b97a408", "900222ba-36fa-4b38-967a-a118e95765ac", "0580a4d3-1778-4dd1-86df-6f90dc31731f" ] Note: The payload should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear", "AndroidVR",
"windows_mobile", "windows", "windows_ce" VersionCompare: type: string description: Version comparison method. example: "2" StopOnError: type: boolean description: Indicates if the job should stop if an error occurs. example: false example: FolderId: null JobID: null JobName: DCDS JobType: COMPOSITE MinimumVersion: "0" PayLoad: - WyIyMjYyMmRjNS0wY2UxLTQzMTAtYjk4ZS05MzZjMGI5N2E0MDgiLCI5MDAyMjJiYS0zNmZhLTRiMzgtOTY3YS1hMTE4ZTk1NzY1YWMiLCIwNTgwYTRkMy0xNzc4LTRkZDEtODZkZi02ZjkwZGMzMTczMWYiXQ== Platform: android VersionCompare: "2" StopOnError: false LockDeviceJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Lock device job type for locking the device and setting options like screen lock, password reset, etc. PayLoad: description: | Job specific payload for locking the device.

Example:
{ "LockDevice": true, "LockScreenOptions": false, "LockScreenOptionType": 1, "ChangeDevicePassword": false, "Password": "", "ForceChangePasswordOnNextUnlock": false, "Token": "%RESET%PASSWORD%TOKEN%" } Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platform Supported: "android", "any", "windows_ce",
"windows_mobile", "windows" addtionalInformation: type: string description: Additional information related to the job. example: FolderId: null JobID: null JobName: sadd JobType: lock PayLoad: - eyJMb2NrRGV2aWNlIjp0cnVlLCJMb2NrU2NyZWVuT3B0aW9ucyI6ZmFsc2UsIkxvY2tTY3JlZW5PcHRpb25UeXBlIjoxLCJDaGFuZ2VEZXZpY2VQYXNzd29yZCI6ZmFsc2UsIlBhc3N3b3JkIjoiIiwiRm9yY2VDaGFuZ2VQYXNzd29yZE9uTmV4dFVubG9jayI6ZmFsc2UsIlRva2VuIjoiJVJFU0VUUEFTU1dPUkRUT0tFTiUifQ== Platform: android addtionalInformation: "" AlertMessageJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Alert message job for sending alerts to devices. PayLoad: description: | Job specific payload for the alert message.
Example:
{ "AlertMessageType": "NewAlert", "AlertType": "Alert", "JobName": "", "JobType": "ALERT_MESSAGE", "AlertIcon": "fa-address-card-o", "AlertTextHtml": "

Alert

This is an alert message

" } Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platform Supported: "android", "windows" addtionalInformation: type: string description: Additional information related to the job. example: FolderId: null JobId: null JobName: sddasa JobType: ALERT_MESSAGE PayLoad: - JTdCJTIyQWxlcnRNZXNzYWdlVHlwZSUyMiUzQSUyMk5ld0FsZXJ0JTIyJTJDJTIyQWxlcnRUeXBlJTIyJTNBJTIyQWxlcnQlMjIlMkMlMjJKb2JOYW1lJTIyJTNBJTIyJTIyJTJDJTIySm9iVHlwZSUyMiUzQSUyMkFMRVJUX01FU1NBR0UlMjIlMkMlMjJBbGVydEljb24lMjIlM0ElMjJmYS1hZGRyZXNzLWNhcmQtbyUyMiUyQyUyMkFsZXJ0SW1hZ2VOYW1lJTIyJTNBJTIyJTIyJTJDJTIyQWxlcnRUZXh0SHRtbCUyMiUzQSUyMiUzQyFET0NUWVBFJTIwaHRtbCUzRSUyMCUzQ2h0bWwlM0UlMjAlM0NoZWFkJTNFJTIwJTNDdGl0bGUlM0VGb250JTIwQXdlc29tZSUyMEljb25zJTNDJTJGdGl0bGUlM0UlMjAlM0NtZXRhJTIwbmFtZSUzRCU1QyUyMnZpZXdwb3J0JTVDJTIyJTIwY29udGVudCUzRCU1QyUyMndpZHRoJTNEZGV2aWNlLXdpZHRoJTJDJTIwaW5pdGlhbC1zY2FsZSUzRDElNUMlMjIlM0UlMjAlM0NsaW5rJTIwcmVsJTNEJTVDJTIyc3R5bGVzaGVldCU1QyUyMiUyMGhyZWYlM0QlNUMlMjJodHRwczolMkYlMkZjbGRuanMuY2xvdWRmbGFyZS5jb20lMkZhamF4JTJGbGliJTJGRm9udEF3ZXNvbWUlMkY0LjcuMCUyRmNzcyUyRmZvbnQtYXdlc29tZS5taW4uY3NzJTVDJTIyJTNFJTIwJTNDJTJGaGVhZCUzRSUyMCUzQ2JvZHklM0UlM0NzdHlsZSUzRWJvZHklMkNodG1sJTJDZGl2JTJDaDElMkNwJTdCbWFyZ2luJTNBMCUzQnBhZGRpbmclM0EwJTdEdmlkZW8lN0JkaXNwbGF5JTNBbm9uZSUzQiUyMHdpZHRoJTNBMTAwJTI1JTNCJTIwaGVpZ2h0JTNBMTAwdmglM0IlN0QlMjNBbGVydFdyYXBwZXJJZCU3QmRpc3BsYXklM0FmbGV4JTNCYWxpZ24taXRlbXMlM0FjZW50ZXIlM0JqdXN0aWZ5LWNvbnRlbnQlM0FjZW50ZXIlM0JoZWlnaHQlM0ExMDB2aCUzQndpZHRoJTNBMTAwJTI1JTNCYmFja2dyb3VuZCUzQSUyMzAwMDAwMCUzQiUyMGJhY2tncm91bmQtcmVwZWF0JTNBbm8tcmVwZWF0JTNCJTdEJTIzQWxlcnRXcmFwcGVySWQlMjAuQWxlcnRjb250ZW50QmxvY2slN0JtYXgtd2lkdGglM0E3NSUyNSU3RCUyM0FsZXJ0V3JhcHBlcklkLmV4aXN0aW5nSW1hZ2UlN0JiYWNrZ3JvdW5kLWNvbG9yJTNBJTIzMDAwJTNCYmFja2dyb3VuZC1yZXBlYXQlM0Fuby1yZXBlYXQlM0JiYWNrZ3JvdW5kLXBvc2l0aW9uJTNBY2VudGVyJTdEJTIzQWxlcnRXcmFwcGVySWQuZXhpc3RpbmdJbWFnZSUyMC5BbGVydGNvbnRlbnRCbG9jayU3QmRpc3BsYXklM0Fub25lJTdEJTIzQWxlcnRXcmFwcGVySWQub3JpZ2luYWxpbWFnZSUyQyUyMCUyM0FsZXJ0V3JhcHBlcklkLk9yaWdpbmFsJTdCYmFja2dyb3VuZC1zaXplJTNBY29udGFpbiU3RCUyM0FsZXJ0V3JhcHBlcklkLkZpdFRvU2NyZWVuJTJDJTIwJTIzQWxlcnRXcmFwcGVySWQuRml0VG9TY3JlZW4lN0JiYWNrZ3JvdW5kLXNpemUlM0Fjb3ZlciU3RCUyM0FsZXJ0V3JhcHBlcklkLlN0cmV0Y2hGdWxsU2NyZWVuJTJDJTIwJTIzQWxlcnRXcmFwcGVySWQuRnVsbFNjcmVlbiU3QmJhY2tncm91bmQtc2l6ZSUzQTEwMCUyNSUyMDEwMCUyNSU3RCUyM0FsZXJ0V3JhcHBlcklkLkFsZXJ0dGVtcGxhdGVDZW50ZXIlMjAuQWxlcnRjb250ZW50QmxvY2slN0J0ZXh0LWFsaWduJTNBY2VudGVyJTdEJTIzQWxlcnRXcmFwcGVySWQuQWxlcnR0ZW1wbGF0ZUxlZnQlMjAuQWxlcnRjb250ZW50QmxvY2slN0JkaXNwbGF5JTNBZmxleCUzQmFsaWduLWl0ZW1zJTNBY2VudGVyJTdEJTIzQWxlcnRXcmFwcGVySWQuQWxlcnR0ZW1wbGF0ZVJpZ2h0JTIwLkFsZXJ0Y29udGVudEJsb2NrJTdCZGlzcGxheSUzQWZsZXglM0JhbGlnbi1pdGVtcyUzQWNlbnRlciUzQmRpcmVjdGlvbiUzQXJ0bCU3RCUyMCUyM0FsZXJ0V3JhcHBlcklkLkFsZXJ0dGVtcGxhdGVSaWdodCUyMCUyM0FsZXJ0VGV4dEJsayU3QiUyMGRpcmVjdGlvbiUzQWx0ciUzQiUyMHRleHQtYWxpZ24lM0FyaWdodCUzQiU3RCUyM0FsZXJ0SW1hZ2VCbGslMkMlMjNBbGVydFRleHRCbGslN0JwYWRkaW5nJTNBMjBweCU3RCUyM0FsZXJ0VGV4dEJsayUyMGgxJTdCY29sb3IlM0ElMjNmZmYlM0Jmb250LWZhbWlseSUzQWFyaWFsJTNCb3ZlcmZsb3ctd3JhcCUzQWJyZWFrLXdvcmQlM0F3b3JkLWJyZWFrJTNBYnJlYWstd29yZCUzQiU3RCUyM0FsZXJ0VGV4dEJsayUyMHAlN0Jjb2xvciUzQSUyM2ZmZiUzQmZvbnQtZmFtaWx5JTNBYXJpYWwlM0JvdmVyZmxvdy13cmFwJTNBYnJlYWstd29yZCUzQndvcmQtYnJlYWslM0FicmVhay13b3JkJTNCJTdEJTIzQWxlcnRJbWFnZUJsayUyMGklN0Jjb2xvciUzQSUyM2ZmZiUzQmZvbnQtc2l6ZSUzQThlbSU3RCUyM0FsZXJ0SW1hZ2VCbGsuc21hbGxTaXplJTIwaS5mYSU3QmZvbnQtc2l6ZSUzQTZlbSU3RCUyM0FsZXJ0SW1hZ2VCbGsubWVkaXVtU2l6ZSUyMGkuZmElN0Jmb250LXNpemUlM0E4ZW0lN0QlMjNBbGVydEltYWdlQmxrLmxhcmdlU2l6ZSUyMGkuZmElN0Jmb250LXNpemUlM0ExMGVtJTdEJTIzQWxlcnRJbWFnZUJsayUyMGkuY3VzdG9tVXBsb2FkLWljbiU3QmJhY2tncm91bmQtcmVwZWF0JTNBbm8tcmVwZWF0JTNCYmFja2dyb3VuZC1wb3NpdGlvbiUzQWNlbnRlciUzQmJhY2tncm91bmQtc2l6ZSUzQWNvbnRhaW4lM0JtYXJnaW4lM0EwJTIwYXV0byUzQmRpc3BsYXklM0FibG9jayU3RCUyM0FsZXJ0SW1hZ2VCbGsuc21hbGxTaXplJTIwaS5jdXN0b21VcGxvYWQtaWNuJTdCd2lkdGglM0ExMDBweCUzQmhlaWdodCUzQTEwMHB4JTdEJTIzQWxlcnRJbWFnZUJsay5tZWRpdW1TaXplJTIwaS5jdXN0b21VcGxvYWQtaWNuJTdCd2lkdGglM0ExNTBweCUzQmhlaWdodCUzQTE1MHB4JTdEJTIzQWxlcnRJbWFnZUJsay5sYXJnZVNpemUlMjBpLmN1c3RvbVVwbG9hZC1pY24lN0J3aWR0aCUzQTIwMHB4JTNCaGVpZ2h0JTNBMjAwcHglN0QlM0MlMkZzdHlsZSUzRSUzQ2RpdiUyMGlkJTNEJTVDJTIyQWxlcnRXcmFwcGVySWQlNUMlMjIlMjBjbGFzcyUzRCU1QyUyMm5ld0FsZXJ0Qm94JTIwQWxlcnR0ZW1wbGF0ZUxlZnQlMjAlNUMlMjIlMjBzdHlsZSUzRCU1QyUyMmJhY2tncm91bmQtY29sb3IlM0ElMjNmOTc1NzUlM0IlNUMlMjIlM0UlM0NkaXYlMjBjbGFzcyUzRCU1QyUyMkFsZXJ0Y29udGVudEJsb2NrJTVDJTIyJTNFJTNDZGl2JTIwaWQlM0QlNUMlMjJBbGVydEltYWdlQmxrJTVDJTIyJTIwY2xhc3MlM0QlNUMlMjJzbWFsbFNpemUlNUMlMjIlM0UlM0NpJTIwaWQlM0QlNUMlMjJDdXN0b21JY25QYXRoSW1hZ2UlNUMlMjIlMjBjbGFzcyUzRCU1QyUyMmljbiUyMGZhJTIwZmEtYWRkcmVzcy1jYXJkLW8lNUMlMjIlM0UlM0MlMkZpJTNFJTNDJTJGZGl2JTNFJTNDZGl2JTIwaWQlM0QlNUMlMjJBbGVydFRleHRCbGslNUMlMjIlM0UlM0NoMSUyMHN0eWxlJTNEJTVDJTIyZm9udC1zaXplJTNBJTIwMTJweCUzQiUyMGNvbG9yJTNBJTIwJTIzYzI0ZTRlJTNCJTVDJTIyJTNFc2Fkc2FkJTNDJTJGaDElM0UlM0NwJTIwc3R5bGUlM0QlNUMlMjJmb250LXNpemUlM0ElMjAxMnB4JTNCJTIwY29sb3IlM0ElMjAlMjM2MDY5Y2IlM0IlNUMlMjIlM0VkYWRzZHMlM0MlMkZwJTNFJTNDJTJGZGl2JTNFJTNDJTJGZGl2JTNFJTNDJTJGZGl2JTNFJTNDJTJGYm9keSUzRSUzQyUyRmh0bWwlM0UlMjIlMkMlMjJQbGF0Zm9ybSUyMiUzQSUyMmFuZHJvaWQlMjIlMkMlMjJBbGVydEJhY2tHcm91bmRJbWFnZVNjYWxlJTIyJTNBJTIyJTIyJTJDJTIyQWxsb3dEb3dubG9hZCUyMiUzQWZhbHNlJTJDJTIyQWxsb3dQcmludCUyMiUzQWZhbHNlJTJDJTIyVGl0bGUlMjIlM0ElMjJzYWRzYWQlMjIlMkMlMjJUaXRsZVNpemUlMjIlM0ExMiUyQyUyMlRpdGxlQ29sb3IlMjIlM0ElMjIlMjNjMjRlNGUlMjIlMkMlMjJEZXNjcmlwdGlvbiUyMiUzQSUyMmRhZHNkcyUyMiUyQyUyMkRlc2NyaXB0aW9uU2l6ZSUyMiUzQTEyJTJDJTIyRGVzY3JpcHRpb25Db2xvciUyMiUzQSUyMiUyMzYwNjljYiUyMiUyQyUyMkFsZXJ0SWNvblR5cGUlMjIlM0ElMjJQcmVkZWZpbmVkJTIyJTJDJTIySWNvblNpemUlMjIlM0ElMjJTbWFsbCUyMiUyQyUyMkFsZXJ0QWxpZ25tZW50VHlwZSUyMiUzQSUyMkxlZnQlMjIlMkMlMjJCYWNrZ3JvdW5kQ29sb3IlMjIlM0ElMjIlMjNmOTc1NzUlMjIlMkMlMjJCdXp6SW50ZXJ2YWwlMjIlM0ElMjIlMjIlMkMlMjJCdXp6SW50ZXJ2YWxGb3JtYXQlMjIlM0ElMjJTZWNvbmRzJTIyJTJDJTIyQ2xvc2VBbGVydEludGVydmFsJTIyJTNBJTIyJTIyJTJDJTIyQ2xvc2VBbGVydEludGVydmFsRm9ybWF0JTIyJTNBJTIyU2Vjb25kcyUyMiU3RA== Platform: android addtionalInformation: "" EmailConfigurationJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Email configuration job for setting up email settings on devices. PayLoad: description: | Job specific payload for email configuration.
Example:
{ "UserName": "user_name", "Password": "password", "IncomingServerAddress": "imap.server.com", "OutgoingServerAddress": "smtp.server.com", "Action": 1, "ServerType": 0, "EmailAddress": "user@example.com", "IncomingPort": 993, "OutgoingPort": 465, "Signature": "Best regards,", "DomainName": "", "SecurityType": 0, "SyncLookBack": -1, "SyncFrequency": -3 } Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platform Supported: "android" addtionalInformation: type: string description: Additional information related to the job. example: FolderId: null JobID: null JobName: sadsd JobType: email_configuration PayLoad: - eyJVc2VyTmFtZSI6InNhZHNhZCIsIlBhc3N3b3JkIjoic2Fkc2FkIiwiSW5jb21pbmdTZXJ2ZXJBZGRyZXNzIjoiZHNhZCIsIk91dGdvaW5nU2VydmVyQWRkcmVzcyI6ImRzZGFkIiwiQWN0aW9uIjoxLCJTZXJ2ZXJUeXBlIjowLCJFbWFpbEFkZHJlc3MiOiIiLCJJbmNvbWluZ1BvcnQiOjMsIk91dGdvaW5nUG9ydCI6MTQsIlNpZ25hdHVyZSI6InNhZHNhZHNhZHNhIiwiRG9tYWluTmFtZSI6IiIsIlNlY3VyaXR5VHlwZSI6MCwiU3luY0xvb2tCYWNrIjotMSwiU3luY0ZyZXF1ZW5jeSI6LTN9 Platform: android addtionalInformation: "" TelecomManagementPolicyJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Data usage policy job for managing mobile data, WiFi, and other related settings. PayLoad: description: | Job-specific payload for data usage policy.
Example:
{ "MobilePolicy": { "EnableDataUsage": true, "DataUsageCycle": "0", "DataUsageCycleDay": "17", "CustomNoOfDays": "", "WarningLimit": "", "WarningLimitType": "2", "ThresholdLimit": "", "ThresholdLimitType": "2", "AlertToMDM": false, "AlertToDevice": false, "AlertToEmail": false, "EmailAddress": "", "WarningEmailAddress": "", "WarningAlertToMDM": false, "WarningAlertToDevice": false, "WarningAlertToEmail": false, "WarningBlockDataUsage": false, "WarningBlockDataProfile": false, "BlockDataProfile": false, "ThresholdBlockDataUsage": false, "ApplyJobWarning": false, "ApplyJobThreshold": false, "ApplyJobIDWarning": "", "ApplyJobIDThreshold": "", "WarningAlertApplyJob": false, "thresholdAlertApplyJob": false, "jobWarning": "[]", "jobThreshold": "[]", "WarningLimitMobileDataType": "0", "ThresholdLimitMobileDataType": "0" }, "SmsLogTracking": { "SMSTracking": "", "Periodicity": "" }, "CallLogTracking": { "CallTracking": "", "Periodicity": "" } } Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platform Supported: "android","windows" addtionalInformation: type: string description: Additional information related to the job. example: FolderId: null JobID: null JobName: sdsdf JobType: data_usage_policy PayLoad: - eyJNb2JpbGVQb2xpY3kiOnsiRW5hYmxlRGF0YVVzYWdlIjp0cnVlLCJEYXRhVXNhZ2VDeWNsZSI6IjAiLCJEYXRhVXNhZ2VDeWNsZURheSI6IjE3IiwiQ3VzdG9tTm9PZkRheXMiOiIiLCJXYXJuaW5nTGltaXQiOiIiLCJXYXJuaW5nTGltaXRUeXBlIjoiMiIsIlRocmVzaG9sZExpbWl0IjoiIiwiVGhyZXNob2xkTGltaXRUeXBlIjoiMiIsIkFsZXJ0VG9NRE0iOmZhbHNlLCJBbGVydFRvRGV2aWNlIjpmYWxzZSwiQWxlcnRUb0VtYWlsIjpmYWxzZSwiRW1haWxBZGRyZXNzIjoiIiwiV2FybmluZ0VtYWlsQWRkcmVzcyI6IiIsIldhcm5pbmdBbGVydFRvTURNIjpmYWxzZSwiV2FybmluZ0FsZXJ0VG9EZXZpY2UiOmZhbHNlLCJXYXJuaW5nQWxlcnRUb0VtYWlsIjpmYWxzZSwiV2FybmluZ0Jsb2NrRGF0YVVzYWdlIjpmYWxzZSwiV2FybmluZ0Jsb2NrRGF0YVByb2ZpbGUiOmZhbHNlLCJCbG9ja0RhdGFQcm9maWxlIjpmYWxzZSwiVGhyZXNob2xkQmxvY2tEYXRhVXNhZ2UiOmZhbHNlLCJBcHBseUpvYldhcm5pbmciOmZhbHNlLCJBcHBseUpvYlRocmVzaG9sZCI6ZmFsc2UsIkFwcGx5Sm9iSURXYXJuaW5nIjoiIiwiQXBwbHlKb2JJRFRocmVzaG9sZCI6IiIsIndhcm5pbmdBbGVydEFwcGx5Sm9iIjpmYWxzZSwidGhyZXNob2xkQWxlcnRBcHBseUpvYiI6ZmFsc2UsImpvYldhcm5uaW5nIjoiW10iLCJqb2JUaHJlc2hvbGQiOiJbXSIsIldhcm5pbmdMaW1pdE1vYmlsZURhdGFUeXBlIjoiMCIsIlRocmVzaG9sZExpbWl0TW9iaWxlRGF0YVR5cGUiOiIwIn0sIlNtc0xvZ1RyYWNraW5nIjp7IlNNU1RyYWNraW5nIjoiIiwiUGVyaW9kaWNpdHkiOiIifSwiQ2FsbExvZ1RyYWNraW5nIjp7IkNhbGxUcmFja2luZyI6IiIsIlBlcmlvZGljaXR5IjoiIn19 Platform: windows addtionalInformation: "" RelayServerJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Relay server configuration job for enabling or disabling relay server settings and providing credentials. PayLoad: description: | Job-specific payload for relay server configuration.
Example:
{ "isRelayServerEnabled": false, "url": "", "username": "", "password": "", "isAcceptAllCertificate": false, "isAllowFallBackToCloud": false, "timeout": 15, "relayNote": "" } Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platform Supported: "android" addtionalInformation: type: string description: Additional information related to the job. example: FolderId: null JobID: null JobName: sadsa JobType: RELAY SERVER PayLoad: - eyJpc1JlbGF5U2VydmVyRW5hYmxlZCI6ZmFsc2UsInVybCI6IiIsInVzZXJuYW1lIjoiIiwicGFzc3dvcmQiOiIiLCJpc0FjY2VwdEFsbENlcnRpZmljYXRlIjpmYWxzZSwiaXNBbGxvd0ZhbGxCYWNrVG9DbG91ZCI6ZmFsc2UsInRpbWVvdXQiOjE1LCJyZWxheU5vdGUiOiIifQ== Platform: android addtionalInformation: "" DeviceInfoConfigJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Device Info configuration job for managing device settings and configurations. PayLoad: description: | Job-specific payload for device info configuration.
Example:
{ "EnableDeviceInfo": true, "SyncInterval": 108000, "EnableSampling": true, "AttributesToCapture": "" } Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platform Supported: "android" addtionalInformation: type: string description: Additional information related to the job. example: FolderId: null JobID: null JobName: adjbdhj JobType: DEVICE INFO CONFIG PayLoad: - eyJFbmFibGVEZXZpY2VJbmZvQ29uZmlnIjp0cnVlLCJTeW5jSW50ZXJ2YWxUaW1lIjoxMDgwMCwiRW5hYmxlU2FtcGxpbmciOnRydWUsIkF0dHJpYnV0ZXNUb0NhcHR1cmUiOiIiLCJMYXRlc3RJbmZvIjoiIyNMYXRlc3RJbmZvX2RhdGEjIyIsIkluY2x1ZGVBbGxBdHRyaWJ1dGVzIjpmYWxzZSwiRW5hYmxlU2FtcGxpbmdDb25maWciOnsiSW50ZXJ2YWwiOjYwMCwiQXR0cmlidXRlTGlzdCI6IkNlbGxTaWduYWxJbmZvLFdpZmlTaWduYWxJbmZvLEJsdWV0b290aEluZm8sTG9jYXRpb25JbmZvIn19 Platform: android addtionalInformation: "" LostModeJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Lost Mode job for securing lost or stolen devices. PayLoad: description: | Job-specific payload for Lost Mode configuration.
Example for different platforms:
**Android:** ```json { "isLostModeEnabled": true, "Message": "test lost mode", "OrganizationName": "", "PhoneNumber": "", "StreetAddress": "", "EmailIds": "", "LocationEnabled": true, "LockTheDeviceEnabled": true, "ChangeThePasswordEnabled": true, "DevicePasswordField": "U2luaGFMTIzNA==", "ManagementType": "1", "Token": "%RESET_PASSWORD_TOKEN%" } ``` **Windows:** ```json { "LostModeEnabled": false, "isLostModeEnabled": "True", "Message": "ssasdsad", "PhoneNumber": "+916789723123", "Footer": "dsadsadsaw", "EmailAlertsEnabled": true, "EmailIds": "sdsadsa@mail.com", "RecoveryPasswordEnabled": true, "Password": "dsadsdsdsa", "isoCode": "IN" } ``` **iOS:** ```json { "isLostModeEnabled": "0", "Message": "sdsada", "PhoneNumber": "+917207887654", "Footer": "sdsadadads", "EmailAlertsEnabled": true, "EmailIds": "dsadsad@gmail.com", "PlayLostModeEnabled": true, "isoCode": "IN" } ``` Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platforms Supported: "android", "windows", "ios" additionalInformation: type: string description: Additional information related to the job. example: FolderId: null JobID: null JobName: lostmodetest JobType: LOST_MODE PayLoad: - JTdCJTIyaXNMb3N0TW9kZUVuYWJsZWQlMjIlM0F0cnVlJTJDJTIyTWVzc2FnZSUyMiUzQSUyMnRlc3QlMjBsb3N0JTIwbW9kZSUyMiUyQyUyMk9yZ2FuaXphdGlvbk5hbWUlMjIlM0ElMjIlMjIlMkMlMjJQaG9uZU51bWJlciUyMiUzQSUyMiUyMiUyQyUyMlN0cmVldEFkZHJlc3MlMjIlM0ElMjIlMjIlMkMlMjJFbWFpbElkcyUyMiUzQSUyMiUyMiUyQyUyMkxvY2F0aW9uRW5hYmxlZCUyMiUzQXRydWUlMkMlMjJMb2NrVGhlRGV2aWNlRW5hYmxlZCUyMiUzQXRydWUlMkMlMjJDaGFuZ2VUaGVQYXNzd29yZEVuYWJsZWQlMjIlM0F0cnVlJTJDJTIyRGV2aWNlUGFzc3dvcmRGaWVsZCUyMiUzQSUyMlUybHVhR0ZBTVRJek5BJTNEJTNEJTIyJTJDJTIyTWFuYWdlbWVudFR5cGUlMjIlM0ElMjIxJTIyJTJDJTIyVG9rZW4lMjIlM0ElMjIlMjVSRVNFVFBBU1NXT1JEVE9LRU4lMjUlMjIlN0Q= Platform: android additionalInformation: EMMLostModeJob InstalledAppsModel: type: object properties: message: type: string description: Message indicating the success or failure of retrieving installed apps. example: Successfully retrieved installed apps or Failed to retrieve installed apps. data: type: array description: An array of installed applications. items: type: object properties: _id: type: string description: Unique identifier for the app (if applicable, or null). example: null StartupDelay: type: string description: StartUp delay (in seconds). If app is set to run at startup. example: "0" VisibilityStatus: type: string description: App visibility status (1 for visible, 0 for hidden). example: "1" Type: type: string description: | Type of the app.
Value Description
0 Installed App
1 System App
example: "1" Status: type: string description: Lock status of the app (0 for unlocked, 1 for locked). example: "0" Id: type: string description: For Android devices, the package name is used as an ID. example: com.google.android.youtube Name: type: string description: Name of the application. example: YouTube ClassName: type: string description: Launcher class of the app. example: com.google.android.youtube.app.honeycomb.Shell$HomeActivity Version: type: string description: Version of the app, including build information. example: 19.20.33 (1546243520) AppSize: type: string description: Size of the app in bytes. example: "155760128" AppIcon: type: string description: URL path for the app icon. example: '/api/icon-cdn/ApplicationIcons/SystemApps/com-google-android-youtubecom-google-android-youtube-app-honeycomb-Shell$HomeActivity19020033000000000.png' IconPath: type: string description: Path for the app icon if available. example: null HashCode: type: string description: Hash code of the app for identifying versions. example: "2101071397" UserName: type: string description: Name of the user associated with the app. example: null FeedbackReport: type: string description: Any feedback or report associated with the app. example: null AdminPermission: type: boolean description: Whether the app has admin permissions. example: false PasswordRequired: type: boolean description: Whether a password is required for app actions. example: false AdminUsers: type: string description: List of admin users associated with the app, if any. example: "" status: type: boolean description: Status of the operation, indicating whether the installed apps were successfully retrieved. example: true example: message: Successfully retrieved installed apps. data: - _id: null StartupDelay: "0" VisibilityStatus: "1" Type: "1" Status: "0" Id: "com.google.android.youtube" Name: "YouTube" ClassName: "com.google.android.youtube.app.honeycomb.Shell$HomeActivity" Version: "19.20.33 (1546243520)" AppSize: "155760128" AppIcon: '/api/icon-cdn/ApplicationIcons/SystemApps/com-google-android-youtubecom-google-android-youtube-app-honeycomb-Shell$HomeActivity19020033000000000.png' IconPath: null HashCode: "2101071397" UserName: null FeedbackReport: null AdminPermission: false PasswordRequired: false AdminUsers: "" status: true MarkMessage: type: object required: - SelectedMessgIds - IsRead properties: SelectedMessgIds: type: string description: Serialized array of message IDs. example: '["3476562"]' IsRead: type: boolean description:
trueMark as read
falseMark as unread
example: false CompliancePolicyJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Compliance Policy Job PayLoad: description: | Job specific payload
{ "OSVersionRule":{ "AndroidVersionFirst":"14", "AndroidVersionSecond":"26", "iOSVersionFirst":"7.0", "iOSVersionSecond":"10.0", "macOSVersionFirst":"10.13", "macOSVersionSecond":"10.14", "Actions":[ { "type":"Send_Message", "delayTime":0, "delayunit":"now" } ] }, "JailBrokenRootedRule":{ "AndroidRooted":false, "iOSJailBroken":false, "Actions":[ { "type":"Move_To_Blacklist", "delayTime":0, "delayunit":"now" } ] }, "OnlineDeviceConnectivityRule":{ "Time":"5", "Period":"Minutes", "Actions":[ { "type":"Wipe_The_Device", "delayTime":"2", "delayunit":"Minutes" } ] }, "SimChangeRule":{ "Actions":[ { "type":"Lock_Device", "delayTime":"1", "delayunit":"Hours" } ] }, "PasscodePolicyRule":{ "Actions":[ { "type":"Email_Notification", "delayTime":"1", "delayunit":"Hours", "emailids":"abc@gmail.com" } ] }, "BatteryRule":{ "BatteryPercentage":"20", "PluggedStatus":0, "Actions":[ { "type":"Apply_Job", "delayTime":0, "delayunit":"now", "jobids":[ "70800079-4890-4ab2-a97b-111966d35052" ] } ] }, "ApplicationPolicyRule":{ "BlacklistedPackages":[ "fre" ], "Actions":[ { "type":"Send_Sms", "delayTime":0, "delayunit":"now", "phonenumber":"+919999988888" } ] }, "IsEnable":true } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/CompliancePolicyPayLoad' Platform: type: string description: | Name of platform.
Platform Supported: android, iOS, any, macOS example: FolderId: null JobName: test job JobType: Compliance_Job Platform: android PayLoad: - W3siT1NWZXJzaW9uUnVsZSI6eyJBbmRyb2lkVmVyc2lvbkZpcnN0IjoiMTAwIiwiQW5kcm9pZFZlcnNpb25TZWNvbmQiOiIxMDAiLCJpT1NWZXJzaW9uRmlyc3QiOiIxMDAiLCJpT1NWZXJzaW9uU2Vjb25kIjoiMTAwIiwibWFjT1NWZXJzaW9uRmlyc3QiOiIxMDAiLCJtYWNPU1ZlcnNpb25TZWNvbmQiOiIxMDAiLCJsaW51eFJlZGhhdEZpcnN0IjoiMTAwIiwibGludXhSZWRoYXRTZWNvbmQiOiIxMDAiLCJsaW51eFVidW50dUZpcnN0IjoiMTAwIiwibGludXhVYnVudHVTZWNvbmQiOiIxMDAiLCJ3aW5kb3dzVmVyc2lvbkZpcnN0IjoiIiwid2luZG93c1ZlcnNpb25TZWNvbmQiOiIiLCJBY3Rpb25zIjpbeyJ0eXBlIjoiU2VuZF9NZXNzYWdlIiwiZGVsYXl1bml0Ijoibm93IiwiZGVsYXlUaW1lIjowfV19LCJKYWlsQnJva2VuUm9vdGVkUnVsZSI6e30sIk9ubGluZURldmljZUNvbm5lY3Rpdml0eVJ1bGUiOnt9LCJTaW1DaGFuZ2VSdWxlIjp7fSwiUGFzc2NvZGVQb2xpY3lSdWxlIjp7fSwiQmF0dGVyeVJ1bGUiOnt9LCJBcHBsaWNhdGlvblBvbGljeVJ1bGUiOnt9LCJIZWFsdGhBdHRlc3RhdGlvbiI6e30sIlNEQ2FyZENoYW5nZVJ1bGUiOnt9LCJNb2JpbGVOZXR3b3JrQ29ubmVjdGl2aXR5UnVsZSI6e30sIkRldmljZVN0b3JhZ2VSdWxlIjp7fSwiRGV2aWNlRW5jcnlwdGlvblJ1bGUiOnt9LCJEZXZpY2VVcFRpbWVSdWxlIjp7fSwiTW9iaWxlU2lnbmFsU3RyZW5ndGhSdWxlIjp7fSwiV2lmaVNpZ25hbFN0cmVuZ3RoUnVsZSI6e30sIktpb3NrRW5hYmxlZFJ1bGUiOnt9LCJNb2JpbGVUaHJlYXREZWZlbmNlIjp7fSwiV2luZG93c0dlbnVpbmUiOnt9LCJXaW5kb3dzVXBkYXRlIjp7fSwiU2VjdXJpdHlQYXRjaExldmVsUnVsZSI6e30sIkN1c3RvbVJ1bGUiOnt9LCJMb2NhdGlvbkFjY2Vzc1J1bGUiOnt9LCJIYXJkd2FyZUNoYW5nZXNSdWxlIjp7fSwiUGxheUZvcldvcmtSdWxlIjp7fSwiU3lzdGVtVXNlclJ1bGUiOnt9LCJDdXN0b21Db21wbGlhbmNlUnVsZSI6e30sIkZpcmV3YWxsQ29tcGxpYW5jZVJ1bGUiOnt9LCJJc0VuYWJsZSI6dHJ1ZSwiaXNFeGNlcHRpb25LaW9za0NoZWNrZWQiOmZhbHNlfV0= CompliancePolicyPayLoad: type: array items: type: object properties: OSVersionRule: type: object description: OS version compliance rules properties: AndroidVersionFirst: type: string description: 'The Minimum API Version of Android OS where compliance job needs to be applied [API level](https://source.android.com/setup/start/build-numbers)' example: 14 AndroidVersionSecond: type: string description: 'The Maximum API Version of Android OS where compliance job needs to be applied [API level](https://source.android.com/setup/start/build-numbers)' example: 26 iOSVersionFirst: type: string description: The Minimum Version iOS where compliance job needs to be applied example: 7 iOSVersionSecond: type: string description: The Maximum Version of iOS where compliance job needs to be applied example: 10 Actions: type: array description: Actions to be performed if rules are not followed items: type: object properties: type: type: string description: Type of Action when the above things aren't matched example: Send_Message delayTime: type: string description: Delay Time after which job gets applied example: 0 delayunit: type: string description: 'Delay time unit (now, min, hrs)' example: now JailBrokenRootedRule: type: object description: JailBroken/Rooted device policy rules properties: AndroidRooted: type: boolean description: Whether Android device should be rooted to deploy the job example: false iOSJailBroken: type: boolean description: Whether iOS device should be Jailbroken to deploy the job example: false Actions: type: array description: Actions to be performed if rules are not followed items: type: object properties: type: type: string description: Type of Action when the above things aren't matched example: Move_To_Blacklist delayTime: type: string description: Delay Time after which job gets applied example: 0 delayunit: type: string description: 'Delay time unit (now, min, hrs)' example: now OnlineConnectivityRule: type: object description: Online connectivity policy rules properties: Time: type: string description: Time period to deploy job example: false Period: type: string description: Unit of time period example: Minutes Actions: type: array description: Actions to be performed if rules are not followed items: type: object properties: type: type: string description: Type of Action when the above things aren't matched example: Move_To_Blacklist delayTime: type: string description: Delay Time after which job gets applied example: 2 delayunit: type: string description: 'Delay time unit (now, min, hrs)' example: now SimChangeRule: type: object description: SIM change policy rules properties: Actions: type: array description: Actions to be performed if rules are not followed items: type: object properties: type: type: string description: Type of Action when the above things aren't matched example: Lock_Device delayTime: type: string description: Delay Time after which job gets applied example: 1 delayunit: type: string description: 'Delay time unit (now, min, hrs)' example: Hours PasscodePolicyRule: type: object description: Passcode policy rules properties: Actions: type: array description: Actions to be performed if rules are not followed items: type: object properties: type: type: string description: Type of Action when the above things aren't matched example: Email_Notification delayTime: type: string description: Delay Time after which job gets applied example: 1 delayunit: type: string description: 'Delay time unit (now, min, hrs)' example: Hours emailids: type: string description: Email Ids to send the notification of password modification. example: abc@gmail.com BatteryRule: type: object description: Battery policy rules properties: BatteryPercentage: type: string description: Time period to apply action(s) example: false PluggedStatus: type: integer description: | Checks whether to apply action when plugged in or not
0: Unplugged
1: Plugged
example: 0 Actions: type: array description: Actions to be performed if rules are not followed items: type: object properties: type: type: string description: Type of Action when the above things aren't matched example: Apply_Job delayTime: type: string description: Delay Time after which job gets applied example: 0 delayunit: type: string description: 'Delay time unit (now, min, hrs)' example: now jobids: type: array items: type: string description: Job ID of to be applied job example: 70800079-4890-4ab2-a97b-111966d35052 ApplicationPolicyRule: type: object description: Application policy rules properties: BlackListedPackages: type: array items: type: string description: The pacage name which needs to be Blacklisted example: com.facebook.android Actions: type: array description: Actions to be performed if rules are not followed items: type: object properties: type: type: string description: Type of Action when the above things aren't matched example: Send_Sms delayTime: type: string description: Delay Time after which job gets applied example: 0 delayunit: type: string description: 'Delay time unit (now, min, hrs)' example: now phonenumber: type: string description: Phone number where SMS needs to be sent example: 919999988888 IsEnable: type: boolean description: Whether to enable Compliance Policy or not example: true CompositePayLoad: type: array items: type: string description: ID of the jobs to add in composite job AlertMessagePayLoad1: type: object properties: AlertMessageType: type: string description: | Type of alert message
Values: NewAlert, ExistingAlert example: "NewAlert" AlertType: type: string description: | Type of alert to be displayed
Values: Alert, Popup example: "Alert" JobName: type: string description: | Job Name example: "test job alert" JobType: type: string description: | Job Type example: ALERT_MESSAGE AlertIcon: type: string description: Alert Icon to be displayed example: fa-address-book-o AlertImageName: type: string description: Alert image file name (will be empty if preexisting icon is used) example: "" AlertTextHtml: type: string description: Alert Text in HTML format example: "Font Awesome Icons

sample alert

this is a sample alert

" Platform: type: string description: | Platform type
Platforms supported: android example: "android" EnableBuzz: type: boolean description: To enable/disable buzz on alert (Applicable only to AlertType Alert) example: true BuzzInterval: type: integer description: Duration of buzz, if enabled (Applicable only to AlertType Alert) example: "5" BuzzIntervalFormat: type: string description: Format of buzz interval (Applicable only to AlertType Alert) example: "Seconds" EnableCloseAlert: type: boolean description: To enable/disable close option for alert (Applicable only to AlertType Alert) example: true CloseAlertInterval: type: integer description: Duration after which alert can be closed, if enabled (Applicable only to AlertType Alert) example: "5" CloseAlertIntervalFormat: type: string description: Format of buzz interval (Applicable only to AlertType Alert) example: "Seconds" EnableSnooz: type: string description: Whether snooze is enabled/disabled (Applicable only to AlertType Popup) example: "true" SnoozInterval: type: string description: Time interval for snooze (Applicable only to AlertType Popup) example: "1" SnoozIntervalFormat: type: string description: | Periodicity of the snooze interval. (Applicable only to AlertType Popup)
Values: Seconds, Hours, Minutes example: "Hours" AlertPopupTitle: type: string description: Popup message title (Applicable only to AlertType Popup) example: "SureMDM Agent" AlertPopupMessage: type: string description: Popup message description (Applicable only to AlertType Popup) example: "SureMDM Alert Message
Your administrator has sent a message, please check it out!!" Title: type: string description: | Title of the Alert Message (applicable only to new alert) example: "sample alert" TitleSize: type: string description: Font Size of the alert title (applicable only to new alert) example: "12" TitleColor: type: string description: Color of alert title in HEX format (applicable only to new alert) example: "#ffffff" Description: type: string description: Alert description (applicable only to new alert) example: "this is a sample alert" DescriptionSize: type: string description: Font Size of the alert description (applicable only to new alert) example: "12" DescriptionColor: type: string description: Color of alert description in HEX format (applicable only to new alert) example: "#ffffff" AlertIconType: type: string description: Type of the alert icon (applicable only to new alert) example: "" BackgroundColor: type: string description: Background color of the alert in HEX format (applicable only to new alert) example: "#ff0000" FileType: type: string description: Uploaded file type (Image/Video) (applicable only to AlertType exisitng) example: "Image" AlertBackGroundImageScale: type: string description: | Scale of the backgorund image (applicable only to AlertType exisitng) example: "Original" AlertVideoUrl: type: string description: | URL link to video (applicable only to FileType Video and AlertType Exisitng;"" by default) example: "" SecurityPolicyPayLoad: type: array items: type: object properties: PasswordPolicy: properties: EnforcePassword: type: boolean description: Enable password policy on device MinPasswordLength: type: string description: Minimum password length (FOUR - ELEVEN) PasswordStrength: type: string enum: - NO_RESTRICTION - ATLEAST_NUMERIC - ATLEAST_ALPHABETIC - ALPHANUMERIC description: Define password strength DeviceAutolock: type: string enum: - NONE - THREE - FIVE - TEN - FIFTEEN description: Time lapse before device Auto-Locks (in minutes) DeviceWipeAttempts: type: string description: Maximum failed password attempts before device wipes (FOUR - TEN) type: object PeripheralSettings: properties: EnforceSettings: type: boolean description: Enable peripheral settings on device DisableBluetooth: type: boolean description: Disable bluetooth DisableWiFi: type: boolean description: Disable WiFi WiFi: type: string enum: - DONT_CARE - ALWAYS_OFF - ALWAYS_ON description: Wi-Fi setting MobileData: type: string enum: - DONT_CARE - ALWAYS_OFF - ALWAYS_ON description: Mobile data setting WiFiHotspot: type: string enum: - DONT_CARE - ALWAYS_OFF - ALWAYS_ON description: WiFi-Hotspot setting GPS: type: string enum: - DONT_CARE - ALWAYS_OFF - ALWAYS_ON description: GPS setting DisableCamera: type: boolean description: Disable camera PrivateDNSModification: type: string enum: - Allow - Deny description: Allow/Deny modifications to Private DNS PrivateDNSMode: type: string enum: - off - opportunistic - hostname description: | Private DNS Mode setting
Note:
  • WiFi Always ON will work from SureMDM Agent v18.07 and above.
  • Private DNS Mode feature will work from SureMDM Agent v 27.06.01 and for Private DNS Provider Hostname feature in Android 10 onwards devices , first set Profile>>Set Private DNS Mode as Private DNS Provider Hostname with proper Hostname and then apply to device.
  • WiFi Hotspot feature will work from SureMDM Agent v 27.07.03 onwards.
type: object EmailConfigurationJobPayLoad: type: object properties: UserName: type: string description: Username example: abc123 Password: type: string description: | Password example: "@Bcd1234" IncomingServerAddress: type: string description: | Server address for the incoming emails example: "http://abc.com" OutgoingServerAddress: type: string description: | Server address for the outgoing emails (Applicable to creation of email action)Note: Value will be empty for MS EXCHANGE Server Type example: "http://def.com" Action: type: integer description: | Action to be taken
0: Delete email account
1: Create email account example: 1 ServerType: type: integer description: | Type of mail server used.
0: IMAP
1: POP3
2: MS EXCHANGE example: 0 EmailAddress: type: string description: | Email address to be created/deleted (Applicable only to MS EXCHANGE Sever type) example: "" IncomingPort: type: integer description: | Port used for incoming mails Note: Value will be 0 for MS EXCHANGE Server type example: 123 OutgoingPort: type: integer description: | Port used for outgoing mails (Applicable to creation of email action) Note: Value will be 0 for MS EXCHANGE Server type example: 456 Signature: type: string description: | Signature used (Applicable to creation of email action) Note: Value will be empty for MS EXCHANGE Server type example: "qwerty1234" DomainName: type: string description: | Domain name (Applicable only to MS EXCHANGE Sever type) example: "" SecurityType: type: integer description: | Type of security used.
By default, value can be kept as 0
0: SSL
1: SSL (accept all certificates)
2: TLS
3: TLS (accept all certificates) example: 1 SyncLookBack: type: integer description: | Days To Sync (Applicable only to MS EXCHANGE Sever type; default -1 for IMAP and POP3))
ValueDescription
-1None(Default)
11 day
23 days
31 week
42 weeks
51 Month
example: -1 SyncFrequency: type: integer description: | Sync Frequency (Applicable only to MS EXCHANGE Sever type; default -3 for IMAP and POP3)
ValueDescription
-3None(Default)
-2Automatic Push
-1Never
1515 minutes
3015 minutes
601 hour
2404 hours
72012 hours
example: -3 SureLockSettingsJobPayload: type: object properties: SettingsXML: type: string description: 'App Settings data in XML format.(SureFox, SureLock, SureVideo).' Password: type: string description: Admin password of particular App. example: password Type: type: integer description: | Specifies App. 0: SureLock 1: SureFox 2: SureVideo example: 0 InstallAutomatically: type: boolean description: Whether third party application should be automatically installed, if not installed example: false EnableIfNotEnabled: type: boolean description: Whether third party application should be enabled, if not enabled example: true DownloadUrl: type: string description: Download URL for automatic install (by default empty) LockDevicePayLoad: type: array items: type: object properties: LockDevice: type: boolean description: | Lock device
when enabled, Below fields will be ignored ChangeDevicePassword: type: boolean description: Change device password Password: type: string description: Password to be set Token: type: string default: '%RESETPASSWORDTOKEN%' description: Request token FileTransferJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | File Transfer example: File Transfer PayLoad: description: | Job specific payload
{ "LocalPath": "MR-127 BQ Update Doc.pdf", "DevicePath": "/sdcard/", "Install": false, "UseBasicAuthentication": false, "IsHttpUrl": false, "HttpUserName": "", "HttpPassword": "", "IsSilent": false, "ExecutePath": "", "CurrentUser": false, "JobNameXML": "MR-127 BQ Update Doc.pdf", "FromAppStore": false, "EnableExecutionScripts": true, "PreExecutionScript": "saasdad", "PostExecutionScript": "dsdsad", "EnableRevokeScripts": true, "PreRevokeScript": "adsadsad", "PostRevokeScript": "sadsadsad" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). Parameter Descriptions :
- LocalPath: The file name to be uploaded to the device.
- DevicePath: Directory path on the device where the file will be stored.
- Install: Set to true if the uploaded file is to be installed (e.g., APK).
- UseBasicAuthentication: Set to true to use basic authentication for file download.
- IsHttpUrl: Set to true if the file is hosted over HTTP/HTTPS.
- HttpUserName: Username for basic HTTP authentication.
- HttpPassword: Password for basic HTTP authentication.
- IsSilent: Set to true to silently install the app without user interaction.
- ExecutePath: Optional command or path to execute after deployment.
- CurrentUser: Set to true to deploy the job under the currently logged-in user.
- JobNameXML: Name of the job as stored in XML format, usually same as the file name.
- FromAppStore: Set to true if the app is to be installed from a managed app store.
- EnableExecutionScripts: Set this to true to activate the execution of pre and post scripts during job deployment.
- PreExecutionScript: Define the script to run before the job is deployed. Useful for validating prerequisites, checking permissions, or preparing configurations.
- PostExecutionScript: Define the script to run after the job deployment. Use this to apply final configurations or complete the deployment process.
- EnableRevokeScripts: Set this to true to allow execution of pre and post scripts when revoking a job.
- PreRevokeScript: Specify the script to execute before revoking the job.
- PostRevokeScript: Specify the script to execute after the job has been revoked.
allOf: - $ref: '#/components/schemas/FileTransferPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "AndroidVR", "androidwear",
"windows_ce", "windows_mobile", "windows", "Linux" example: FolderId: null JobName: test job JobType: File Transfer Platform: android PayLoad: - eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0= FileTransferPayLoad: type: array items: type: object properties: LocalPath: type: string description: | Path of File tobe sent
Sample: "example.txt" example: example.txt DevicePath: type: string description: | Path where to store on device
Sample: "/sdcard/" example: /sdcard/ Install: type: boolean description: | Install file after transfer example: false IsHttpUrl: type: boolean description: Whether local path is URL example: false UseBasicAuthentication: type: boolean description: If path is http URL and it requires authentication example: false HttpUserName: type: string description: Username for http authentication example: | "" HttpPassword: type: string description: Password for http authentication example: | "" IsSilent: type: boolean description: Perform job silently on device without notification example: false ExecutePath: type: string description: '' example: | "" CurrentUser: type: boolean description: '' example: false JobNameXML: type: string description: | File/App name
Sample: "example.txt" example: example.txt FromAppStore: type: boolean description: If file is from Appstore of sureMDM example: false InstallJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Install example: File Transfer PayLoad: description: | Job specific payload
{ "LocalPath": "CamlockPush.p12", "DevicePath": "/sdcard/", "Install": true, "DeleteAfterInstallation": true, "UseBasicAuthentication": false, "IsHttpUrl": false, "HttpUserName": "", "HttpPassword": "", "IsSilent": false, "ExecutePath": "/sdcard/ ", "CurrentUser": false, "JobNameXML": "CamlockPush.p12", "FromAppStore": false, "AppRestrictions": null, "AddShortcutToHomeScreen": true, "AutoGrantPermissions": true, "EnableExecutionScripts": true, "PreExecutionScript": "ZCZCXZC", "PostExecutionScript": "DDSDFFDSDSFA", "EnableRevokeScripts": true, "PreRevokeScript": "SFSDFDSF", "PostRevokeScript": "SADADADSADSAD" } Note: Payload must be Base64 encoded before submission. Parameter Descriptions:
- LocalPath: The name of the file to be deployed. This file can reside on the server or local machine.
- DevicePath: Destination directory on the target device where the file will be copied.
- Install: Copies the file to the specified path and installs the application on the device if applicable.
- DeleteAfterInstallation: If set to true, the file will be deleted from the device after successful installation.
- UseBasicAuthentication: Enables HTTP Basic Authentication if the file is being accessed via a URL.
- IsHttpUrl: Set to true if the LocalPath points to an online URL instead of a local or server file.
- HttpUserName: Username used for HTTP Basic Authentication (only applicable if UseBasicAuthentication is true).
- HttpPassword: Password used for HTTP Basic Authentication.
- IsSilent: Attempts to install the application silently without user interaction (if the device supports silent installs).
- ExecutePath: Path to the file to be executed after deployment. Useful for launching non-APK files.
- CurrentUser: Executes the job under the context of the currently logged-in user on the device (if supported).
- JobNameXML: Job identifier name used internally; typically the same as the file name being deployed.
- FromAppStore: Indicates whether the application is being installed from an official app store.
- AppRestrictions: Optional app restriction configurations (can be null if not applicable).
- AddShortcutToHomeScreen: Creates a shortcut to the application on the device's home screen. If there's insufficient space, the shortcut may not be created.
- AutoGrantPermissions: Automatically grants all runtime permissions required by the application post-installation.
- EnableExecutionScripts: Enables the execution of pre and post deployment scripts during the job.
- PreExecutionScript: Script that runs before the job is executed. Can be used to prepare the device or validate preconditions.
- PostExecutionScript: Script that runs after the job has completed. Useful for cleanup or final setup.
- EnableRevokeScripts: Enables execution of scripts when the job is being revoked or uninstalled.
- PreRevokeScript: Script executed before the job is revoked from the device.
- PostRevokeScript: Script executed after the job is revoked from the device.
allOf: - $ref: '#/components/schemas/InstallPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear", "windows_ce",
"windows_mobile", "windows" example: FolderId: null JobName: test job JobType: Install Platform: android PayLoad: - eyJMb2NhbFBhdGgiOiJOb3RoaW5nX3YxLjYuMV9hcGtwdXJlLmNvbS5hcGsiLCJEZXZpY2VQYXRoIjoiL3NkY2FyZC8iLCJJbnN0YWxsIjp0cnVlLCJVc2VCYXNpY0F1dGhlbnRpY2F0aW9uIjpmYWxzZSwiSXNIdHRwVXJsIjpmYWxzZSwiSHR0cFVzZXJOYW1lIjoiIiwiSHR0cFBhc3N3b3JkIjoiIiwiSXNTaWxlbnQiOmZhbHNlLCJFeGVjdXRlUGF0aCI6IiIsIkN1cnJlbnRVc2VyIjpmYWxzZSwiSm9iTmFtZVhNTCI6Ik5vdGhpbmdfdjEuNi4xX2Fwa3B1cmUuY29tLmFwayIsIkZyb21BcHBTdG9yZSI6ZmFsc2V9 InstallPayLoad: type: array items: type: object properties: LocalPath: type: string description: | Path of File/APP
Sample: "example.apk" example: example.txt DevicePath: type: string description: | Path where to store on device
Sample: "/sdcard/" example: /sdcard/ Install: type: boolean description: | Install file after transfer example: false IsHttpUrl: type: boolean description: Whether local path is URL example: false UseBasicAuthentication: type: boolean description: If path is http URL and it requires authentication example: false HttpUserName: type: string description: Username for http authentication example: | "" HttpPassword: type: string description: Password for http authentication example: | "" IsSilent: type: boolean description: Perform job silently on device without notification example: false ExecutePath: type: string description: '' example: | "" CurrentUser: type: boolean description: '' example: false JobNameXML: type: string description: | File/App name
Sample: "example.apk" example: example.txt FromAppStore: type: boolean description: If file is from Appstore of sureMDM example: false NotificationPolicyJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Notification Policy PayLoad: description: | Job specific payload
{ "PolicySettings":{ "BatteryPolicy":true, "ConnectionPolicy":true, "DataUsage":true, "inKb":false, "inMb":false, "inGb":true, "DeviceOnlineNotification":true, "SIMChangeNotication":true, "PermissionGrantedNotification":true, "SureMDMAlert":true, "DeviceAlert":true, "EmailAlert":true, "SMSAlert":true, "EmailAddresses":"ab@a.com ", "PhoneNumber":"+911234567890", "BatteryPercentage":10, "ConnectionTime":"1", "DataUsageQuantity":1, "PluginAlert":false, "UnPluggedAlert":false, "DisableNotificationPolicy":false } } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/NotificationPolicyPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear", "any"
"windows_ce", "windows_mobile", "windows" example: FolderId: null JobName: test job JobType: notification_policy Platform: android PayLoad: - eyJQb2xpY3lTZXR0aW5ncyI6eyJCYXR0ZXJ5UG9saWN5Ijp0cnVlLCJDb25uZWN0aW9uUG9saWN5Ijp0cnVlLCJEYXRhVXNhZ2UiOnRydWUsImluS2IiOmZhbHNlLCJpbk1iIjpmYWxzZSwiaW5HYiI6dHJ1ZSwiRGV2aWNlT25saW5lTm90aWZpY2F0aW9uIjp0cnVlLCJTSU1DaGFuZ2VOb3RpY2F0aW9uIjp0cnVlLCJQZXJtaXNzaW9uR3JhbnRlZE5vdGlmaWNhdGlvbiI6dHJ1ZSwiU3VyZU1ETUFsZXJ0Ijp0cnVlLCJEZXZpY2VBbGVydCI6dHJ1ZSwiRW1haWxBbGVydCI6dHJ1ZSwiU01TQWxlcnQiOnRydWUsIkVtYWlsQWRkcmVzc2VzIjoiYWJAYS5jb20gIiwiUGhvbmVOdW1iZXIiOiIrOTExMjM0NTY3ODkwIiwiQmF0dGVyeVBlcmNlbnRhZ2UiOjEwLCJDb25uZWN0aW9uVGltZSI6IjEiLCJEYXRhVXNhZ2VRdWFudGl0eSI6MSwiUGx1Z2luQWxlcnQiOmZhbHNlLCJVblBsdWdnZWRBbGVydCI6ZmFsc2UsIkRpc2FibGVOb3RpZmljYXRpb25Qb2xpY3kiOmZhbHNlfX0= NotificationPolicyPayLoad: type: array items: type: object properties: PolicySettings: type: object properties: BatteryPolicy: type: boolean description: Battery policy status(Notifies when battery is less than value set in BatteryPercentage) example: true ConnectionPolicy: type: boolean description: Connection policy status(Notifies when battery is less than value set in BatteryPercentage) example: true DataUsage: type: boolean description: Data-Usage policy status(Notifies when data usage is above specified in DataUsageQuantity) example: true inKb: type: boolean description: Whether data usage limit is in KB example: false inMb: type: boolean description: Whether data usage limit is in MB example: false inGb: type: boolean description: Whether data usage limit is in GB example: true DeviceOnlineNotification: type: boolean description: Get notification when device comes online example: true SIMChangeNotication: type: boolean description: Get notification when SIM is changed on device example: true PermissionGrantedNotification: type: boolean description: Whether is device Rooted example: false SureMDMAlert: type: boolean description: Get notifications on sureMDM console example: true DeviceAlert: type: boolean description: Get notifications on device example: true EmailAlert: type: boolean description: Get notifications via Email example: true SMSAlert: type: boolean description: Get notifications via SMS example: true EmailAddresses: type: string description: Email address(required if EmailAlert is set true) PhoneNumber: type: string description: Phone number (required if SMSAlert is set true) BatteryPercentage: type: integer description: Battery percentage example: 78 ConnectionTime: type: string description: Device offline time limit(in minute) example: 10 DataUsageQuantity: type: integer description: Data-Usage limit example: 3 PluginAlert: type: boolean description: Whether device is plugged in to charging example: true UnPluggedAlert: type: boolean description: Whether device is unplugged from charging example: false DisableNotificationPolicy: type: boolean description: Desable notification policy example: false GeoFencingJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Geo Fencing job PayLoad: description: | Job specific payload
{ "EnableFence":true, "Fence":[ { "Name":"fds", "Latitude":21.181658623340844, "Longitude":74.45293641393755, "Radius":262127.69998481227, "GeoFenceUnit":0, "Fence":"Geo Fence" } ], "JobOut":[ { "JobID":"33701abf-68dd-410c-834a-dcbf5669f586", "JobName":"Text_Message1", "Platform":"ANY", "Type":"TextMessage" } ], "JobIn":[ { "JobID":"fdaaaae2-9388-4fae-a51d-762d4e286883", "JobName":"Text_Message2", "Platform":"ANY", "Type":"TextMessage" } ], "FenceJobInDeployDelay":"0", "FenceJobOutDeployDelay":"0", "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":false, "FenceJobInEmailId":"", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":false, "FenceJobOutEmailId":"" } Note: PayLoad should be in escaped string form as presented in request sample allOf: - $ref: '#/components/schemas/GeoFencingPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "windows", "iOS" example: FolderId: null JobName: test_job JobType: GEO_FENCING Platform: Android PayLoad: - '{"EnableFence":true,"Fence":[{"Name":"fds","Latitude":21.181658623340844,"Longitude":74.45293641393755,"Radius":262127.69998481227,"GeoFenceUnit":0,"Fence":"Geo Fence"}],"JobOut":[{"JobID":"33701abf-68dd-410c-834a-dcbf5669f586","JobName":"Text_Message1","Platform":"ANY","Type":"TextMessage"}],"JobIn":[{"JobID":"fdaaaae2-9388-4fae-a51d-762d4e286883","JobName":"Text_Message2","Platform":"ANY","Type":"TextMessage"}],"FenceJobInDeployDelay":"0","FenceJobOutDeployDelay":"0","FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":false,"FenceJobInEmailId":"","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":false,"FenceJobOutEmailId":""}' GeoFencingPayLoad: type: array items: type: object properties: EnableFence: type: boolean description: Whether fence is enabled or not example: true Fence: type: array description: Fencing details items: type: object properties: Name: type: string description: Name of the fence example: Test42 Latitude: type: integer description: Latitude of selected fence example: 21.181658623340844 Longitude: type: integer description: Longitude of selected fence example: 74.45293641393755 Radius: type: integer description: Radius of selected fence (Default unit - Meter) example: 262127.69998481227 GeoFenceUnit: type: integer description: 'Unit of Radius, 0-Meter, 1-Kilometer, 2-Mile, 3-Feet' example: 0 Fence: type: string description: Type of Fence example: Geo Fence JobOut: type: array description: Jobs to apply when device moves outside of fence items: type: object properties: JobID: type: string description: JobID of the job to be activated example: 33701abf-68dd-410c-834a-dcbf5669f586 JobName: type: string description: Name of the job to be activated designated area example: Text_Message1 Platform: type: string description: Platform of the Job example: ANY Type: type: string description: Type of the Job example: TextMessage JobIn: type: array description: Jobs to apply when device moves inside of fence items: type: object properties: JobID: type: string description: JobID of the job to be activated example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of the job to be activated example: Text_Message2 Platform: type: string description: Platform of the Job example: ANY Type: type: string description: Type of the job example: TextMessage FenceJobInDeployDelay: type: integer description: Delay Time to deploy job after device is reported to be in radius (In minutes) example: 0 FenceJobOutDeployDelay: type: integer description: Delay Time to deploy job after device is reported to be outside the radius (In minutes) example: 0 FenceJobInDeviceAlert: type: boolean description: 'If device is inside the fence, it will send alert to device' example: true FenceJobInMDMAlert: type: boolean description: 'If device is inside the fence, it will send alert to console' example: true FenceJobInEmailAlert: type: boolean description: 'If device is inside the fence, it will send an email reporting the same' example: false FenceJobInEmailId: type: string description: 'Email ID to send email, if device is inside the fence' example: ' ' FenceJobOutDeviceAlert: type: boolean description: | If device is outside the fence, it will send alert to device
Note: It will not work for iOS devices example: true FenceJobOutMDMAlert: type: boolean description: 'If device is outside the fence, it will send alert to console' example: true FenceJobOutEmailAlert: type: boolean description: 'If device is outside the fence, it will send an email reporting the same' example: false FenceJobOutEmailId: type: string description: 'Email ID to send email, if device is outside the fence' example: false NixAgentSettingJob: type: object properties: FolderId: type: string description: ID of the folder where the job is stored. Set to `null` for default folder. example: null JobID: type: string description: ID of the job. Set to `null` for a new job. example: null JobName: type: string description: Name of the job to be created. example: usernameios_agentsetting JobType: type: string description: | Type of the job. In this case, "nixagent_settings" represents a Nix agent settings job. example: nixagent_settings PayLoad: type: array description: | | **Platform** | **Payload (Click to expand)** | |------------------|------------------------------| | Android |
Base64-encoded Payload
`eyJUaW1lU3luY2hyb25pemF0aW9uU2V0dGluZ3MiOnsiVGltZVN5bmMiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlBlcmlvZGljVXBkYXRlU2V0dGluZ3MiOnsiUGVyaW9kaWNVcGRhdGUiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlNjaGVkdWxlZFJlYm9vdFNldHRpbmdzIjp7IlNjaGVkdWxlZFJlYm9vdCI6ZmFsc2UsIlNjaGVkdWxlZFJlYm9vdFRpbWUiOiIwMDowMCIsIkRheXNPZlRoZVdlZWsiOnsiTW9uZGF5IjpmYWxzZSwiVHVlc2RheSI6ZmFsc2UsIldlZG5lc2RheSI6ZmFsc2UsIlRodXJzZGF5IjpmYWxzZSwiRnJpZGF5IjpmYWxzZSwiU2F0dXJkYXkiOmZhbHNlLCJTdW5kYXkiOmZhbHNlfX0sIlNjaGVkdWxlZFNodXREb3duU2V0dGluZ3MiOnsiU2NoZWR1bGVkU2h1dERvd25FbmFibGVkIjpmYWxzZSwiU2NoZWR1bGVkU2h1dERvd25UaW1lIjoiMDA6MDAiLCJEYXlzT2ZUaGVXZWVrIjp7Ik1vbmRheSI6ZmFsc2UsIlR1ZXNkYXkiOmZhbHNlLCJXZWRuZXNkYXkiOmZhbHNlLCJUaHVyc2RheSI6ZmFsc2UsIkZyaWRheSI6ZmFsc2UsIlNhdHVyZGF5IjpmYWxzZSwiU3VuZGF5IjpmYWxzZX19LCJTY2hlZHVsZWRQb3dlck9uVGltZVNldHRpbmdzIjp7IkVuYWJsZVNjaGVkdWxlUG93ZXJPbiI6ZmFsc2UsIlNjaGVkdWxlZFBvd2VyT25UaW1lIjoiMDA6MDAifSwiQ29ubmVjdGlvblR5cGUiOiJBTlkiLCJOaXhQYXNzd29yZCI6ZmFsc2UsIlBhc3N3b3JkIjoiIiwiTml4UGFzc3dvcmRQcmVmZXJlbmNlIjoiMCIsIlByZXZlbnREZXJlZ2lzdGVyQW5kVW5pbnN0YWxsIjpmYWxzZSwiQXV0b0Rpc21pc3NhbFRpbWVvdXQiOjEwfQ==`
| | Windows |
Base64-encoded Payload
`eyJUaW1lU3luY2hyb25pemF0aW9uU2V0dGluZ3MiOnsiVGltZVN5bmMiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlBlcmlvZGljVXBkYXRlU2V0dGluZ3MiOnsiUGVyaW9kaWNVcGRhdGUiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlNjaGVkdWxlZFJlYm9vdFNldHRpbmdzIjp7IlNjaGVkdWxlZFJlYm9vdCI6ZmFsc2UsIlNjaGVkdWxlZFJlYm9vdFRpbWUiOiIyMjo1MyIsIkRheXNPZlRoZVdlZWsiOnsiTW9uZGF5IjpmYWxzZSwiVHVlc2RheSI6ZmFsc2UsIldlZG5lc2RheSI6ZmFsc2UsIlRodXJzZGF5IjpmYWxzZSwiRnJpZGF5IjpmYWxzZSwiU2F0dXJkYXkiOmZhbHNlLCJTdW5kYXkiOmZhbHNlfX0sIlNjaGVkdWxlZFNodXREb3duU2V0dGluZ3MiOnsiU2NoZWR1bGVkU2h1dERvd25FbmFibGVkIjpmYWxzZSwiU2NoZWR1bGVkU2h1dERvd25UaW1lIjoiMjI6NTMiLCJEYXlzT2ZUaGVXZWVrIjp7Ik1vbmRheSI6ZmFsc2UsIlR1ZXNkYXkiOmZhbHNlLCJXZWRuZXNkYXkiOmZhbHNlLCJUaHVyc2RheSI6ZmFsc2UsIkZyaWRheSI6ZmFsc2UsIlNhdHVyZGF5IjpmYWxzZSwiU3VuZGF5IjpmYWxzZX19LCJTY2hlZHVsZWRQb3dlck9uVGltZVNldHRpbmdzIjp7IkVuYWJsZVNjaGVkdWxlUG93ZXJPbiI6ZmFsc2UsIlNjaGVkdWxlZFBvd2VyT25UaW1lIjoiMjI6NTMifSwiQ29ubmVjdGlvblR5cGUiOiJBTlkiLCJOaXhQYXNzd29yZCI6ZmFsc2UsIlBhc3N3b3JkIjoiIiwiTml4UGFzc3dvcmRQcmVmZXJlbmNlIjoiMCIsIlByZXZlbnREZXJlZ2lzdGVyQW5kVW5pbnN0YWxsIjpmYWxzZSwiQXV0b0Rpc21pc3NhbFRpbWVvdXQiOjEwfQ==`
| | iOS |
Base64-encoded Payload
`eyJQcm9maWxlU2NvcGUiOiJEZXZpY2VFbnJvbGxtZW50IiwiUGFzc3dvcmRQcm90ZWN0QWdlbnRTZXR0aW5ncyI6eyJOaXhQYXNzd29yZCI6ZmFsc2UsIlBhc3N3b3JkIjoiIiwiTml4UGFzc3dvcmRQcmVmZXJlbmNlIjoiMCJ9LCJDaGFuZ2VEZXZpY2VOYW1lU2V0dGluZ3MiOnsiRGV2aWNlTmFtZVR5cGUiOiIifSwiVW5lbnJvbGxTZXR0aW5ncyI6eyJ1bmVucm9sbCI6ZmFsc2V9fQ==`
| | macOS |
Base64-encoded Payload
`eyJQYXNzd29yZCI6IiIsImlzUGFzc3dvcmRFbmFibGVkIjpmYWxzZSwiaXNOaXhtYWNPU1Rhc2tiYXJJY29uRW5hYmxlZCI6ZmFsc2UsIlVuQXR0ZW5kZWRSZW1vdGVTdXBwb3J0IjoiYWxsb3ciLCJ1bmVucm9sbE1hY09TIjpmYWxzZSwibWFjT1NBZ2VudEF1dG9VcGRhdGUiOiJkZWZhdWx0In0=`
| Job specific payload.
PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64).

Sample JSON before Base64 encoding: { "ProfileScope": "DeviceEnrollment", "PasswordProtectAgentSettings": { "NixPassword": false, "Password": "", "NixPasswordPreference": "0" }, "ChangeDeviceNameSettings": { "DeviceNameType": "" }, "UnenrollSettings": { "unenroll": false } } items: type: string example: eyJUaW1lU3luY2hyb25pemF0aW9uU2V0dGluZ3MiOnsiVGltZVN5bmMiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlBlcmlvZGljVXBkYXRlU2V0dGluZ3MiOnsiUGVyaW9kaWNVcGRhdGUiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlNjaGVkdWxlZFJlYm9vdFNldHRpbmdzIjp7IlNjaGVkdWxlZFJlYm9vdCI6ZmFsc2UsIlNjaGVkdWxlZFJlYm9vdFRpbWUiOiIwMDowMCIsIkRheXNPZlRoZVdlZWsiOnsiTW9uZGF5IjpmYWxzZSwiVHVlc2RheSI6ZmFsc2UsIldlZG5lc2RheSI6ZmFsc2UsIlRodXJzZGF5IjpmYWxzZSwiRnJpZGF5IjpmYWxzZSwiU2F0dXJkYXkiOmZhbHNlLCJTdW5kYXkiOmZhbHNlfX0sIlNjaGVkdWxlZFNodXREb3duU2V0dGluZ3MiOnsiU2NoZWR1bGVkU2h1dERvd25FbmFibGVkIjpmYWxzZSwiU2NoZWR1bGVkU2h1dERvd25UaW1lIjoiMDA6MDAiLCJEYXlzT2ZUaGVXZWVrIjp7Ik1vbmRheSI6ZmFsc2UsIlR1ZXNkYXkiOmZhbHNlLCJXZWRuZXNkYXkiOmZhbHNlLCJUaHVyc2RheSI6ZmFsc2UsIkZyaWRheSI6ZmFsc2UsIlNhdHVyZGF5IjpmYWxzZSwiU3VuZGF5IjpmYWxzZX19LCJTY2hlZHVsZWRQb3dlck9uVGltZVNldHRpbmdzIjp7IkVuYWJsZVNjaGVkdWxlUG93ZXJPbiI6ZmFsc2UsIlNjaGVkdWxlZFBvd2VyT25UaW1lIjoiMDA6MDAifSwiQ29ubmVjdGlvblR5cGUiOiJBTlkiLCJOaXhQYXNzd29yZCI6ZmFsc2UsIlBhc3N3b3JkIjoiIiwiTml4UGFzc3dvcmRQcmVmZXJlbmNlIjoiMCIsIlByZXZlbnREZXJlZ2lzdGVyQW5kVW5pbnN0YWxsIjpmYWxzZSwiQXV0b0Rpc21pc3NhbFRpbWVvdXQiOjEwfQ== Platform: type: string description: | Platform Supported: "Android", "Windows", "IOS", "macOS" example: Android addtionalInformation: type: string description: Any additional information related to the job. example: "" # NixAgentSettingJob: # allOf: # - $ref: '#/components/schemas/JobCreateModel' # - type: object # properties: # JobType: # type: string # description: | # Nix agent settings job # PayLoad: # description: | # Job specific payload
# [ # { # "TimeSynchronizationSettings":{ # "TimeSync":true, # "Periodicity":"MINUTES_30" # }, # "PeriodicUpdateSettings":{ # "PeriodicUpdate":true, # "Periodicity":"HOUR_6" # }, # "ScheduledRebootSettings":{ # "ScheduledReboot":true, # "ScheduledRebootTime":"22:53", # "DaysOfTheWeek":{ # "Monday":false, # "Tuesday":true, # "Wednesday":true, # "Thursday":true, # "Friday":true, # "Saturday":true, # "Sunday":true # } # }, # "ScheduledShutDownSettings":{ # "ScheduledShutDownEnabled":true, # "ScheduledShutDownTime":"22:53", # "DaysOfTheWeek":{ # "Monday":true, # "Tuesday":true, # "Wednesday":true, # "Thursday":true, # "Friday":true, # "Saturday":true, # "Sunday":true # } # }, # "ConnectionType":"ANY", # "NixPassword":true, # "Password":"1234" # } # ] # Note: # PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). # allOf: # - $ref: '#/components/schemas/NixAgentSettingPayLoad' # Platform: # type: string # description: | # Name of platform.
# Platform Supported: android, iOS, windows_mobile, windows # example: # FolderId: null # JobName: test job # JobType: nixagent_settings # Platform: android # PayLoad: # - eyJUaW1lU3luY2hyb25pemF0aW9uU2V0dGluZ3MiOnsiVGltZVN5bmMiOnRydWUsIlBlcmlvZGljaXR5IjoiTUlOVVRFU18zMCJ9LCJQZXJpb2RpY1VwZGF0ZVNldHRpbmdzIjp7IlBlcmlvZGljVXBkYXRlIjp0cnVlLCJQZXJpb2RpY2l0eSI6IkhPVVJfNiJ9LCJTY2hlZHVsZWRSZWJvb3RTZXR0aW5ncyI6eyJTY2hlZHVsZWRSZWJvb3QiOnRydWUsIlNjaGVkdWxlZFJlYm9vdFRpbWUiOiIyMjo1MyIsIkRheXNPZlRoZVdlZWsiOnsiTW9uZGF5IjpmYWxzZSwiVHVlc2RheSI6dHJ1ZSwiV2VkbmVzZGF5Ijp0cnVlLCJUaHVyc2RheSI6dHJ1ZSwiRnJpZGF5Ijp0cnVlLCJTYXR1cmRheSI6dHJ1ZSwiU3VuZGF5Ijp0cnVlfX0sIlNjaGVkdWxlZFNodXREb3duU2V0dGluZ3MiOnsiU2NoZWR1bGVkU2h1dERvd25FbmFibGVkIjp0cnVlLCJTY2hlZHVsZWRTaHV0RG93blRpbWUiOiIyMjo1MyIsIkRheXNPZlRoZVdlZWsiOnsiTW9uZGF5Ijp0cnVlLCJUdWVzZGF5Ijp0cnVlLCJXZWRuZXNkYXkiOnRydWUsIlRodXJzZGF5Ijp0cnVlLCJGcmlkYXkiOnRydWUsIlNhdHVyZGF5Ijp0cnVlLCJTdW5kYXkiOnRydWV9fSwiQ29ubmVjdGlvblR5cGUiOiJBTlkiLCJOaXhQYXNzd29yZCI6dHJ1ZSwiUGFzc3dvcmQiOiIxMjM0In0= NixAgentSettingPayLoad: type: object properties: TimeSynchronizationSettings: type: object properties: TimeSync: type: boolean description: | To enable time sync with server. Note: It is applicable for Windows Mobile and Android Devices example: true Periodicity: type: string description: Periodicity of Sync example: MINUTES_15 PeriodicUpdateSettings: type: object properties: PeriodicUpdate: type: boolean description: | Whether to enable device info to update periodically. <>Note: It is applicable for Windows Mobile and Android Devices example: true Periodicity: type: string description: Periodicity of Sync example: HOURS_3 ScheduledRebootSettings: type: object properties: ScheduledReboot: type: boolean description: | Whether to perform scheduled reboot or not ?. Note: It is applicable for Windows Mobile and Android Devices example: true ScheduledRebootTime: type: string description: Time of reboot. example: 1373 DaysOfTheWeek: type: object properties: Monday: type: boolean description: To enable schedule reboot on Monday example: true Tuesday: type: boolean description: To enable schedule reboot on Tuesday example: true Wednesday: type: boolean description: To enable schedule reboot on Wednesday example: true Thursday: type: boolean description: To enable schedule reboot on Thursday example: true Friday: type: boolean description: To enable schedule reboot on Friday example: true Saturday: type: boolean description: To enable schedule reboot on Saturday example: true Sunday: type: boolean description: To enable schedule reboot on Sunday example: true ScheduledShutDownSettings: type: object properties: ScheduledReboot: type: boolean description: | Whether to perform scheduled reboot or not ?. Note: It is applicable for Windows Mobile and Android Devices example: true ScheduledRebootTime: type: string description: Time of reboot. example: 1373 DaysOfTheWeek: type: object properties: Monday: type: boolean description: To enable schedule reboot on Monday example: true Tuesday: type: boolean description: To enable schedule reboot on Tuesday example: true Wednesday: type: boolean description: To enable schedule reboot on Wednesday example: true Thursday: type: boolean description: To enable schedule reboot on Thursday example: true Friday: type: boolean description: To enable schedule reboot on Friday example: true Saturday: type: boolean description: To enable schedule reboot on Saturday example: true Sunday: type: boolean description: To enable schedule reboot on Sunday example: true ConnectionType: type: string description: 'Connection type of device. It has WIFI, ANY, MOBILE_DATA options' example: ANY NixPassword: type: boolean description: | To enable password for Nix Agent. Note: It is applicable for all platforms. example: true Password: type: string description: Password for Nix Agent example: 12345 TimeFencingJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Time Fencing job PayLoad: description: | Job specific payload
{ "EnableFence":true, "JobIn":[ { "JobID":"70800079-4890-4ab2-a97b-111966d35052", "JobName":"text", "Platform":"ANY", "Type":"TextMessage" } ], "JobOut":[ { "JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce", "JobName":"Text_Message1", "Platform":"ANY", "Type":"TextMessage" } ], "SelectFence":{ "TimeFenceRows":[ { "TimeZoneType":1, "StartTime":"01:00", "EndTime":"13:00", "Days":[ "1", "2", "3", "4", "5", "6", "7" ] } ] }, "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":true, "FenceJobInEmailId":"abc@gmail.com", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":true, "FenceJobOutEmailId":"abc@gmail.com" } Note: PayLoad should be in escaped string form as presented in request sample allOf: - $ref: '#/components/schemas/TimeFencingPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "windows", "iOS" example: FolderId: null JobName: test job JobType: TIME_FENCING Platform: android PayLoad: - '{"EnableFence":true,"JobIn":[{"JobID":"70800079-4890-4ab2-a97b-111966d35052","JobName":"text","Platform":"ANY","Type":"TextMessage"}],"JobOut":[{"JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce","JobName":"Text_Message1","Platform":"ANY","Type":"TextMessage"}],"SelectFence":{"TimeFenceRows":[{"TimeZoneType":1,"StartTime":"01:00","EndTime":"13:00","Days":["1","2","3","4","5","6","7"]}]},"FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":true,"FenceJobInEmailId":"abc@gmail.com","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":true,"FenceJobOutEmailId":"abc@gmail.com"}' TimeFencingPayLoad: type: array items: type: object properties: EnableFence: type: boolean description: Whether fence is enabled example: true JobIn: type: array description: Jobs to apply when device moves inside of fence items: type: object properties: JobID: type: string description: JobID of the Job to be activated example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves inside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage JobOut: type: array description: Jobs to apply when device moves outside of fence items: type: object properties: JobID: type: string description: JobID of Job to be activated if device moves inside the designated area example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves outside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage SelectFence: type: object description: Time fence details properties: TimeFenceRows: type: array items: type: object properties: TimeZoneType: type: integer description: 'For Console Time, TimeZone type is 1 and for Device Time it is 0' example: 1 StartTime: type: string description: | Starting Time of the fence
Note: If TimeZoneType is Console Time i.e. 1, than time will be converted into GMT time zone. example: '09:00' EndTime: type: string description: | Ending Time of the fence
Note: If TimeZoneType is Console Time i.e. 1, than time will be converted into GMT time zone. example: '13:00' Days: type: array description: | Days of the week on which Time Fence activates automatically
Note: 1 indicates Monday and so on, 7 indicates Sunday items: type: string example: '1,2,3,4,5,6,7' FenceJobInDeviceAlert: type: boolean description: It sends an alert to device when the time fence starts example: true FenceJobInMDMAlert: type: boolean description: It sends an alert to MDM when the time fence starts example: true FenceJobInEmailAlert: type: boolean description: It sends an alert to specified email when the time fence starts example: true FenceJobInEmailId: type: string description: It sends an alert to email when the time fence starts example: abc@gmail.com FenceJobOutDeviceAlert: type: boolean description: It sends an alert to device when the time fence ends example: true FenceJobOutMDMAlert: type: boolean description: It sends an alert to MDM when the time fence ends example: true FenceJobOutEmailAlert: type: boolean description: It sends an alert to specified email when the time fence ends example: true FenceJobOutEmailId: type: string description: It sends an alert to email when the time fence ends example: abc@gmail.com NetworkFencingJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Network Fencing job PayLoad: description: | Job specific payload
{ "EnableFence":true, "JobIn":[ { "JobID":"70800079-4890-4ab2-a97b-111966d35052", "JobName":"text", "Platform":"ANY", "Type":"TextMessage" } ], "JobOut":[ { "JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce", "JobName":"text2", "Platform":"ANY", "Type":"TextMessage" } ], "FenceJobInDeployDelay":"5", "FenceJobOutDeployDelay":"5", "SelectFence":{ "NetworkFenceRows":[ { "ssid":"gb" } ] }, "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":true, "FenceJobInEmailId":"abc@gmail.com", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":true, "FenceJobOutEmailId":"abc@gmail.com" } Note: PayLoad should be in escaped string form as presented in request sample allOf: - $ref: '#/components/schemas/NetworkFencingPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android" example: FolderId: null JobName: test job JobType: NETWORK_FENCING Platform: android PayLoad: - '{"EnableFence":true,"JobIn":[{"JobID":"70800079-4890-4ab2-a97b-111966d35052","JobName":"text","Platform":"ANY","Type":"TextMessage"}],"JobOut":[{"JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce","JobName":"text2","Platform":"ANY","Type":"TextMessage"}],"FenceJobInDeployDelay":"5","FenceJobOutDeployDelay":"5","SelectFence":{"NetworkFenceRows":[{"ssid":"gb"}]},"FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":true,"FenceJobInEmailId":"abc@gmail.com","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":true,"FenceJobOutEmailId":"abc@gmail.com"}' NetworkFencingPayLoad: type: array items: type: object properties: EnableFence: type: string description: Whether network fence is enabled JobIn: type: object description: Jobs to apply when device moves inside of fence properties: JobID: type: string description: JobID of Job to be activated if device moves inside the designated area example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves inside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage JobOut: type: object description: Jobs to apply when device moves outside of fence properties: JobID: type: string description: JobID of Job to be activated if device moves inside the designated area example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves outside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage FenceJobInDeployDelay: type: string description: Delay in minutes after device is connected to provided SSID example: 5 FenceJobOutDeployDelay: type: string description: Delay in minutes after device is disconnected to provided SSID example: 5 SelectFence: type: object description: fence details properties: NetworkFenceRows: type: object properties: SSID: type: string description: SSID of WiFi where job in or job out acts example: 42Gears Office FenceJobInDeviceAlert: type: boolean description: It sends an alert to device when the time fence starts example: true FenceJobInMDMAlert: type: boolean description: It sends an alert to MDM when the time fence starts example: true FenceJobInEmailAlert: type: boolean description: It sends an alert to specified email when the time fence starts example: true FenceJobInEmailId: type: string description: It sends an alert to email when the time fence starts example: abc@gmail.com FenceJobOutDeviceAlert: type: boolean description: It sends an alert to device when the time fence ends example: true FenceJobOutMDMAlert: type: boolean description: It sends an alert to MDM when the time fence ends example: true FenceJobOutEmailAlert: type: boolean description: It sends an alert to specified email when the time fence ends example: true FenceJobOutEmailId: type: string description: It sends an alert to email when the time fence ends example: abc@gmail.com WiFiConfigJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Wi-fi Configuration Settings PayLoad: description: | Job specific payload
{ "SSID":"test", "SecurityType":1, "Password":"12345678", "AutoConnect":false, "PortableHotspot":true, "HiddenNetwork":false } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/WiFiConfigPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear", "AndroidVR"
Note: Hotspot setting is supported for androID only example: FolderId: null JobName: test job JobType: wifi configuration settings Platform: android PayLoad: - eyJTU0lEIjoidGVzdCIsIlNlY3VyaXR5VHlwZSI6MSwiUGFzc3dvcmQiOiIxMjM0NTY3OCIsIkF1dG9Db25uZWN0IjpmYWxzZSwiUG9ydGFibGVIb3RzcG90Ijp0cnVlLCJIaWRkZW5OZXR3b3JrIjpmYWxzZX0= WiFiConfigPayLoad: type: array items: type: object properties: SSID: type: string description: Wi-Fi / Hotspot name example: true SecurityType: type: integer description: | Type of security(for Hostspot) 0: Open 1: WEP 2: WPA/WPA2 PSK example: 1 Password: type: string description: | Password of Wi-Fi to connect / Passwors of hotspot to be created example: 12345678 AutoConnect: type: boolean description: Enable auto connect for Wi-Fi settings example: false PortableHotspot: type: boolean description: For creating Hotspot example: true HiddenNetwork: type: boolean description: Make hotspot network hidden example: true DeviceMigrationJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Device Migration between Groups PayLoad: description: | Job specific payload
{ "SelectedGrpId": "5e1c484f-972f-4c06-8f84-aae0e7f7b9fe" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/DeviceMigrationPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "any" example: FolderId: null JobName: test job JobType: move_device Platform: any PayLoad: - eyJTZWxlY3RlZEdycElkIjoiNWUxYzQ4NGYtOTcyZi00YzA2LThmODQtYWFlMGU3ZjdiOWZlIn0= DeviceMigrationPayLoad: type: array items: type: object properties: SelectedGrpId: type: string description: ID of selected group example: 9dd587ed-25d9-48ea-b57c-d664c941971c SMSTrackingJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | SMS Tracking job PayLoad: description: | Job specific payload
{ "SMSTracking":"1", "Periodicity":"16" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/SMSTrackingPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear" addtionalInformation: type: string description: Any additional information related to the job. example: "" example: JobName: test job JobType: SMS_TRACKING Platform: android PayLoad: - eyJTTVNUcmFja2luZyI6IjEiLCJQZXJpb2RpY2l0eSI6MjB9 addtionalInformation: "" SMSTrackingPayLoad: type: array items: type: object properties: SMSTracking: type: string description: | SMS log tracking status
"0": Enable
"1": Desable
example: '1' Periodicity: type: string description: Periodicity of tracking in minutes
(if SMS tracking is enabled) example: 15 CallTrackingJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Call Tracking job PayLoad: description: | Job specific payload
{ "CallTracking":"1", "Periodicity":"15" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/CallTrackingPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear" example: FolderId: null JobName: test job JobType: CALL_TRACKING Platform: android PayLoad: - eyJDYWxsVHJhY2tpbmciOiIxIiwiUGVyaW9kaWNpdHkiOiIxNSJ9 CallTrackingPayLoad: type: array items: type: object properties: CallTracking: type: string description: | Call log tracking status
"0": Enable
"1": Desable
example: '1' Periodicity: type: string description: Periodicity of tracking in minutes
(if Call tracking is enabled) example: 15 AppSettingsJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | App Settings job PayLoad: description: | Job specific payload
{ "AppName":[ "Alexa" ], "Packages":[ "com.amazon.dee.app" ], "StartUpDelay":[ "12" ], "Action":"ClearData", "PhonePin":"0000" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/AppSettingsPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "Linux" example: FolderId: null JobName: test job JobType: NEW_APP_SETTINGS Platform: android PayLoad: - eyJBcHBOYW1lIjpbIkFsZXhhIl0sIlBhY2thZ2VzIjpbImNvbS5hbWF6b24uZGVlLmFwcCJdLCJTdGFydFVwRGVsYXkiOlsiMTIiXSwiQWN0aW9uIjoiQ2xlYXJEYXRhIiwiUGhvbmVQaW4iOiIwMDAwIn0= AppSettingsPayLoad: type: array items: type: object properties: AppName: type: array description: | Name of App(s) items: type: string description: '' example: - Alexa - Amaze Packages: type: array description: | Name of app package(s) items: type: string description: '' example: - com.amazon.dee.app - com.amaze.filemanager StartUpDelay: type: array description: App startup delay in sec items: type: string description: '' example: - '12' Action: type: string description: | Action to be performed - LockApps - RunAtStartup - Uninstall - ClearData - VisibleList - InvisibleList Note: For Linux platform only Uninstall is supported example: 15 PhonePin: type: string description: Device Lock pin example: 1234 RemoteWipeJob: type: object properties: FolderId: type: string description: ID of the folder where the job is stored. Set to `null` for default folder. example: null JobID: type: string description: ID of the job. Set to `null` for a new job. example: null JobName: type: string description: | Name of the job to be created. example: remotewipe_username789 JobType: type: string description: | Type of the job. In this case, "Wipe" represents a remote wipe job.
For IOS, the job type should be **IOS_WIPE**. example: Wipe PayLoad: type: array description: Base64 encoded payload for the job. This payload includes the job configuration. items: type: string example: eyJJc1NjaGVkdWxlV2lwZSI6ZmFsc2UsIkFuZHJvaWRXaXBlQWxsRGF0YSI6IjAiLCJHcmFjZVBlcmlvZCI6IjAiLCJJc1dpcGVPblJvb3QiOmZhbHNlfQ== Platform: type: string description: | Name of platform
Platform Supported: "android", "any", "ios" , "windows_ce",
"windows_mobile" example: android addtionalInformation: type: string description: Any additional information related to the job. example: "" # RemoteWipeJob: # allOf: # - $ref: '#/components/schemas/JobCreateModel' # - type: object # properties: # JobType: # type: string # description: | # Remote Data Wipe job # PayLoad: # description: | # Job specific payload
# { # "WipeAllData":true, # "IsScheduleWipe":true, # "GracePeriod":"4", # "IsWipeOnRoot":false # } # Note: # PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). # allOf: # - $ref: '#/components/schemas/RemoteWipePayLoad' # Platform: # type: string # description: | # Name of platform
# Platform Supported: "android", "any", "windows_ce",
"windows_mobile" # example: # FolderId: null # JobName: test jobdx # JobType: Wipe # Platform: android # PayLoad: # - eyJXaXBlQWxsRGF0YSI6dHJ1ZSwiSXNTY2hlZHVsZVdpcGUiOnRydWUsIkdyYWNlUGVyaW9kIjoiNCIsIklzV2lwZU9uUm9vdCI6ZmFsc2V9 RemoteWipePayLoad: type: array items: type: object properties: WipeAllData: type: boolean description: Wipe out all data from device example: true IsScheduleWipe: type: boolean description: Set wipe out data from device at regular intervals example: false GracePeriod: type: integer description: Time Period interval to wipe out data (In Hours) example: false IsWipeOnRoot: type: integer description: Wipe Data even if device is rooted. By default it is false example: false LocationTrackingJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Location Tracking job PayLoad: description: | Job specific payload
{ "LocationTracking":true, "Periodicity":4 } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/LocationTrackingPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear" example: FolderId: null JobName: test job JobType: location Platform: android PayLoad: - eyJMb2NhdGlvblRyYWNraW5nIjp0cnVlLCJQZXJpb2RpY2l0eSI6NH0= LocationTrackingPayLoad: type: array items: type: object properties: LocationTracking: type: boolean description: Location tracking status example: true Periodicity: type: integer description: Periodicity of tracking in minutes(if Location tracking is enabled) example: 5 TextMessageJob: allOf: - $ref: '#/components/schemas/JobCreateModel' - type: object properties: JobType: type: string description: | Send Text Message PayLoad: description: | Job specific payload
{ "Subject":"Greetings !", "Body":"Happy Birthday!", "ReadNotification":false, "ForceRead":true, "EnableBuzz":true, "BuzzInterval":"12", "CloseDurationEnable":true, "Interval":"12", "RichTextBody":"", "RichTextHtml":"" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/TextMessagePayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear", "Linux"
"windows_ce", "windows_mobile", "windows" example: FolderId: null JobName: test job JobType: text_message Platform: android PayLoad: - eyJTdWJqZWN0IjoiR3JlZXRpbmdzICEiLCJCb2R5IjoiSGFwcHkgQmlydGhkYXkhIiwiUmVhZE5vdGlmaWNhdGlvbiI6ZmFsc2UsIkZvcmNlUmVhZCI6dHJ1ZSwiRW5hYmxlQnV6eiI6dHJ1ZSwiQnV6ekludGVydmFsIjoiMTIiLCJDbG9zZUR1cmF0aW9uRW5hYmxlIjp0cnVlLCJJbnRlcnZhbCI6IjEyIiwiUmljaFRleHRCb2R5IjoiIiwiUmljaFRleHRIdG1sIjoiIn0= TextMessagePayLoad: type: array items: type: object properties: Subject: type: string description: Subject of the Message which provides an overview to recepient about what message contains example: Urgent Attention Body: type: string description: Detailed Message example: Report to office at 12 noon Read Notification: type: boolean description: It notifies the user by sending notification example: true ForceRead: type: boolean description: It pop-ups the user with the message and forces to read the message sent by administrator example: false EnableBuzz: type: boolean description: Send buzz with message example: false BuzzInterval: type: string description: Buzz interval(in sec) example: '12' CloseDurationEnable: type: boolean description: Enable close message pop-up example: false Interval: type: string description: Close message pop-up after certain time specified(in sec) example: false RichTextBody: type: string description: 'It is body for Rich Text Message which supports formatting such as fonts, colors and text size' example: '' RichTextHTML: type: string description: It is similar to RichTextBody but this is mainly used for HTML webpages. But for editor file it behaves like PlainText. example: '' ResponseModel: type: object properties: message: type: string description: Response message example: '' data: type: string description: Response data example: '' status: type: string description: Request status example: true ReapplyJobResponseModel: type: object properties: message: type: string description: Response message indicating the result of the reapply operation. example: Job reapplied successfully. data: type: integer description: Number of jobs re-applied. example: 1 status: type: boolean description: Indicates whether the operation was successful. example: true ReapplyJobModel: type: object properties: DeviceId: description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). type: string example: 22c245da-df91-4bd2-9ee9-75a9ccf61142 JobID: description: 'ID of the job from job queue which you want to re-apply.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Job ID can be retrieved using the [Job queue status of device](#operation/jobQueueStatusOfDevice) API.' type: string example: 4DCB6E38-075C-4D55-9C3E-3D116EE04160 RowId: description: 'Row ID(Job queue ID) of the job from job queue which you want to re-apply.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Row ID can be retrieved using the [Job queue status of device](#operation/jobQueueStatusOfDevice) API.' type: string example: bba3d489-4503-41ff-a890-228a6250d72e Status: description: Status of the job. enum: - Error - Pending - Inprogress - Deployed type: string example: Error AfwSignupURLResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: AFW signup URL example: 'https://play.google.com/work/adminsignup?token=SAEQ6V41yØxAt-NadVbXb_LDtDnHBVS5m61cmozQ_5acWTC97tI' status: type: string description: Request status example: true GetAppsResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: array description: Response data items: type: object properties: GUID: type: string description: Unique identification of an application example: eb90dd4a-93f5-4718-b0bf-10586d84050b AppPackage: type: string description: Package name of an application example: com.nix AppTitle: type: string description: Title of an application example: Incredible India AppVersion: type: string description: 'A string value that represents the release version of an application code, as it should be shown to users.' example: 14.2 AppVersionCode: type: string description: 'An integer value that represents the version of an application code, relative to other versions.' example: 10 AppURL: type: string description: URL of an application that is uploaded in your SureMDM account example: 582347891/EAM/Android/9f3c2b71-6a4d-4c8e-91fa-7d2e5b6c1a90 AppDescription: type: string description: Description of an application example: null AppSize: type: string description: Application size in terms of Bytes example: null AppCategory: type: string description: Category of an application example: null AppIcon: type: string description: URL of the icon or icon in base64 format example: null IsS3Storage: type: boolean description: Whether application is stored in Amazon's S3 storage ? example: true PlatformType: type: string description: It states that application is made for which platform example: Android AppType: type: string description: It states that application is made for which platform example: Android status: type: string description: Request status example: true UploadFileResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: Signed URL where you can upload your file example: 'https://xyzabc9jobs.s3.amazonaws.com/071900004/File%20Store/Shared/test.txt?X-Amz-Expires=18000&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=1111111AAAA/20190703/us-east-1/s3/aws4_request&X-Amz-Date=20190703T133802Z&X-Amz-SignedHeaders=host&X-Amz-Signature=239dbd0feeca78112fa9688fb6c9f8ed5ce0a97c6e0fd05b0c6604c115322cb2' status: type: string description: Request status example: true ModifyPreApproveResponseModel: type: object properties: message: type: string description: Response message example: '' data: type: boolean description: Response data example: null status: type: string description: Request status example: true GetAllRecoveryKeysResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: array description: List of devices with their recovery keys items: type: object properties: deviceID: type: string description: Unique identifier of the device example: "__8c36618a-8e7e-4973-a3a3-9cc59a9d3b39" key: type: string description: Personal recovery key of the device example: "AAAA-AAAA-AAAA-AAAA-AAAA-AAAA" status: type: boolean description: Request status example: true GetRecoveryKeysResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: object properties: DeviceList: type: array description: List of devices with their recovery keys items: type: object properties: deviceID: type: string description: Unique identifier of the device example: "__11111111-1111-1111-1111-111111111111" key: type: string description: Recovery key of the device example: "AAAA-AAAA-AAAA-AAAA-AAAA-AAAA" example: - deviceID: "__11111111-1111-1111-1111-111111111111" key: "AAAA-AAAA-AAAA-AAAA-AAAA-AAAA" - deviceID: "__22222222-2222-2222-2222-222222222222" key: "AAAA-AAAA-AAAA-AAAA-AAAA-AAAA" - deviceID: "__33333333-3333-3333-3333-333333333333" key: "AAAA-AAAA-AAAA-AAAA-AAAA-AAAA" - deviceID: "__44444444-4444-4444-4444-444444444444" key: "AAAA-AAAA-AAAA-AAAA-AAAA-AAAA" total: type: integer description: Total number of devices example: 4 status: type: boolean description: Request status example: true GetSingleRecoveryKeyResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: Recovery key of the requested device example: "AAAA-AAAA-AAAA-AAAA-AAAA-AAAA" status: type: boolean description: Request status example: true AddPreapprovedDeviceResponseModel: type: object properties: message: type: string description: Response message example: '' data: type: array description: Job queue items: type: object properties: DeviceID: type: string description: Device Identification Number example: 8346194e-da9a-473d-83d2-c801d7068299 DeviceName: type: string description: Device Name example: test ID: type: string description: Unique Identification Number example: 5C:51:88:8C:28:B1 IDType: type: string description: example: '1' GroupID: type: string description: Unique Identification Number of a Group example: "null" GroupPath: type: string description: Group in which device gets enrolled example: Home TagName: type: string description: Name of a Tag example: Tag DeviceNotes: type: string description: Give additional information here example: Add notes here SerialNumber: type: string description: Device's Serial Number example: "null" EnableEnroll: type: string description: PhoneNumber: type: string description: Mobile Number of a user example: "+911111111111" EmailID: type: string Description: Email address of a user example: test@test.com DeviceIDS: type: string Description: example: "null" status: type: string description: Request status example: true LockDevice: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Lock Device example: Lock enum: - Lock RebootDevice: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Reboot Device example: Reboot enum: - Reboot Buzz: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Send BUZZ to Device example: Remote_Buzz enum: - Remote_Buzz DeviceID: type: string description: ID of the device to send the BUZZ to. example: 952a2373-5dde-4e6d-84ee-b48e56630781 PayLoad: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded JSON object.

Sample JSON object
{ "Interval": "3", "VolumeType": "2", "VolumeLevel": "100", "VolumeLock": false } example: | {"Interval":"3","VolumeType":"2","VolumeLevel":"100","VolumeLock":false} ChangePin: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Change device lock pin example: Change_Pin enum: - Change_Pin PayLoad: type: string description: Pin to set example: '1234' LostMode: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Apply Lost Mode on the device. example: LOST_MODE enum: - LOST_MODE DeviceID: type: string description: Unique identifier of the target device. example: 461c7c0f-a57b-4cef-a236-8fb82a82b087 Payload: type: string description: | JSON string (stringified) containing Lost Mode configuration. > **Important:** Must be a stringified JSON, not a direct object. | Parameter | Type | Description | |-----------|------|-------------| | `ManagementType` | string | Type of device management. Example: `"1"` | | `isLostModeEnabled` | boolean | `true` = Enable, `false` = Disable Lost Mode | | `Message` | string | Message shown on locked device screen | | `LocationEnabled` | boolean | `true` = Track location, `false` = Do not track | | `LockTheDeviceEnabled` | boolean | `true` = Lock device, `false` = Do not lock | | `ChangeThePasswordEnabled` | boolean | `true` = Enable password change, `false` = Disable | | `DevicePasswordField` | string | Base64 encoded password. Example: `"MDAwMA=="` | | `Token` | string | Placeholder for password reset. Example: `"%RESETPASSWORDTOKEN%"` | example: "{\"ManagementType\":\"1\",\"isLostModeEnabled\":true,\"Message\":\"This device is locked\",\"LocationEnabled\":false,\"LockTheDeviceEnabled\":true,\"ChangeThePasswordEnabled\":true,\"DevicePasswordField\":\"MDAwMA==\",\"Token\":\"%RESETPASSWORDTOKEN%\"}" CallTracking: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Apply call tracking job on Device example: Apply_Call_Tracking enum: - Apply_Call_Tracking PayLoad: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded JSON object.

Sample JSON object
{ "isOn":1, "periodicity":"16" } example: ewogICJpc09uIjoxLAogICJwZXJpb2RpY2l0eSI6IjE2Igp9 SMSTracking: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Apply SMS tracking job on Device example: Apply_SMS_Tracking enum: - Apply_SMS_Tracking PayLoad: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded JSON object.

Sample JSON object
{ "isOn":1, "periodicity":"16" } example: ewogICJpc09uIjoxLAogICJwZXJpb2RpY2l0eSI6IjE2Igp9 Wipe: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Wipe all data on Device example: Wipe enum: - Wipe ChangeDeviceName: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Set device name example: Set_Devicename enum: - Set_Devicename PayLoad: type: string description: New device name example: Client00011 SetBluetoothName: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Set device bluetooth name example: Set_RealDeviceName enum: - Set_RealDeviceName PayLoad: type: string description: New bluetooth name example: new_name SetDeviceNotes: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Set notes for device example: Set_DeviceNotes enum: - Set_DeviceNotes PayLoad: type: string description: Notes to add example: Testing Device ClearAppData: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Clear data of the applications example: CLEAR_DATA enum: - CLEAR_DATA PayLoad: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded JSON object.

Sample JSON object
{ "AppIds":["com.abcd.astrocontacts"] } AppIds can be found using [`Get installed applications on device`](./#tag/Device/paths/~1installedapp~1android~1{DeviceId}~1device/get) api. example: eyJBcHBJZHMiOlsiY29tLmdlYXJzNDIuYXN0cm9jb250YWN0cyJdfQ== ApplyJobResponseModel: type: object properties: message: type: string description: Response message indicating the result of the apply job operation. example: Success data: type: string description: The data returned from the operation (null if no additional data is provided). example: null status: type: boolean example: true description: | true: Job successfully applied.
false: Failed to apply job. FailedApplyJobResponseModel: type: object properties: message: type: string description: Response message indicating the result of the apply job operation. example: Failed to apply job data: type: string description: The data returned from the operation (null if no additional data is provided). example: null status: type: boolean example: false description: | true: Job successfully applied.
false: Failed to apply job. BlacklistDeleteSuccessResponseModel: type: object properties: message: type: string description: Response message indicating the result of the blacklisting operation. example: Device successfully removed from blacklist. data: type: string description: The data returned from the operation (null if no additional data is provided). example: null status: type: boolean example: true description: | true: Device successfully blacklisted.
false: Device blacklisting failed. BlacklistDeleteFailureResponseModel: type: object properties: message: type: string description: Response message indicating the result of the blacklisting operation. example: Failed to blacklist devices. data: type: string description: The data returned from the operation (null if no additional data is provided). example: null status: type: boolean example: false description: | true: Device successfully blacklisted.
false: Device blacklisting failed. DynamicJobQueueResponseModel: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Dynamic job queue retrieved successfully. data: type: array description: List of dynamic job entries. items: type: object properties: JobID: type: string description: ID of the job.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: ffea8e48-c1df-4548-94f4-e02cdd1e224b DateTime: type: string description: Date and time when job was applied example: '4/4/2019 7:16:59 AM' Type: type: string description: Type of the job example: GetDeviceInfo Status: type: string description: | Job status
ValueDescription
0, 1Pending
2Successfully Deployed
3Error applying job
example: '2' DynamicJobComments: type: string description: Detailed info about job example: | [4/4/2019 7:17:30 AM (UTC)] Job deployed successfully on device TimeOut: type: string description: Date and time when job timeout example: '4/4/2019 7:17:59 AM' DeviceIdDynamicJobQueue: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 on which job is/was applied example: 3167f5e3-4ac5-41c1-823c-714374edbdb4 status: type: boolean description: Indicates whether the operation was successful. example: true DynamicJobQueueDevice: type: object properties: PayLoad: type: string description: | Serialized array of device ID(s). example: '["3167f5e3-4ac5-41c1-823c-714374edbdb4"]' Others: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Dynamic job applied successfully. data: type: string description: | Job status: - **Queued**: Job successfully applied - **Failed**: Job failed to apply example: Queued status: type: boolean description: Indicates whether the request was successful. example: true Call_Tracking: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Dynamic job applied successfully. data: type: string description: | XML response in serialized string format. CALLLOG TrackingUpdate True example: "\r\n\r\n CALLLOG\r\n TrackingUpdate\r\n True\r\n" status: type: boolean description: Indicates whether the request was successful. example: true SMS_Tracking: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Dynamic job applied successfully. data: type: string description: | XML response in serialized string format. SMSLOG TrackingUpdate True example: "\r\n\r\n SMSLOG\r\n TrackingUpdate\r\n True\r\n" status: type: boolean description: Indicates whether the request was successful. example: true Change_Device_Name: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Dynamic job applied successfully. data: type: string description: | XML response in serialized string format. 84727fe7-87ee-487c-8530-e5e68247dfe8 True Nix Device Name set -1 example: "\r\n\r\n 84727fe7-87ee-487c-8530-e5e68247dfe8\r\n True\r\n Nix Device Name set\r\n -1\r\n" status: type: boolean description: Indicates whether the request was successful. example: true Set_Bluetooth_Name: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Dynamic job applied successfully. data: type: string description: | XML response in serialized string format. Job SetRealDeviceName True example: "\r\n\r\n Job\r\n SetRealDeviceName\r\n True\r\n \r\n" status: type: boolean description: Indicates whether the request was successful. example: true Job: type: object required: - DeviceID - JobType properties: DeviceID: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). example: 1111111111111111111 RefreshDevice: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Refresh Device details example: Refresh_Device enum: - Refresh_Device TextMessage: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Text Message dynamic job example: Text_Message enum: - Text_Message PayLoad: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded JSON object.

Sample JSON object
{ "Subject": "Text Message Subject", "Body": "Text Message Body", "ReadNotification": false, "ForceRead": false, "EnableBuzz": false, "BuzzInterval": "", "CloseDurationEnable": false, "Interval": "", "RichTextBody":"", "RichTextHtml":"" } example: eyJTdWJqZWN0IjoiVGV4dCBNZXNzYWdlIFN1YmplY3QiLCJCb2R5IjoiVGV4dCBNZXNzYWdlIEJvZHkiLCJSZWFkTm90aWZpY2F0aW9uIjpmYWxzZSwiRm9yY2VSZWFkIjpmYWxzZSwiRW5hYmxlQnV6eiI6ZmFsc2UsIkJ1enpJbnRlcnZhbCI6IiIsIkNsb3NlRHVyYXRpb25FbmFibGUiOmZhbHNlLCJJbnRlcnZhbCI6IiIsIlJpY2hUZXh0Qm9keSI6IiIsIlJpY2hUZXh0SHRtbCI6IiJ9 GetDeviceApps: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Refresh Device app details example: Get_Device_Apps enum: - Get_Device_Apps UninstallApplication: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Uninstall application from device example: Uninstall_Application enum: - Uninstall_Application PayLoad: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded JSON object.

Sample JSON object
{ "AppIds":["com.abcd.astrocontacts"] } AppIds can be found using [`Get installed applications on device`](./#tag/Device/paths/~1installedapp~1android~1{DeviceId}~1device/get) api. example: eyJBcHBJZHMiOlsiY29tLmdlYXJzNDIuYXN0cm9jb250YWN0cyJdfQ== LocationTracking: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Enable location tracking on device example: Location_Tracking enum: - Location_Tracking PayLoad: type: string required: true description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded JSON object.

Sample JSON object
{ "isOn":1, "periodicity":"1" } example: eyJpc09uIjoxLCJwZXJpb2RpY2l0eSI6IjEifQ== GeoFence: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Enable geo fence on device example: Geo_Fencing enum: - Geo_Fencing PayLoad: description: | PayLoad is a serialized JSON object.

Sample JSON object { "EnableFence":true, "Fence":[ { "Name":"fence", "Latitude":10.308839292868486, "Longitude":28.960647583007812, "Radius":649787.873213757, "GeoFenceUnit":0, "Fence":"Geo Fence" } ], "JobOut":[ { "JobID":"70800079-4890-4ab2-a97b-111966d35052", "JobName":"text", "Platform":"ANY", "Type":"TextMessage" } ], "JobIn":[ { "JobID":"430d76dd-bb33-431f-babc-e79a06b1a116", "JobName":"test", "Platform":"android", "Type":"SMS Log Tracking" } ], "FenceJobInDeployDelay":"1", "FenceJobOutDeployDelay":"1", "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":false, "FenceJobInEmailId":"", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":false, "FenceJobOutEmailId":"" } example: '{"EnableFence":true,"Fence":[{"Name":"fence","Latitude":10.308839292868486,"Longitude":28.960647583007812,"Radius":649787.873213757,"GeoFenceUnit":0,"Fence":"Geo Fence","undefined":false}],"JobOut":[{"JobID":"70800079-4890-4ab2-a97b-111966d35052","JobName":"text","Platform":"ANY","Type":"TextMessage"}],"JobIn":[{"JobID":"430d76dd-bb33-431f-babc-e79a06b1a116","JobName":"test","Platform":"android","Type":"SMS Log Tracking","undefined":false}],"FenceJobInDeployDelay":"1","FenceJobOutDeployDelay":"1","FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":false,"FenceJobInEmailId":"","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":false,"FenceJobOutEmailId":""}' allOf: - $ref: '#/components/schemas/DynamicGeoFencingPayLoad' DynamicGeoFencingPayLoad: type: object properties: EnableFence: type: boolean description: Whether fence is enabled or not example: true Fence: type: array description: Fencing details items: type: object properties: Name: type: string description: Name of the fence example: Test42 Latitude: type: integer description: Latitude of selected fence example: 21.181658623340844 Longitude: type: integer description: Longitude of selected fence example: 74.45293641393755 Radius: type: integer description: Radius of selected fence (Default unit - Meter) example: 262127.69998481227 GeoFenceUnit: type: integer description: 'Unit of Radius, 0-Meter, 1-Kilometer, 2-Mile, 3-Feet' example: 0 Fence: type: string description: Type of Fence example: Geo Fence JobOut: type: array description: Jobs to apply when device moves outside of fence items: type: object properties: JobID: type: string description: JobID of the job to be activated example: 33701abf-68dd-410c-834a-dcbf5669f586 JobName: type: string description: Name of the job to be activated designated area example: Text_Message1 Platform: type: string description: Platform of the Job example: ANY Type: type: string description: Type of the Job example: TextMessage JobIn: type: array description: Jobs to apply when device moves inside of fence items: type: object properties: JobID: type: string description: JobID of the job to be activated example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of the job to be activated example: Text_Message2 Platform: type: string description: Platform of the Job example: ANY Type: type: string description: Type of the job example: TextMessage FenceJobInDeployDelay: type: integer description: Delay Time to deploy job after device is reported to be in radius (In minutes) example: 0 FenceJobOutDeployDelay: type: integer description: Delay Time to deploy job after device is reported to be outside the radius (In minutes) example: 0 FenceJobInDeviceAlert: type: boolean description: 'If device is inside the fence, it will send alert to device' example: true FenceJobInMDMAlert: type: boolean description: 'If device is inside the fence, it will send alert to console' example: true FenceJobInEmailAlert: type: boolean description: 'If device is inside the fence, it will send an email reporting the same' example: false FenceJobInEmailId: type: string description: 'Email ID to send email, if device is inside the fence' example: ' ' FenceJobOutDeviceAlert: type: boolean description: | If device is outside the fence, it will send alert to device
Note: Not supported for IOS devices. example: true FenceJobOutMDMAlert: type: boolean description: 'If device is outside the fence, it will send alert to console' example: true FenceJobOutEmailAlert: type: boolean description: 'If device is outside the fence, it will send an email reporting the same' example: false FenceJobOutEmailId: type: string description: 'Email ID to send email, if device is outside the fence' example: false TimeFence: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Enable time fence on device example: Time_Fencing enum: - Time_Fencing PayLoad: description: | PayLoad is a serialized JSON object.

Sample JSON object { "EnableFence":true, "JobIn":[ { "JobID":"70800079-4890-4ab2-a97b-111966d35052", "JobName":"text", "Platform":"ANY", "Type":"TextMessage" } ], "JobOut":[ { "JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce", "JobName":"Text_Message1", "Platform":"ANY", "Type":"TextMessage" } ], "SelectFence":{ "TimeFenceRows":[ { "TimeZoneType":1, "StartTime":"01:00", "EndTime":"13:00", "Days":[ "1", "2", "3", "4", "5", "6", "7" ] } ] }, "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":true, "FenceJobInEmailId":"abc@gmail.com", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":true, "FenceJobOutEmailId":"abc@gmail.com" } example: '{"EnableFence":true,"JobIn":[{"JobID":"70800079-4890-4ab2-a97b-111966d35052","JobName":"text","Platform":"ANY","Type":"TextMessage"}],"JobOut":[{"JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce","JobName":"Text_Message1","Platform":"ANY","Type":"TextMessage"}],"SelectFence":{"TimeFenceRows":[{"TimeZoneType":1,"StartTime":"01:00","EndTime":"13:00","Days":["1","2","3","4","5","6","7"]}]},"FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":true,"FenceJobInEmailId":"abc@gmail.com","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":true,"FenceJobOutEmailId":"abc@gmail.com"}' allOf: - $ref: '#/components/schemas/DynamicTimeFencingPayLoad' DynamicTimeFencingPayLoad: type: object properties: EnableFence: type: boolean description: Whether fence is enabled example: true JobIn: type: array description: Jobs to apply when device moves inside of fence items: type: object properties: JobID: type: string description: JobID of the Job to be activated example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves inside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage JobOut: type: array description: Jobs to apply when device moves outside of fence items: type: object properties: JobID: type: string description: JobID of Job to be activated if device moves inside the designated area example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves outside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage SelectFence: type: object description: Time fence details properties: TimeFenceRows: type: array items: type: object properties: TimeZoneType: type: integer description: 'For Console Time, TimeZone type is 1 and for Device Time it is 0' example: 1 StartTime: type: string description: | Starting Time of the fence
Note: If TimeZoneType is Console Time i.e. 1, than time will be converted into GMT time zone. example: '09:00' EndTime: type: string description: | Ending Time of the fence
Note: If TimeZoneType is Console Time i.e. 1, than time will be converted into GMT time zone. example: '13:00' Days: type: array description: | Days of the week on which Time Fence activates automatically
Note: 1 indicates Monday and so on, 7 indicates Sunday items: type: string example: '1,2,3,4,5,6,7' FenceJobInDeviceAlert: type: boolean description: It sends an alert to device when the time fence starts example: true FenceJobInMDMAlert: type: boolean description: It sends an alert to MDM when the time fence starts example: true FenceJobInEmailAlert: type: boolean description: It sends an alert to specified email when the time fence starts example: true FenceJobInEmailId: type: string description: It sends an alert to email when the time fence starts example: abc@gmail.com FenceJobOutDeviceAlert: type: boolean description: It sends an alert to device when the time fence ends example: true FenceJobOutMDMAlert: type: boolean description: It sends an alert to MDM when the time fence ends example: true FenceJobOutEmailAlert: type: boolean description: It sends an alert to specified email when the time fence ends example: true FenceJobOutEmailId: type: string description: It sends an alert to email when the time fence ends example: abc@gmail.com NetworkFence: allOf: - $ref: '#/components/schemas/Job' - type: object properties: JobType: type: string description: Enable network fence on device example: Network_Fencing enum: - Network_Fencing PayLoad: description: | PayLoad is a serialized JSON object.

Sample JSON object { "EnableFence":true, "JobIn":[ { "JobID":"70800079-4890-4ab2-a97b-111966d35052", "JobName":"text", "Platform":"ANY", "Type":"TextMessage" } ], "JobOut":[ { "JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce", "JobName":"text2", "Platform":"ANY", "Type":"TextMessage" } ], "FenceJobInDeployDelay":"5", "FenceJobOutDeployDelay":"5", "SelectFence":{ "NetworkFenceRows":[ { "ssid":"gb" } ] }, "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":true, "FenceJobInEmailId":"abc@gmail.com", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":true, "FenceJobOutEmailId":"abc@gmail.com" } example: '{"EnableFence":true,"JobIn":[{"JobID":"70800079-4890-4ab2-a97b-111966d35052","JobName":"text","Platform":"ANY","Type":"TextMessage"}],"JobOut":[{"JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce","JobName":"text2","Platform":"ANY","Type":"TextMessage"}],"FenceJobInDeployDelay":"5","FenceJobOutDeployDelay":"5","SelectFence":{"NetworkFenceRows":[{"ssid":"gb"}]},"FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":true,"FenceJobInEmailId":"abc@gmail.com","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":true,"FenceJobOutEmailId":"abc@gmail.com"}' allOf: - $ref: '#/components/schemas/DynamicNetworkFencingPayLoad' DynamicNetworkFencingPayLoad: type: object properties: EnableFence: type: string description: Whether network fence is enabled JobIn: type: object description: Jobs to apply when device moves inside of fence properties: JobID: type: string description: JobID of Job to be activated if device moves inside the designated area example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves inside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage JobOut: type: object description: Jobs to apply when device moves outside of fence properties: JobID: type: string description: JobID of Job to be activated if device moves inside the designated area example: fdaaaae2-9388-4fae-a51d-762d4e286883 JobName: type: string description: JobName of Job to be activated if device moves outside the time fence example: text Platform: type: string description: Platform of Job example: ANY Type: type: string description: Type of Job example: TextMessage FenceJobInDeployDelay: type: string description: Delay in minutes after device is connected to provided SSID example: 5 FenceJobOutDeployDelay: type: string description: Delay in minutes after device is disconnected to provided SSID example: 5 SelectFence: type: object description: fence details properties: NetworkFenceRows: type: object properties: SSID: type: string description: SSID of WiFi where job in or job out acts example: 42Gears Office FenceJobInDeviceAlert: type: boolean description: It sends an alert to device when the time fence starts example: true FenceJobInMDMAlert: type: boolean description: It sends an alert to MDM when the time fence starts example: true FenceJobInEmailAlert: type: boolean description: It sends an alert to specified email when the time fence starts example: true FenceJobInEmailId: type: string description: It sends an alert to email when the time fence starts example: abc@gmail.com FenceJobOutDeviceAlert: type: boolean description: It sends an alert to device when the time fence ends example: true FenceJobOutMDMAlert: type: boolean description: It sends an alert to MDM when the time fence ends example: true FenceJobOutEmailAlert: type: boolean description: It sends an alert to specified email when the time fence ends example: true FenceJobOutEmailId: type: string description: It sends an alert to email when the time fence ends example: abc@gmail.com JobQueueResponseModel: type: object properties: message: type: string description: Response message. example: Success data: type: array description: Job queue. items: type: object properties: JobID: type: string description: ID of the job. example: ed7e4230-dfe0-42f4-a83f-9dea9d9e5173 JobName: type: string description: Name of the job. example: username344 Time: type: string description: Date and time when the job was applied. example: '08/27/2024 12:28:42' Size: type: string description: Size of the job (in KB). example: '1055' Type: type: string description: Type of the job. example: TextMessage Status: type: string description: | Job status.
Possible values:
- DEPLOYED - SCHEDULED - PENDING example: SCHEDULED RowId: type: string description: ID of the job in the device job queue. example: cecf6b79-6d0a-417c-b8f5-9802fbe15f4c Success: type: string description: Indicates whether the job was successfully applied. example: '0' JobComments: type: string description: Details or comments regarding the job. example: | [27-08-2024 12:28:42 (UTC)] Job pending to be applied. JobPlatform: type: string description: Platform on which the job is applied. example: ANY NetworkType: type: string description: | Type of network used for applying the job.
ValueDescription
0WiFi network
1Mobile network
2Any network
example: '2' DeviceIdJobQueue: type: string description: ID of the device on which the job is/was applied. example: dadfedb6-e59e-4c86-9023-5de6169f636e IsCompositeProfile: type: string description: | Indicates whether the job is a composite profile. - **0**: NO - **1**: YES example: '0' DeviceChargingState: type: string description: Indicates the charging state of the device during job application. example: '0' FromSql: type: boolean description: Indicates if the job was retrieved from SQL. example: false JobHistoryVersion: type: string description: Version of the job history. example: '1' DownloadedSource: type: string nullable: true description: Source from which the job was downloaded, if applicable. example: null MaintenanceWindow: type: boolean description: Indicates if the job was applied during the maintenance window. example: false Compliance: type: integer description: Compliance status for the job. example: 1 status: type: boolean description: Request status. example: true DeleteDeviceResponseModel: type: object properties: message: type: string description: Response message example: " " data: type: string description: null example: null status: type: string description: Request status example: true AddDefaultJobResponseModel: type: object properties: message: type: string description: Response message example: '' data: type: integer description: Number of jobs added as default job example: 1 status: type: string description: Request status example: true DeleteDefaultJobResponseModel: type: object properties: message: type: string description: Response message example: '' data: type: integer description: number of jobs deleted example: 1 status: type: string description: Request status example: true SaveWebAppResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: boolean description: Response data example: false status: type: string description: Request status example: true WebAppPostAndPutResponseModel: type: object description: Response model returned after creating or updating a Web App in the App Store. properties: message: type: string description: Indicates the result of the API operation. example: Success data: type: string description: | Unique identifier (GUID) associated with the Web App. This GUID is generated or returned after successfully creating or updating the Web App and can be used for further operations such as search, update, or delete. example: "0626" status: type: boolean description: Indicates whether the API request was successful. example: true DeleteAppResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: boolean description: Response data example: true status: type: string description: Request status example: true DeleteFileResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: boolean description: Response data example: false status: type: string description: Request status example: true GetFileResponseModel: type: object properties: message: type: string description: Response message example: '' data: type: string description: File URL example: 'https://xyzabc9jobs.s3.amazonaws.com/071900004/File%20Store/Shared/test.txt?X-Amz-Expires=18000&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=1111111AAAA/20190703/us-east-1/s3/aws4_request&X-Amz-Date=20190703T085541Z&X-Amz-SignedHeaders=host&X-Amz-Signature=21379b1191a70c6d5be1372535dfafdf3558568f69f960be0cc12825f0bc4709' status: type: string description: Request status example: true GetFilestoreResponseModel: type: object properties: message: type: string description: Response message example: '' data: type: array description: Files items: type: object properties: GUID: type: string description: Unique identification of file example: MDcxOTAwMDA0L0ZpbGUgU3RvcmUvU2hhcmVkL3Rlc3QudHh0 Name: type: string description: Name of the file example: test.txt Extension: type: string description: Extension of the file example: txt LastModified: type: string description: Last modified timestamp example: '2019-07-03T08:46:45Z' Size: type: integer description: Size of file (in bytes) example: 4 S3BaseUrl: type: string description: File URL example: 071900004/File Store/Shared/test.txt status: type: string description: Request status example: true DefaultJobModel: type: array items: type: object required: - JobID - GroupID - ForceApply properties: JobID: type: string description: ID of the job example: 12387DFG3943HY GroupID: type: string description: ID of the group example: null ForceApply: type: boolean description: Whether to apply job forcefully or not example: false Immediate: type: object required: - DeviceIds - JobId properties: DeviceIds: description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API. type: array items: type: string example: - 1111111111111111111 JobId: description: | ID of the job. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142**. Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API. type: string example: eaa76725-ff02-4c45-8fca-4f6145d65d3f DownloadType: description: | Select network type for applying the job.
ValueDescription
0WiFi
1Mobile data
2Any
3Ethernet only
4Ethernet or WiFi only
type: string example: '0' Periodically: allOf: - $ref: '#/components/schemas/Immediate' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on regular interval (specified in minutes)
Sample: "12" type: string example: '12' Days_Time: allOf: - $ref: '#/components/schemas/Immediate' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on recursive schedule time and days { "Time":"10:41", "Days":["0","5","6"], "GMTTimeInterval":-330 } - Time: Time to apply job
Time Format: HH:MM - Days: Days on which job will be applied
["sun","mon","tue","wed","thu","fri","sat"] = ["0","1","2","3","4","5","6"] type: string example: | {"Time":"10:41","Days":["0","5","6"],"GMTTimeInterval":-330} Date_Time: allOf: - $ref: '#/components/schemas/Immediate' - type: object properties: ServerScheduleTime: description: | Schedule date and time to apply job
Format: YYYY/MM/DD HH:MM
Sample: 2019/4/10 5:11
type: string example: '2019/4/10 5:11' JobModel: type: object properties: JobName: type: string description: Job name example: Notify JobType: type: string description: Type of job example: File Transfer JobID: type: string description: ID of job example: 2ADGJNJ68JKMBB1 Platform: type: string description: Platform type of job example: Android FolderId: type: string description: ID of folder example: 2 VersionCompare: type: string description: "Compare the Version \n\r(Applicable only for Android plateform)" example: '' MinimumVersion: type: string description: "MinimumVersion \n\r(Applicable only for Android plateform)" example: 2 PayLoad: type: array description: PayLoad example: - eyJTdWJqZWN0IjoiZmNoYmciLCJCb2R5IjoidGh0ZnkiLCJSZWFkTm90aWZpY2F0aW9uIjp0cnVlLCJGb3JjZVJlYWQiOmZhbHNlLCJSaWNoVGV4dEJvZHkiOiIiLCJSaWNoVGV4dEh0bWwiOiIifQ== DeleteFileAfterDeployment: type: string description: Delete file after deployment example: 'false' AppFilterName: type: string description: App filter name example: '' AppFilterCompare: type: string description: Compare AppFilter example: '' AppFilterCompareVersion: type: string description: App filter compare version example: '' PreapprovedDeviceModel: type: object properties: DeviceIds: type: string description: ID of device example: 12387SFYBDFG3943HY DeviceName: type: string description: Device name example: Client0098 ID: type: string description: Device ID example: 'null' IDType: type: string description: ' ' example: '' GroupID: type: string description: Group ID example: 'null' GroupPath: type: string description: Group path example: Home TagName: type: string description: Tag name example: '' DeviceNotes: type: string description: Device note example: '' SerialNumber: type: string description: Serial number of device example: VOW44T4T4PWORCMB EnableEnroll: type: string description: EnableEnroll example: true PhoneNumber: type: string description: Phone number of device example: '+917878756824' EmailId: type: string description: EmailId example: 42gears@gmail.com DeviceIDS: type: string description: DeviceIDS example: '' ProfileModel: type: object properties: Name: type: string description: Profile name example: Android Work Platform: type: string description: Platform type example: Android FolderId: type: string description: Folder ID example: 'null' PayLoad: type: string description: PayLoad example: '{"applicationPolicy":null,"passwordPolicy":{"quality":null,"expirationTimeout":14400000,"historyLength":"10","maximumFailedAttempts":"4","minimumLength":"4","maximumTimeToLock":10000},"systemSettings":null,"globalProxy":null,"vpnConfig":null,"enterpriseAppStore":null,"caCertificatePolicy":null,"mailConfigurationPolicy":null,"wifiConfigurationPolicy":null,"fileSharingPolicy":null,"mobileThreatPrevention":null,"astromailconfigurationPolicy":null,"UseAFW":true}' QRCodeModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded QR code example: 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 Status: type: string description: Request status example: true GetAllQRCodesOutputModel: type: object properties: message: type: string description: Response message example: Success data: type: array description: Array of QR code details items: type: object properties: qrdata: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded QR Code data.
This string represents the QR code content. example: dfsfsfsfdsfdsfdsfdsfds qrid: type: string description: ID of the QR Code.
For example, d45d03dc-ebb7-4041-ad49-717615d0d196 example: d45d03dc-ebb7-4041-ad49-717615d0d196 qrenrollmentJson: type: string description: QR enrollment JSON example: null qrexpirydate: type: string description: QR expiry date example: null qrgroupname: type: string description: QR group name example: Home qrname: type: string description: Name of the QR code example: usernameQR12 platform: type: string description: Platform associated with the QR code example: Android isAndroidEnterprise_qrcode: type: boolean description: Indicates if this QR code is for Android Enterprise enrollment example: true isAndroidManagement_qrcode: type: boolean description: Indicates if this QR code is for Android Management example: false enrollmentype: type: string description: Type of enrollment example: ANDROID ENTERPRISE ENROLLMENT EnrollmentMode: type: string description: Mode of enrollment for the device example: FULLY MANAGED DEVICE wifissid: type: string description: WiFi SSID associated with the QR code example: null isiosSetupCompleated: type: boolean description: Indicates if iOS setup is completed example: false status: type: boolean description: Request status example: true QROutputModel: type: object properties: message: type: string description: Response message example: Success data: type: array description: Contains QR Code data items: type: object properties: _id: type: string description: ID of the QR Code example: d45d03dc-ebb7-4041-ad49-717615d0d196 QRcodeName: type: string description: QR code Name example: usernameQR12 Platform: type: string description: Platform example: Android EnrollmentType: type: string description: Enrollment Type example: ANDROID ENTERPRISE ENROLLMENT GroupName: type: string description: Group Name example: Home IsDefaultQRCode: type: boolean description: Is Default QR Code example: true QRdata: type: string description: QR data example: null isAndroidEnterprise: type: boolean description: Android Enterprise example: true isAndroidManagement: type: boolean description: Android Management example: false AllowPersonalUsage: type: string description: Allow Personal Usage example: "" IsSkipEncryption: type: boolean description: Skip Encryption example: false WifiSSID: type: string description: Wifi SSID example: null WifiPassword: type: string description: Wifi Password example: null EncryptionType: type: string description: Encryption Type example: WPA GroupID: type: string description: Group ID example: null DeviceNameType: type: string description: Device Name Type example: UseSystemGenerated UseMobileNetwork: type: boolean description: Use Mobile Network example: false DownLoadAgentFrom42GearsWebsite: type: boolean description: Download Agent from 42Gears Website example: false ShowCheckListScreen: type: boolean description: Show CheckList Screen example: true time: type: string description: Last Modified date and time example: 2024-08-23T12:04:24.182Z EnrollmentJsonData: type: object # Changed to object to reflect JSON output description: Enrollment JSON data example: {} WifiHidden: type: boolean description: Wifi Hidden example: false WifiPACurl: type: string description: Wifi PAC URL example: "" WifiProxyHost: type: string description: Wifi Proxy Host example: "" WifiProxyPort: type: string description: Wifi Proxy Port example: "" WifiProxyByPass: type: string description: Wifi Proxy ByPass example: "" EnableSystemApp: type: boolean description: Enable System App example: false EnableDeepthought: type: boolean description: Enable Deepthought example: false LanguageCode: type: string description: Language Code example: "" CountryCode: type: string description: Country Code example: "" LocalTime: type: string description: Local Time example: "" TimeZone: type: string description: TimeZone example: "" ExpiryDate: type: string description: Expiry Date example: "" ExpiryDuration: type: string description: Expiry Duration example: "" OneTimeOnly: type: boolean description: One Time Only example: false ExpirtDateAndTime: type: string description: Expiry Date And Time example: null MaxNumberOfDevice: type: string description: Max Number Of Device example: null CurrentDeviceNumber: type: string description: Current Device Number example: '1' CamSentryData: type: string description: Cam Sentry Data example: "" WifiEapMethod: type: string description: Wifi EAP Method example: null WifiIdenty: type: string description: Wifi Identity example: null WifiAnonyms: type: string description: Wifi Anonyms example: null EapWifiPaswrd: type: string description: Eap Wifi Password example: null WifiPhase2Auth: type: string description: Wifi Phase 2 Authentication example: null WifiDomain: type: string description: Wifi Domain example: null EnrollmentMode: type: string description: Enrollment Mode example: FULLY MANAGED DEVICE ScreenOn: type: boolean description: Screen On example: false SkipEducationScreen: type: boolean description: Skip Education Screen example: false SkipOwnershipDisclaimer: type: boolean description: Skip Ownership Disclaimer example: false DelayJobDeployment: type: string description: Delay Job Deployment example: "0" SkipAgentPermissionList: type: boolean description: Skip Agent Permission List example: false StagingEnrollment: type: boolean description: Staging Enrollment example: false StagingPassword: type: string description: Staging Password example: "" status: type: boolean description: Request status example: true GetDefaultQRCodeResponseModel: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Success data: type: object properties: qrdata: type: string description: Base64 encoded QR code image data. example: "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAOEA4QDASIAAhEBAxEB/8QAGwAAAwEBAQEBAAgAPCok3W4SFWFp96WFBrNBr1+qc1S1aoDn/wBFxyKPkM/eZrD/ADBdIB+lHZ6/y5vuzUefl966/wAwnxHmc5B1fVcMKRbWTteMofq/qWi2Ohnt5pUe9ugkfzQaiYixXkig13IHe0D7Q3t9zfXVzeF+n1TS" qrid: type: string description: Unique identifier for the QR code. example: "d45d03dc-ebb7-4041-ad49-717615d0d196" qrgroupname: type: string description: Name of the group associated with the QR code. example: "Home" qrname: type: string description: Name associated with the QR code. example: "usernameQR12" platform: type: string description: Platform for which the QR code is generated. example: "Android" isAndroidEnterprise_qrcode: type: boolean description: Indicates if the QR code is for Android Enterprise. example: true isAndroidManagement_qrcode: type: boolean description: Indicates if the QR code is for Android Management. example: false enrollmentype: type: string description: Type of enrollment represented by the QR code. example: "ANDROID ENTERPRISE ENROLLMENT" qrenrollmentJson: type: string description: JSON object containing additional enrollment details, if applicable. example: null qrexpirydate: type: string description: Expiry date of the QR code, if applicable. example: null EnrollmentMode: type: string description: Mode of enrollment for the device. example: "FULLY MANAGED DEVICE" wifissid: type: string description: SSID of the Wi-Fi network, if applicable. example: null isiosSetupCompleated: type: boolean description: Indicates if the iOS setup is completed. example: false status: type: boolean description: Indicates the success status of the operation. example: true ViewQROutputModel: type: object properties: message: type: string description: Response message example: Success data: type: array description: Array of QR code details items: type: object properties: qrdata: type: string description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded QR Code image.
This Base64 string can be converted into .jpeg or .png format. example: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjI qrid: type: string description: ID of the QR Code.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 8c862c74-3b3e-48a7-a07b-a8a74caa9e7e qrenrollmentJson: type: string description: QR enrollment Json example: null qrexpirydate: type: string description: QR expiry date example: null qrgroupname: type: string description: QR group name example: 'test' qrisAndroidEnterprise: type: bool description: QR Android Enterprise example: false qrisAndroidManagement: type: bool description: QR Android Management example: false status: type: string description: Request status example: true AddOrUpdateQROutputModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: Status of QR code update example: DefaultQRCode Updated status: type: bool description: Request status example: true SingleReportSearchResponseModel: type: object properties: message: type: string description: Success message indicating single report found example: "Report found successfully" data: $ref: '#/components/schemas/ReportDetailsModel' status: type: boolean description: API call success status example: true required: - message - data - status # Multiple Reports Search Response Model MultipleReportSearchResponseModel: type: object properties: message: type: string description: Success message indicating multiple reports found example: "3 reports found successfully" data: type: array items: $ref: '#/components/schemas/ReportDetailsModel' description: Array of report details status: type: boolean description: API call success status example: true required: - message - data - status # Report Details Model (shared between single and multiple responses) ReportDetailsModel: type: object properties: OfflineReportId: type: string description: The offline report ID example: "20218" QueryParams: type: string description: JSON string containing the query parameters used for report generation example: "{\"groupid\":null,\"GroupName\":\"Home\",\"ShowAllLogs\":true,\"ShowJobLogs\":true,\"ShowAppInstallLogs\":true,\"ShowUserSessionLogs\":true,\"ShowDevicesDeletedLogs\":true,\"date_start\":\"2025-05-09 00:01\",\"date_end\":\"2025-05-09 13:05\"}" ReportType: type: string description: | Type of the report
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: "100" TimeZone: type: string description: Timezone offset in minutes example: "530" URLReports: type: string description: Download URL for the generated report file example: "https://suremdmreports-stage.s3.amazonaws.com/1/reports/ondemand/SystemLog_Home_20250509073528_ABC123.zip" ReportParams: type: string nullable: true description: Additional report parameters example: null ReportID: type: string description: Report template identifier example: "100" SendMail: type: boolean description: Whether the report was sent via email example: false EmailID: type: string description: Email address where report was sent (if applicable) example: "" StatusOfflineReports: type: string nullable: true description: Status of the offline report processing example: null TimeStamp: type: string description: Report generation timestamp example: "05/09/2025 07:35:28" isReadReports: type: boolean description: Whether the report has been read example: false StatusReports: type: string description: | Status of report
Value Description
0 Pending report
1 Successfully generated report
2 Failed to generate report
example: "2" MarkDelete: type: string nullable: true description: Deletion marker for the report example: null GroupName: type: string description: Name of the group for which the report was generated example: "Home" AccessDeniedResponseModel: type: object properties: message: type: string description: The response message indicating access denial. example: Access Denied data: type: string description: Data field, which is `null` when access is denied. example: null status: type: boolean description: Status of the request, which will be `false` in case of access denial. example: false FailResponseModel: type: object properties: message: type: string description: Message indicating the outcome of the operation. example: Fail data: type: string description: Data related to the operation, empty in this case. example: "" status: type: boolean description: Status of the operation. example: false example: message: Fail data: "" status: false DeviceNameResponseModel: type: object properties: message: type: string description: Message indicating the success or failure of the operation. example: Device name retrieved successfully. data: type: string description: Name of the device. example: John doe status: type: boolean description: Status of the operation. example: true DeviceNotFoundResponseModel: type: object properties: message: type: string description: Message indicating the outcome of the operation. example: Device not found data: type: string description: Data related to the operation, empty in this case. example: null status: type: boolean description: Status of the operation. example: false example: message: Fail data: "" status: false UnauthorizedResponseModel: type: object properties: message: type: string description: Unauthorized access message example: Unauthorized Access data: type: string description: Null data example: null status: type: bool description: Request status example: false SaveQRModel: type: object properties: message: type: string description: Response message indicating the result of the operation example: Success data: type: string description: ID of the QR Code which is created example: 6901d80f-4466-4efc-a8c1-30f9c0e2117b status: type: boolean description: Request status example: true DeleteQRModel: type: object properties: message: type: string description: Response message example: Success data: type: boolean description: Indicates if the deletion was successful (true) or not (false) example: true status: type: boolean description: Request status example: true QRCreateDeviceAdminModel: type: object properties: _id: type: string description: ID of the QR Code.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Note: When creating a QR code, set the ID to null. When modifying, set the proper QR Code ID. example: null QRcodeName: type: string description: Name of the QR code. example: test Platform: type: string description: Platform example: Android EnrollmentType: type: string description: Enrollment Type example: DEVICE ADMIN ENROLLMENT GroupName: type: string description: Group Name example: Test device GroupID: type: string description: Group Id example: be476c52-4638-48f8-af99-201cfc119a22 DeviceNameType: type: string description: | Type of device name.
ValueDescription
UseSystemGeneratedUse system-generated device name
UseIMEIUse IMEI number as device name
UseMacUse WiFi MAC address as device name
UseSerialNumberUse device's serial number as device name
UsePhoneNumberUse phone number used by the device as device name
SetManuallySet device name manually

Note: Effective only for Android devices example: UseIMEI isAndroidEnterprise: type: bool description: Indicates whether Android Enterprise is enabled. example: false isAndroidManagement: type: bool description: Indicates whether Android Management is enabled. example: false QRdata: type: string description: QR data example: ../img/unsavedqr.png ExpirtDateAndTime: type: string description: Expiry date and time for the QR code. example: Wed, 14 Dec 2026 18:30:00 GMT MaxNumberOfDevice: type: string description: Maximum number of devices that can use the QR code. example: "191" QRCreateEnterpriseModel: type: object properties: _id: type: string description: ID of the QR Code.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Note: Create QR code then set Id to null when modifying QR code set proper QR Code id. example: 8c862c74-3b3e-48a7-a07b-a8a74caa9e7e QRcodeName: type: string description: Name of the QR code. example: username_ae_new Platform: type: string description: Platform type example: Android EnrollmentType: type: string description: Type of enrollment. example: ANDROID ENTERPRISE ENROLLMENT GroupName: type: string description: Name of the group to which the device belongs. example: Home GroupID: type: string description: ID of the group. example: null DeviceNameType: type: string description: | Type of device name.
ValueDescription
UseSystemGeneratedUse system-generated device name
UseIMEIUse IMEI number as device name
UseMacUse WiFi MAC address as device name
UseSerialNumberUse device's serial number as device name
UsePhoneNumberUse phone number used by the device as device name
SetManuallySet device name manually

Note: Effective only for Android devices example: UseSystemGenerated QRdata: type: string description: QR data to be used for enrollment. example: ../img/unsavedqr.png IsDefaultQRCode: type: bool description: Indicates whether the QR code is the default one. example: false isAndroidEnterprise: type: bool description: Indicates if Android Enterprise is enabled. example: true isAndroidManagement: type: bool description: Indicates if Android Management is enabled. example: false WifiSSID: type: string description: WiFi SSID used for device enrollment. example: "" WifiPassword: type: string description: WiFi password. example: "" EncryptionType: type: string description: Encryption type for WiFi (e.g., WPA). example: WPA IsSkipEncryption: type: bool description: Indicates whether encryption should be skipped. example: false SkipEducationScreen: type: bool description: Skips the education screen during enrollment. example: false SkipOwnershipDisclaimer: type: bool description: Skips the ownership disclaimer during enrollment. example: false DelayJobDeployment: type: string description: Delay in job deployment (in seconds). example: "0" ShowCheckListScreen: type: bool description: Displays the checklist screen during enrollment. example: true EnrollmentJsonData: type: string description: Enrollment-specific JSON data. example: null CamSentryData: type: string description: CamSentry data for integration. example: "" EnrollmentMode: type: string description: Mode of enrollment (e.g., FULLY MANAGED DEVICE). example: FULLY MANAGED DEVICE StagingEnrollment: type: bool description: Indicates if staging enrollment is used. example: false ExpirtDateAndTime: type: string description: Expiry date and time for the QR code. example: "" MaxNumberOfDevice: type: string description: Maximum number of devices that can use this QR code. example: "" SkipAgentPermissionList: type: bool description: Skips agent permissions during enrollment. example: false UseMobileNetwork: type: bool description: Indicates whether to use a mobile network for enrollment. example: false DownLoadAgentFrom42GearsWebsite: type: bool description: Indicates whether to download the agent from the 42Gears website. example: false WifiHidden: type: bool description: Indicates if the WiFi network is hidden. example: false WifiEapMethod: type: string description: WiFi EAP method (e.g., PEAP). example: PEAP WifiIdenty: type: string description: WiFi identity for EAP authentication. example: "" WifiAnonyms: type: string description: Anonymous identity for WiFi EAP. example: "" WifiPhase2Auth: type: string description: Phase 2 authentication method for WiFi (e.g., PAP). example: PAP WifiDomain: type: string description: Domain for WiFi authentication. example: "" WifiPACurl: type: string description: URL for WiFi PAC file. example: "" WifiProxyHost: type: string description: Proxy host for WiFi. example: "" WifiProxyPort: type: string description: Proxy port for WiFi. example: "" WifiProxyByPass: type: string description: Proxy bypass settings for WiFi. example: "" EnableDeepthought: type: bool description: Indicates whether DeepThought is enabled. example: false LanguageCode: type: string description: Language code for the device. example: "" CountryCode: type: string description: Country code for the device. example: "" ScreenOn: type: bool description: Keeps the screen on during enrollment. example: false LocalTime: type: string description: Local time for the device. example: "" EnableSystemApp: type: bool description: Indicates whether system apps are enabled during enrollment. example: false AccountDetailsResponseModel: type: object properties: message: type: string description: Message indicating the result of the operation. example: Role-based account details retrieved successfully. data: type: object properties: UserID: type: string description: User ID example: "sa" Company: type: string description: Name of the company example: "42Gears" Name: type: string description: Name of the user example: "Yashas" CustomerID: type: string description: User's Account ID example: "1" MaxDeviceCount: type: integer description: Maximum number of devices allowed example: 50 DeviceCount: type: integer description: Total device count example: 9 TotalStorageSize: type: integer description: Storage size in MB example: 1073741824 UsedStorageSize: type: integer description: Storage used in MB example: 956165961 IsTrial: type: boolean description: Whether the account is trial or purchased. example: false ExpiryDate: type: string description: Account expiry date example: "01/01/3011 12:00:00 AM" ODOORedirectUrl: type: string description: URL to redirect for Odoo operations example: "https://mymdmcompany.com/shop/cart/update_custom" MinLocationTrackingPeriodicity: type: integer description: Minimum location tracking periodicity in minutes example: 5 MinTelecomMgmtTracPeriodicity: type: integer description: Minimum telecom management tracking periodicity in minutes example: 15 HomeDeviceCount: type: integer description: Number of devices in the home group example: 8 HideDynamicJob: type: string description: Configuration for hiding dynamic jobs example: "[]" DateCreatedEpoch: type: integer description: Epoch timestamp of account creation example: 1618790400 useRingCaptchaSms: type: boolean description: Indicates whether RingCaptcha SMS is used. example: true bOptedInForMail: type: boolean description: Indicates whether the user opted in for promotional mails. example: false MSPID: type: string description: ID of the managed service provider example: null showAppPlugin: type: boolean description: Indicates whether to show the app plugin. example: true OPLicenseStatus: type: integer description: Status of the operational license example: 0 InternetConnectivity: type: boolean description: Indicates whether there is internet connectivity. example: false IsDeepThoughtConfigured: type: boolean description: Indicates whether DeepThought is configured. example: true IsSSHConfigured: type: boolean description: Indicates whether SSH is configured. example: true IsChromeOSConfigured: type: boolean description: Indicates whether Chrome OS is configured. example: false IsBigQueryEnabled: type: boolean description: Indicates whether BigQuery is enabled. example: true UseSaaSLicenseManagement: type: boolean description: Indicates whether SaaS license management is used. example: true CertForAPNSAvailable: type: boolean description: Indicates whether certificate for APNS is available. example: true NPSSurveyConfigurations: type: object properties: IsNpsEnabledInConfig: type: boolean description: Indicates if NPS is enabled in configuration. example: true IsNpsEnabledForCustomer: type: boolean description: Indicates if NPS is enabled for this customer. example: true IsWithinSurveyTimeSpan: type: boolean description: Indicates if it is within the survey time span. example: true NextNpsSurveyDate: type: string description: Date for the next NPS survey. example: "02/22/2024 11:49:59 AM" loginTime: type: string description: Last login time of the user. example: "10/09/2024 05:35:39 AM" IsUsingChargify: type: boolean description: Indicates whether Chargify is being used. example: true IsUsingODOO: type: boolean description: Indicates whether Odoo is being used. example: false IsAdminPanelAccount: type: boolean description: Indicates if this is an admin panel account. example: false HideLanguage: type: integer description: Indicates whether to hide the language selection. example: 0 Country: type: string description: Country of the user. example: "" LicensePurchasedDate: type: string description: Date when the license was purchased. example: null UseMasking: type: integer description: Indicates masking usage. example: 0 CustomerRegisteredDate: type: string description: Date when the customer registered. example: "04/19/2021 12:00:00 AM" AdditionalUsers: type: integer description: Number of additional users allowed. example: 0 authType: type: string description: Type of authentication used. example: "0" EnableMemConnector: type: boolean description: Indicates whether Memory Connector is enabled. example: true EnableZlaOTA: type: boolean description: Indicates whether ZLA OTA is enabled. example: true IsBillingSystemUnderMaintenance: type: boolean description: Indicates whether the billing system is under maintenance. example: false SortedToolbar: type: string description: JSON string representing sorted toolbar items. example: "[\"refreshButton\",\"remoteButton\",\"terminalButton\",\"appListBtn\",...]" isJobRevisionEnable: type: boolean description: Indicates whether job revision is enabled. example: true PatnerID: type: string description: ID of the partner. example: null PartnerName: type: string description: Name of the partner. example: "" isoddoConsentCustomer: type: boolean description: Indicates whether the customer has given consent for Odoo. example: true EnableHotjar: type: integer description: | Indicates whether Hotjar is enabled. - **0**: No - **1**: Yes example: 0 IsFreshDeskEnabled: type: boolean description: Indicates whether FreshDesk is enabled. example: false ServiceNowPluginEnabled: type: integer description: | Indicates if the ServiceNow plugin is enabled. - **0**: No - **1**: Yes example: 1 isoldconsoledepricated: type: integer description: | Indicates if the old console is deprecated. - **0**: No - **1**: Yes - **2**: Other example: 2 isGPTRunscriptEnable: type: integer description: | Indicates whether GPT run script is enabled. - **0**: No - **1**: Yes example: 0 EnableRelayServer: type: string description: | Indicates if the relay server is enabled. - **0**: No - **1**: Yes example: "0" StorageType: type: integer description: | Indicates the type of storage. - **0**: Default - **1**: Custom example: 0 LicenseExpiryDate: type: string description: Expiry date of the license. example: "01/01/3011 12:00:00 AM" EnableCriticalAgentUpgrade: type: string description: | Indicates if critical agent upgrades are enabled. - **0**: No - **1**: Yes example: "1" NewEnrollmentTypeCustomer: type: boolean description: Indicates if the customer is of a new enrollment type. example: false IsTemplate: type: boolean description: Indicates if the account is a template account. example: false UseGlobalJobs: type: boolean description: Indicates if global jobs are used. example: false ShowBitLockerProfileWindows: type: integer description: | Indicates if the BitLocker profile for Windows is shown. - **0**: No - **1**: Yes example: 1 EnableAdvPatchManagement: type: integer description: | Indicates if advanced patch management is enabled. - **0**: No - **1**: Yes example: 0 EnableAdvPatchManagementiOS: type: integer description: | Indicates if advanced patch management for iOS is enabled. - **0**: No - **1**: Yes example: 0 EnableAdvPatchManagementMacOS: type: integer description: | Indicates if advanced patch management for macOS is enabled. - **0**: No - **1**: Yes example: 0 EnableAdvPatchManagementLinux: type: integer description: | Indicates if advanced patch management for Linux is enabled. - **0**: No - **1**: Yes example: 0 GrantAgentPermission: type: integer description: | Indicates if agent permissions are granted. - **0**: No - **1**: Yes example: 1 DefaultOSUpdatesPlatform: type: string description: Default platform for OS updates. example: null ThirdPartyAppUpdateAvailability: type: integer description: | Availability status of third-party app updates. - **0**: Not available - **1**: Available example: 1 DLLVulnerabilityEmailList: type: string description: List of email addresses to notify about DLL vulnerabilities. example: null status: type: boolean description: Status of the operation. example: true CustomerOutputResponseModel: type: object properties: message: type: string description: Message indicating the result of the operation. example: Successfully retrieved customer details. data: type: object properties: CustomerId: type: string description: ID of the customer example: 1 Name: type: string description: Name of the customer example: customer name TotalDeviceLicenseCount: type: string description: Total number of device licenses available example: 5 Address: type: string description: Address of the customer example: '' Email: type: string description: Email of the customer example: test@gmail.com Phone1: type: string description: Phone number of the customer example: '1234567890' Phone2: type: string description: Phone number of the customer example: '1234567890' Fax: type: string description: Fax address of the customer example: +44 161 999 8888 status: type: boolean description: Status of the operation. example: true JobSearchRequestModel: type: object required: - Platform - SearchValue properties: Platform: type: string description: > Platform type of the device.
Click to expand supported platform values
Supported Column Name Value
Androidandroid
iOSios
Windowswindows
Windows CEwindows_ce
Windows Mobilewindows_mobile
Any OSany
Android Wearandroidwear
Linuxlinux
Android VRAndroidVR
MacOSmacos
tvOStvos
ChromeOSchromeos
Intel AMTIntelAmt
Thingsany

Note: Use the exact case given in the table for the corresponding platform value. example: "android" SearchValue: type: string description: Base64 encoded search keyword for filtering jobs. example: "dGVzdA==" Limit: type: integer description: Number of results to fetch (default = 20). example: 20 Offset: type: integer description: Number of records to skip before starting to return results (default = 0). example: 0 SortColumn: type: string description: | Column by which the results should be sorted (default = "LastModified"). **Supported Sort Columns:** - `JobName`, `Type`, `Platform`, `Size`, `LastModified`, `JobFolderPath`, `uploadStatus`
Note: Keep the column names in the same case as provided. example: "LastModified" SortOrder: type: string description: Sorting order (`asc` for ascending, `desc` for descending) (default = "desc"). example: "desc" JobSearchResponseModel: type: object properties: message: type: string description: Status message of the API response. example: "Success" data: type: object properties: total: type: integer description: Total number of matching jobs. example: 1 rows: type: array description: List of jobs matching the search criteria. items: type: object properties: JobID: type: string description: Unique identifier of the job. example: "5bcdd111-0d31-45a9-8bdc-639e60191606" JobName: type: string description: Name of the job. example: "Test Job" Size: type: integer description: Job size in bytes. example: 10240 Type: type: string description: Job type. example: "Application Deployment" Platform: type: string description: Platform associated with the job. example: "Android" LastModified: type: string format: date-time description: Last modified timestamp of the job. example: "2024-10-09T06:24:51.114Z" JobFolderPath: type: string nullable: true description: Job folder path if applicable. example: null JobFolderID: type: string nullable: true description: Job folder ID if applicable. example: null CustomerId: type: string description: Identifier of the customer. example: "1" Compliance: type: integer description: | Indicates the compliance status of the job.
- **1**: Compliant - **0**: Non-compliant status: type: boolean description: Indicates if the request was successful. example: true UploadFileModel: type: object required: - JobID - SubJobID - FileName - FileSize properties: JobID: type: string description: ID of the job. example: 62da7a4f-b17b-46e7-8571-60eec7b8561f SubJobID: type: string description: ID of the sub job. example: ec9c3482-b6dc-42a4-b2da-592693f5835f FileName: type: string description: 'Name of the file (with extension)
For example, "test.txt"' example: test.apk FileSize: type: integer description: Size of the file. (in bytes) example: 1533360 JobOutputModel: type: object properties: message: type: string description: Message indicating the result of retrieving the job details. example: Successfully retrieved job details. data: type: object properties: JobID: type: string description: ID of the job.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 7bb36bea-24a9-46d4-9b5e-4fe2cb01b181 JobFolderID: type: string description: ID of the job folder example: 'null' JobName: type: string description: Name of the job example: Test Platform: type: string description: Platform name example: android Type: type: string description: Type of the job example: Install Size: type: string description: Size of the job example: '1506' LastModified: type: string description: Last modified time stamp of the job example: '7/12/2018 7:06:19 AM' ScanStatus: type: string description: Scan Status example: 'N/A' status: type: boolean description: Status of the operation. example: true DeleteReportResponseModel: type: object properties: message: type: string description: The result message of the operation. example: "Report marked for deletion successfully.." data: type: boolean description: | false: Failed to delete report
true: Report deleted successfully example: true status: type: boolean description: Status of the operation. True for success, False for failure. example: true ReportGenerateResponseModel: type: object properties: message: type: string description: The result message of the operation. example: "Report request placed successfully" data: type: string description: | The offline report ID that can be used to retrieve report details later.
This ID can be used with the [Retrieve report details by ID](#operation/searchReportDetails) API to get detailed information about the generated report. example: "20218" status: type: boolean description: Status of the operation. True for success, False for failure. example: true DeleteReportFailureResponseModel: type: object properties: message: type: string description: The error message indicating the failure of the operation. example: "Failed to delete the report" data: type: null description: No additional data to return in case of failure. status: type: boolean description: Status of the operation. False indicates failure. example: false AddSmartFilterResponseModel: type: object properties: message: type: string description: Status message indicating the outcome of the operation. example: "Filter added successfully" data: type: boolean description: Indicates whether the operation was successful. example: true status: type: boolean description: Overall status of the operation. example: true example: message: "Filter added successfully" data: true status: true JobDeleteResponseModel: type: object properties: Message: type: string description: A message indicating the result of the job deletion operation. example: 'Job deleted successfully' Data: type: string description: Any additional data returned by the API, usually null for this operation. example: null Result: type: boolean description: Status of the job deletion operation. `true` if the job was successfully deleted, `false` otherwise. example: true JobDeleteFailedResponseModel: type: object properties: Message: type: string description: A message indicating the result of the job deletion operation. example: 'Job deletion failed' Data: type: string description: Any additional data returned by the API, usually null for this operation. example: null Result: type: boolean description: Status of the job deletion operation. `true` if the job was successfully deleted, `false` otherwise. example: false JobSizeResponseModel: type: object properties: Message: type: string description: A message indicating the result of the job size retrieval operation. example: 'Successfully retrieved job size details.' Data: type: integer description: The size of the job in bytes. example: 3432434 Result: type: boolean description: Status of the job size retrieval operation. `true` if the job size was successfully retrieved, `false` otherwise. example: true JobDeleteModel: type: object required: - FolderId - JobID properties: FolderId: type: string description: | ID of the job folder where the job is stored.
Folder ID can be retrieved using [Get all Folders](#operation/getAllFolders) API.
Note: **For home (default), the folder ID is null.** JobID: type: string description: 'ID of the job which you want to delete.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API.' example: '["4b7198ec-a300-4f4c-a27e-e473c4b831cc"]' JobType: type: string description: This field is always set to "JOBS" for this API. example: JOBS isFromJob: type: boolean description: | This field is always set to `true` for this API. example: true GetProfileResponseModel: type: object properties: message: type: string description: Status message related to the request. example: Profile details retrieved successfully. data: type: object properties: total: type: string description: Number of profiles found. example: '1' rows: type: array description: List of profiles retrieved. items: type: object properties: JobID: type: string description: ID of the profile.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: d159259a-5d4b-4ca2-a5aa-d5eebaf19b1e JobName: type: string description: Name of the profile. example: Compliance Size: type: integer description: Size of the profile in bytes. example: 952 Type: type: string description: Type of the profile. example: Folder Platform: type: string description: Platform on which the profile is used. example: "" LastModified: type: string description: Timestamp of the last modification of the profile. example: '2024-09-04T19:11:02.99Z' JobFolderPath: type: string description: Path of the folder where the profile is stored (by default null). example: null JobFolderID: type: string description: ID of the folder where the profile is stored. example: null ThingsHashCode: type: string description: Placeholder for an additional value. example: null CustomerId: type: string description: ID of the customer. example: "111111111" isVisible: type: integer description: Denotes whether the profile is visible.
0 - Hidden, 1 - Visible. example: 1 DefaultPolicy: type: string description: Denotes whether the profile is the default policy.
ValueDefault Profile
0No
1Yes
. example: "0" IsOnlyEMM: type: integer description: Denotes whether the profile is applied only to EMM-enrolled devices. example: 0 DefaultAMPolicy: type: string description: Placeholder for default AM policy, if applicable. example: null ScanStatus: type: string description: Status of the scan related to the profile. example: "N/A" JobFirmwareId: type: string description: ID of the firmware associated with the job. example: null JobHistoryVersion: type: string description: Version of the job history. example: "1" formattedJobType: type: string description: Formatted job type, if applicable. example: null jobPlatform: type: string description: Job platform type, if applicable. example: null OrganizationUnitID: type: string description: ID of the organization unit associated with the profile. example: null OrganizationUnitPath: type: string description: Path of the organization unit associated with the profile. example: null Compliance: type: integer description: | Indicates the compliance status of the job or profile.
- **1**: Compliant - **0**: Non-compliant example: 1 IsNotDeletable: type: boolean description: | Indicates whether the job folder can be deleted.
- **true**: The job folder is not deletable. - **false**: The job folder can be deleted. example: false IsSticky: type: boolean description: Indicates if the profile is sticky. example: true PredefinedType: type: integer description: Type of the predefined profile. example: 0 status: type: boolean description: Indicates whether the operation was successful. example: true ProfileSearchRequestModel: type: object required: - Platform - SearchValue properties: Platform: type: string description: | Platform type of the device. **Supported Platforms:** - ANDROID - IOS - WINDOWS - MACOS - TVOS - Linux - CHROMEOS example: "ANDROID" SearchValue: type: string description: Base64 encoded search keyword for filtering profiles. example: "c2VjdA==" Limit: type: integer description: Number of results to fetch (default = 20). example: 10 Offset: type: integer description: Number of records to skip before starting to return results (default = 0). example: 0 SortColumn: type: string description: | Column by which the results should be sorted (default = "LastModified"). **Supported Sort Columns:** - **For all platform types:** `JobName`, `Type`, `JobFolderPath`, `LastModified` - **For macOS:** `JobName`, `Type`, `JobFolderPath`, `LastModified`, `AppliesTo`
Note: Keep the column names in the same case as provided. example: "LastModified" SortOrder: type: string description: Sorting order (`asc` for ascending, `desc` for descending) (default = "desc"). example: "desc" ProfileSearchResponseModel: type: object properties: message: type: string description: Status message of the API response example: "Success" data: type: object properties: total: type: integer description: Total number of matching profiles example: 1 rows: type: array description: List of profiles matching the search criteria items: type: object properties: JobID: type: string description: Unique identifier id of the profile.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: "5bcdd111-0d31-45a9-8bdc-639e60191606" JobName: type: string description: Name of the profile example: "gfhj" Size: type: integer description: Profile size in bytes example: 5613 Type: type: string description: Profile type example: "ANDROID WORK PROFILE" Platform: type: string description: Platform associated with the profile example: "ANDROID" LastModified: type: string format: date-time description: Last modified timestamp of the profile example: "2024-10-09T06:24:51.114Z" JobFolderPath: type: string nullable: true description: Profile folder path if applicable example: null JobFolderID: type: string nullable: true description: Profile folder ID if applicable example: null CustomerId: type: string description: Identifier of the customer example: "1" DefaultPolicy: type: string description: Denotes whether the profile is the default policy.
ValueDefault Profile
0No
1Yes
. example: "0" JobHistoryVersion: type: string description: Profile history version number example: "1" Compliance: type: integer description: | Indicates the compliance status of the job or profile.
- **1**: Compliant - **0**: Non-compliant status: type: boolean description: Indicates if the request was successful example: true AssignProfileToGroupRequestModel: type: object properties: SeleectedGroups: type: array description: > List of Group IDs where the profile needs to be assigned.
- Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.
- **Note:** For the Home group, use `"null"` (as a string). example: ["a399fc28-219e-4913-b106-f335ab8a8e1b", "null"] items: type: string required: true ProfileId: type: string description: Unique identifier of the profile being assigned. Profile ID can be retrieved using the [Get details of all profiles](#operation/getDetailsOfAllProfile) API. example: "e9f92a55-04d6-40cc-8993-a5fabe70292d" required: true ProfileName: type: string description: Name of the profile. example: "ss" required: true IncludeSubGroups: type: integer description: > Determines whether to include subgroups when assigning the profile to a group.
- `1` → If the given Group ID has subgroups, their IDs will also be included.
- `0` → Subgroups will not be included. example: 1 AssignProfileToGroupResponseModel: type: object properties: message: type: string description: Response message. example: "Selected profile successfully assigned to the selected group(s)" status: type: boolean description: Request execution status. example: true ProfileSearchResponseMode1l1: type: object properties: message: type: string description: Status message related to the request. example: Profile details retrieved successfully. data: type: object properties: total: type: integer description: Total number of profiles found. example: 1 rows: type: array description: List of profiles matching the search criteria. items: type: object properties: JobID: type: string description: ID of the profile.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: d159259a-5d4b-4ca2-a5aa-d5eebaf19b1e JobName: type: string description: Name of the profile. example: "sectest" Size: type: integer description: Profile size in bytes. example: 11563 Type: type: string description: Type of profile. example: "ANDROID WORK PROFILE" Platform: type: string description: Platform of the profile. example: "ANDROID" LastModified: type: string format: date-time description: Timestamp of the last modification. example: "2025-02-13T07:06:04.184Z" JobFolderPath: type: string nullable: true description: Path of the profile folder (if applicable). example: null JobFolderID: type: string nullable: true description: ID of the profile folder (if applicable). example: null ThingHashCode: type: string nullable: true description: Hash code of the profile (if applicable). example: null CustomerId: type: string description: Customer identifier. example: "111111111" isVisible: type: integer description: Denotes whether the profile is visible.
0 - Hidden, 1 - Visible. IsOnlyEMM: type: integer description: Indicates if the profile is for EMM-only devices. example: 0 DefaultPolicy: type: string description: Denotes whether the profile is the default policy.
ValueDefault Profile
0No
1Yes
. example: "0" DefaultAMPolicy: type: string nullable: true description: Default Application Management policy. example: null ScanStatus: type: string description: Scan status of the profile. example: "N/A" JobFirmwareId: type: string nullable: true description: Firmware ID related to the profile. example: null JobHistoryVersion: type: string description: Version number of the job history. example: "2" formattedJobType: type: string nullable: true description: Formatted job type. example: null jobPlatform: type: string nullable: true description: Platform of the job. example: null OrganizationUnitID: type: string nullable: true description: Organization Unit ID. example: null OrganizationUnitPath: type: string nullable: true description: Path of the Organization Unit. example: null Compliance: type: integer description: | Indicates the compliance status of the job or profile.
- **1**: Compliant - **0**: Non-compliant IsNotDeletable: type: boolean description: | Indicates whether the job folder can be deleted.
- **true**: The job folder is not deletable. - **false**: The job folder can be deleted. IsSticky: type: boolean description: Indicates if the profile is sticky. example: false PredefinedType: type: integer description: Type of predefined profile. example: 0 ProfileScope: type: string nullable: true description: Scope of the profile. example: null status: type: boolean description: Indicates whether the operation was successful. example: true ProfileOutputModel: type: object properties: message: type: string description: Status message for profile details. example: Profile details retrieved successfully. data: type: object properties: JobID: type: string description: ID of the profile.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: f7b81621-1c85-4c3a-921d-0546f31ea809 JobName: type: string description: Name of the profile. example: am-default LastModified: type: string description: Timestamp of the last modification of the profile. example: '2024-10-10T06:43:14.824Z' DefaultPolicy: type: string description: Whether the profile is the default policy.
ValueDefault Profile
0No
1Yes
. example: "0" Profile: type: string description: The configuration details of the profile. example: "{\"applicationPolicy\":{\"defaultPermission\":0,\"enablePlayStore\":false,\"systemApplicationPolicy\":null,\"playstoreApplicationPolicy\":[{\"packageId\":\"com.whatsapp\",\"allowPinnigApp\":\"N/A\",\"ApplicationType\":\"Play Store\"}" IsAndroidManagementPolicy: type: string description: Indicates whether the profile is an Android Management policy.
ValueAndroid Management Profile
0No
1Yes
. example: "1" JobType: type: string description: Type of profile applied on the device. example: ANDROID MANAGEMENT PROFILE DefaultAMPolicy: type: string description: Indicates whether the job is a default Android Management policy.
ValueDefault AM Policy
0No
1Yes
. example: "1" status: type: boolean description: Indicates whether the operation was successful. example: true ApiVersionResponseModel: type: object properties: message: type: string description: Message indicating the result of the API version retrieval. example: Successfully retrieved API version. data: type: string description: SureMDM API version example: 1.6 status: type: boolean description: Status of the operation. example: true CreateProfile: allOf: - $ref: '#/components/schemas/JobCreateModel' - $type: object properties: FolderId: type: string description: | ID of the job folder where the job is stored.
Folder ID can be retrieved using [Get all Folders](#operation/getAllFolders) API.
Note: **For home (default), the folder ID is null.** example: null # IsNotDeletable: # type: boolean # description: | # Indicates whether the job folder can be deleted.
# - **true**: The job folder is not deletable. # - **false**: The job folder can be deleted. # example: false JobID: type: string description: | ID of the job which you want to delete.
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API.
Example: "22c245da-df91-4bd2-9ee9-75a9ccf61142" example: null JobName: type: string description: | The name of the job.
This identifies the specific job that is associated with the folder. example: "gfhj" # compliance: # type: integer # description: | # Indicates the compliance status of the job or profile.
# - **1**: Compliant # - **0**: Non-compliant # example: 1 JobType: type: string description: | Create New Profile
Job for creating a new profile.

Profiles are bundles of settings that allow admins to shape the way enrolled devices look and work. example: sample_profile Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows", "iOS", "macOS", "linux" example: android PayLoad: description: | Profile specific payload
If the policy is not configured, then by default the value is null. {"applicationPolicy":null,"passwordPolicy":{"ProfileType":"1","deviceMinimumPasswordComplexity":"0","quality":"0","minimumLength":null,"maximumFailedAttempts":null,"expirationTimeout":null,"historyLength":null,"maximumTimeToLock":null,"minimumLetters":null,"minimumLowercaseLetters":null,"minimumUppercaseLetters":null,"minimumNumericCharacters":null,"minimumSymbols":null,"minimumNonLetters":null,"idleTimeStrongAuthentication":null,"lockScreenToNone":false,"selectedCompliance":1},"systemSettings":null,"globalProxy":null,"brandingConfig":null,"vpnConfig":null,"enterpriseAppStore":null,"caCertificatePolicy":null,"mailConfigurationPolicy":null,"wifiConfigurationPolicy":null,"wifiConfigurationPolicyMultiple":null,"fileSharingPolicy":null,"mobileThreatPrevention":null,"astromailconfigurationPolicy":null,"UseAFW":false,"compliancePolicy":null,"oemConfigPolicy":null,"tunnelSettings":null,"isSavedFromV3":true} The payload should be passed as a **stringified JSON**, meaning the entire JSON object must be converted into a string format before sending. Instead of sending raw JSON . For more details on JSON stringification, refer to the [Wikipedia article on JSON](https://en.wikipedia.org/wiki/JSON#Data_interchange).
Example of Stringified JSON **Raw JSON:** ```json { "fileSharingPolicy": { "enableFileSharing": true, "allowedFileTypes": ["pdf", "docx"], "maxFileSizeMB": 10 } } ``` **Stringified JSON (correct format for sending in the payload):** ```json "{\"fileSharingPolicy\":{\"enableFileSharing\":true}" ```
Example JSON for fileSharingPolicy ```json { "deleteFileSharingPolicy": "1", "uploadFileSharingPolicy": "1", "ignoreHomeFileSharingPolicy": false, "ignoreSharedFileSharingPolicy": false, "enableHomeFolderiOS": "default", "enableSharedFolderiOS": "default", "efssFiles": [ { "id": "v1_Qm9vazEueGxzeA2", "fileName": "Book1.xlsx", "fileSize": 15016, "GUID": "MTEyMTAwMDM4JTJGRmlsZSUyMFN0b3JlJTJGQm9vazEueGxzeA==", "fileExtension": "xlsx", "isFile": true, "subItemsJsonArray": null, "s3BaseUrl": "111111111/File Store/Book1.xlsx", "isRecursive": false, "autoDownload": true } ], "setDownloadPathFileSharingPolicy": null, "deviceToCloud": { "preference": "2", "maxFileLength": 10, "fileDataUnit": "mb", "datatransferlimit": [ { "durationType": "weekly", "size": 1, "dataUnit": "mb" } ], "fileSyncConfig": [ { "source": "/dsfds/", "destination": "\\sadsadsad\\$device_id$\\", "wildcardSelect": "device_id", "preSyncScript": "dsadsadsa", "postSyncScript": "asdsadsad", "scriptExecution": "1", "scheduleSync": { "scheduleType": "periodically", "scheduleData": [ { "periodically": 30 } ] } } ] } } ```
allOf: - $ref: '#/components/schemas/AndroidWorkProfilePayLoad' example: FolderId: null # IsNotDeletable: false JobID: null JobName: "sample_profile" JobType: ANDROID WORK PROFILE Platform: Android # compliance: 1 Payload: - '{"applicationPolicy":null,"passwordPolicy":{"ProfileType":"1","deviceMinimumPasswordComplexity":"0","quality":"0","minimumLength":null,"maximumFailedAttempts":null,"expirationTimeout":null,"historyLength":null,"maximumTimeToLock":null,"minimumLetters":null,"minimumLowercaseLetters":null,"minimumUppercaseLetters":null,"minimumNumericCharacters":null,"minimumSymbols":null,"minimumNonLetters":null,"idleTimeStrongAuthentication":null,"lockScreenToNone":false,"selectedCompliance":1},"systemSettings":null,"globalProxy":null,"brandingConfig":null,"vpnConfig":null,"enterpriseAppStore":null,"caCertificatePolicy":null,"mailConfigurationPolicy":null,"wifiConfigurationPolicy":null,"wifiConfigurationPolicyMultiple":null,"fileSharingPolicy":null,"mobileThreatPrevention":null,"astromailconfigurationPolicy":null,"UseAFW":false,"compliancePolicy":null,"oemConfigPolicy":null,"tunnelSettings":null,"isSavedFromV3":true}' AndroidWorkProfilePayLoad: type: array items: type: object properties: applicationPolicy: type: object description: | Add System Application Policies. properties: SystemApplicationPolicy: type: array items: type: object properties: packageId: type: string description: Package ID of the selected application example: com.google.android.gm allowPinnigApp: type: boolean description: d example: false allowInKioskMode: type: boolean description: Whether to allow selected application to run in Kiosk Mode example: true permissionGrantState: type: array items: type: object properties: permission: type: string description: Types of permissions to be provided. example: All state: type: integer description: | Whether to make application default or to grant or deny permissions. The table below indicates options available.
DescriptionValue
Prompt0
Grant
1
Deny
2
example: 0 ApplicationType: type: string description: 'Type of application. It can be System Application, Enterprise Application or Playstore Application' example: System Application playstoreApplicationPolicy: type: string description: anssj example: null passwordPolicy: type: object description: | Settings related to password. properties: ProfileType: type: string description: | Refer the table below
Profile Type Value Description
1 Device Security

2
Work Security
3
Device & Work Security
example: 1 quality: type: string description: | Refer the table below for Quality values
Password Quality Value
Description
null
none
0
Unspecified
262144
Alphabetic
327680 Alphanumeric
131072 Numeric
393216 Complex
65536 Any
example: 327680 workProfileQuality: type: string description: | Quality of work profile password. Enum value same as the above example: 327680 expirationTimeout: type: integer description: Value in days to be passed uptil the set password can be active. MDM converts the number of days into mili-seconds. example: 36000000 historyLength: type: string description: Number of times password must be changed before a previous password can be used again. example: 5 maximumFailedAttempts: type: string description: 'Number of unsuccessful attempts allowed, if threshold is reached device is wiped' example: 2 workProfileMinimumLength: type: string description: Minimum Device Password Length example: 8 minimumLength: type: string description: Minimum password length for work profile example: 8 maximumTimeToLock: type: integer description: 'Value in seconds to be passed, MDM converts value into mili-seconds' example: 60000 systemSettings: type: object description: | Settings related to Device functionality, Sync and Storage, Application etc. properties: defaultPermission: type: integer description: | Refer table below
Permission Value
Description
0
Prompt
1
Grant
2 Deny
example: 0 unknownSources: type: integer description: | Refer the table below
Value Description
1
Allow installation from unknown sources
-1
Don't allow installation from unknown sources
example: -1 systemUpdatePolicy: type: integer description: System update policy configuration| Refer the table below
DescriptionValue
Don't care0
Automatic
1
Windowed
2
Postpone
3
example: 1 usbDebugging: type: integer description: It states that ISB debugging is enabled or disabled. It allows apps to be installed via USB for testing purpose.
Refer the table below
DescriptionValue
Disable
0
Enable
1
example: 1 windowedSystemUpdateEndTime: type: string description: If specific time is set for update. It states the end time in minutes example: 1440 windowedSystemUpdateStartTime: type: string description: If specific time is set for update. It states the start time in minutes example: 1380 disableScreenCapture: type: boolean description: Specifies if the user is not allowed to capture screen example: true disableSafeMode: type: boolean description: Specifies if the user is not allowed to reboot the device into safe boot mode example: true enableAllSystemApps: type: boolean description: Specifies if the device is enabled for accessing system apps. example: true kioskMode: type: boolean description: Specifies if the user is allowed to use SureMDM Nix in kiosk mode example: true kioskExitPassword: type: string description: Specifies the password to exit kiosk mode if set by admin example: 12345 disableFactoryReset: type: boolean description: Specifies if the user is disallowed from factory resetting from settings of device example: true factoryResetProtectionAdmin: type: array items: type: object properties: emailAddress: type: string description: Email address to send mail if factory reset is done on device example: abc@gmail.com accountID: type: string description: Account ID of entered email address example: 114254907466748310000 disableVolume: type: boolean description: Specifies if the user is disallowed from adjusting master volume example: false disableAppControl: type: boolean description: Specifies if the user is disallowed from modifying applications in settings or launcher example: true disableAppsUninstallation: type: boolean description: Specifies if the user is disallowed from uninstalling application from device example: true disableBluetoothConfiguration: type: boolean description: Specifies if the user is disallowed from configuring bluetooth example: true disableCredentialsConfiguration: type: boolean description: Specifies if the user is disallowed from configuring user's credentials example: true disableMobileNetworksConfiguration: type: boolean description: Specifies if the user is disallowed from configuring mobile networks example: true disableTetheringConfiguration: type: boolean description: Specifies if the user is disallowed from configuring tethering and portable mobile hotspots example: true disableVPNConfiguration: type: boolean description: Specifies if the user is disallowed from configuring VPN example: true disableWifiConfiguration: type: boolean description: Specifies if the user is disallowed from changing Wi-Fiaccess points example: true disableCrossProfileCopyPaste: type: boolean description: Specifies if what is copied in the clipboard of this profile and can be pasted in related profiles example: true disableAppsInstallation: type: boolean description: Specifies if the user is disallowed from installing applications example: true disableAccounts: type: boolean description: Specifies if the user is disallowed from adding or removing accounts unless they are programatically added/removed by administrator example: true disableOutgoingCall: type: boolean description: Specifies that user is not allowed to make any outgoing phone calls example: true disableLocationSharing: type: boolean description: Specifies if the user is disallowed from turning on location history example: true disableSMS: type: boolean description: Specifies if the user is not allowed to send or receive SMS message example: true disableMicrophone: type: boolean description: Specifies if the user is disallowed from adjusting microphone volume example: true disableUSBFileTransfer: type: boolean description: Specifies if the user is disallowed from transferring files over USB example: true disableAddUser: type: boolean description: Specifies if the user is disallowed from adding new users example: true disableRemoveUser: type: boolean description: Specifies if the user is disallowed from removing users example: true disableDataRoaming: type: boolean description: Specifies if the user is not allowed to use cellular data from roaming. Supports devices from Android 7.0 version and above example: true disableNetworkReset: type: boolean description: Specifies if the user is disallowed from resetting network settings. Supports devices with Android 6.0 version and abpove example: trye disableOutgoingBeam: type: boolean description: Specifies if the user is not allowed to use NFC to beam out the data. Supports devices with Android 5.1 and above example: true disableWallpaper: type: boolean description: Specifies if the user is disallowed from setting of wallpaper. Supports devices with Android version 7.0 and above example: false bluetooth: type: boolean description: Specifies if bluetooth is enabled or disabled(user choice, enable, disable). Supported from android 9 and suremdm agent v27.15.03 onwards. stayOnWhilePluggedIn: type: boolean description: specifies if device screen should be kept on while plugged in. ringerMode: type: boolean description: Specifies the ringer mode of the device enableUSBMassStorage: type: boolean description: Specifies if USB Mass storage is enabled disableAllKeyguardFeatures: type: boolean description: Disable all current and future keyguard customization disableKeyguardCamera: type: boolean description: Disable secure camera on sercure keygaurd screen disableKeyguardNotifications: type: boolean description: disable all notifications appear on secure keyguard screen. disableKeyguardUnredactedNotifications: type: boolean description: disable unredacted notification appear on secure keygaurd screen. disableKeyguardTrustAgentsState: type: boolean description: disable trust agents in secure keygaurd screen. disableKeyguardFingerprint: type: boolean description: disable fingerprint sensor on secure keyguard screen. disableKeyguardRemoteInput: type: boolean description: disable text entry into notificaiton on secure keyguard screen. disableKeyguardFaceAuthentication: type: boolean description: disable face authentication on secure keyguard screen. disableKeyguardIrisAuthentication: type: boolean description: disable iris authentication on secure keyguard screen. disableKeyguardBiometricAuthentication: type: boolean description: disable all biometric authentication on secure keygaurd screen. isDeviceAppsFeedbackReportEnabled: type: boolean description: Device reports app states to the EMM appsAutoUpdate: type: boolean description: The auto-update policy for apps installed on the device. Refer the table below
DescriptionValue
Always0
User CHoice
1
Wi-Fi only
2
Never
3
playStoreBehavior: type: boolean description: Manage apps that your users can install from the playstore disableConfigDateAndTime: type: boolean description: Specifies configuring date, time and timezone is disallowed via settings. Supported from android 9 and suremdm agent v27.15.03 onwards. autoTimeRequired: type: boolean description: Specifies configuring date and time is disallowed via settings. Supported from android 8.0 to Android 11 and suremdm agent v27.15.03 onwards. autoTimeEnabled: type: boolean description: Specifies configuring date and time is disallowed via settings. Supported from android 8.0 to Android 11 and suremdm agent v27.15.03 onwards. autoTimeZoneEnabled: type: boolean description: Specifies configuring timezone is disallowed via settings. Supported from android 8.0 to Android 11 and suremdm agent v27.15.03 onwards. lockScreenMessage: type: boolean description: Sets the device owner information to be shown on the lock screen. Supported from android 7 and suremdm v27.15.03 onwards. disableStatusBar: type: boolean description: Specifies if a user is disallowed from accessing the status bar. Supported from android 6 and suremdm v27.15.03 onwards. disableConfigCellBroadcast: type: boolean description: Specifies if a user is disallowed from configuring cell broadcasts. Supoorted from android 5 and suremdm v27.15.03 onwards. disableCreateWindows: type: boolean description: Specifies that windows besides app windows should not be created. Supported from android 5.0 and v27.15.03 onwards. disableSystemErrorDialogs: type: boolean description: Specifies that system error dialog sfor crashed or unresponsive apps should not be shown. Supported from android 9 and v27.15.03 onwards. disableFun: type: boolean description: Specifies if the user is not allowed to have fun. Supported from android 9 and suremdm agent v27.15.03 onwards. disableMountPhysicalMedia: type: boolean description: Specifies if a user disallowed from mounting physical external media. Supported from android 5.0 and v27.15.03 onwards. disableSetUserIcon: type: boolean description: Specifies if a user is not allowed to change their icon. Supported from android 7 and suremdm v27.15.03 onwards. disableAppVerify: type: boolean description: Specifies if a user is disallowed from disabling application verfication. Supported from android 5.0 and v27.15.03 onwards. disableAutoFill: type: boolean description: Specifies is a user is not allowed to use autofill services. Supported from android 8.0 to Android 11 and suremdm agent v27.15.03 onwards. disableUserSwitch: type: boolean description: Specifies if user switching is blocked on the current user. Supported from android 9 and suremdm agent v27.15.03 onwards. disableAirplaneMode: type: boolean description: Specifies if airplane mode is disallowed on the device. Supported from android 9 and suremdm agent v27.15.03 onwards. disableConfigBrightness: type: boolean description: Specifies is a user is disallowed from configuring brightness. Supported from android 9 and suremdm agent v27.15.03 onwards. disableConfigScreenTimeout: type: boolean description: Specifies if a user is disallowed from changing screen off timeout. Supported from android 9 and suremdm agent v27.15.03 onwards. disableAmbientDisplay: type: boolean description: Specifies if ambient display is disallowed for the user. Supported from android 9 and suremdm agent v27.15.03 onwards. disablePrinting: type: boolean description: Specifies whether the user is allowed to print. Supported from android 9 and suremdm agent v27.15.03 onwards. disableConfigPrivateDNS: type: boolean description: Specifies whether the user is allowed to modify private DNS settings. Supported from android 10 and suremdm agent v27.15.03 onwards. enableBackupAndRestore: type: boolean description: Specifies if the user is allowed to enable backup and restore on the device. This option is supported on suremdm agent v >= 27.10.06 disableConfigLocation: type: boolean description: Specifies if a user is disallowed from enabling or disabling location providers. Supported from android 9 and suremdm v27.15.03 wifi_state: type: boolean description: Specifies if wi-fi is enabled or disabled. transferViaBluetooth: type: boolean description: Specifies if a device is allowed to transfer data over bluetooth. Supported from suremdm version > 27.08.01 enterpriseAppStore: type: object properties: eamWebApps: type: array items: type: object properties: AppTitle: type: string description: Title of an application example: Myntra AppVersion: type: string description: Application version number example: null AutoInstallApp: type: boolean description: Permission to install app automatically example: false AppCategory: type: string description: Category of application example: Shopping AppDescription: type: string description: Description of an application example: Shop AppIcon: type: string description: Application Icon example: null PlatformType: type: string description: Platform type example: Android Package: type: string description: Package of web app example: 'https://play.google.com/store/apps/details?id=com.myntra.android' AppSize: type: string description: It is a web app. It is in terms of Bytes (B) example: 0 AppURL: type: string description: URL of web app example: 'https://play.google.com/store/apps/details?id=com.myntra.android' GUID: type: string description: Unique identifier of web application example: 92e5b55e-8669-4089-a17c-bc10557e7342 IsS3Storage: type: boolean description: Whether the app is stored in SureMDM's appstore example: false AppVersionCode: type: string description: 'Version code of an application, for web apps it is null' example: null ApplicationType: type: string description: Type of application example: Enterprise Application AppType: type: integer description: | Type of enterprise app
DescriptionValue
Enterprise application
0
Enterprise web app
1
example: 1 eamApps: type: array items: type: object properties: AppTitle: type: string description: Title of an application example: Prime Video AppVersion: type: string description: Application version number example: 3.0.247.92241 AutoInstallApp: type: boolean description: Permission to install app automatically example: false AppCategory: type: string description: Category of application example: Entertainment AppDescription: type: string description: Description of an application example: Movies and TV shows AppIcon: type: string description: Application icon example: ../img/MamAppImages/no-image-for-app.png PlatformType: type: string description: Platform type example: Android Package: type: string description: Package of web app example: com.amazon.avod.thirdpartyclient AppSize: type: string description: Size of application in terms of Bytes (B) example: 28825861 AppURL: type: string description: URL of application stored in SureMDM's appstore example: 1/EAM/Android/0c44e72d-3c40-4370-b464-066401732f13 GUID: type: string description: Unique identifier of web application example: 0c44e72d-3c40-4370-b464-066401732f13 IsS3Storage: type: boolean description: Whether the app is stored in SureMDM's appstore example: true AppVersionCode: type: string description: 'Version code of an application, for web apps it is null' example: 247092241 ApplicationType: type: string description: Type of application example: Enterprise Application AppType: type: integer description: | Type of enterprise app
DescriptionValue
Enterprise application
0
Enterprise web app
1
example: 0 caCertificatePolicy: type: object properties: certificates: type: array items: type: object properties: name: type: string description: Name of the certificate to be installed |
ParameterSCEP value
Value
NameTrue
Name of the certificate to be created
False
Name of the certificate uploaded
DataTrueName of the certificate preceded by %SCEPCERT%
FalseUploaded certificate in Base64 encoded format
GUIDTrueName of the certificate preceded by %SCEPCERTGUID%
FalseUnique Identifier of uploaded certificate
PasswordTrue%SCEPCERTPFXPWD%
FalsePassword
example: democertificate.cer data: type: string description: Certificate encoded in Base64 format.
If SCEP value is true than data is certificate name that is to be created example: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGN3pDQ0JOZWdBd0lCQWdJUkFOZFZqOXIxOFJCYnNoTW9LM0IzS2FNd0RRWUpLb1pJaHZjTkFRRUZCUUF3DQpnWmN4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSUV3SlZWREVYTUJVR0ExVUVCeE1PVTJGc2RDQk1ZV3RsDQpJRU5wZEhreEhqQWNCZ05WQkFvVEZWUm9aU0JWVTBWU1ZGSlZVMVFnVG1WMGQyOXlhekVoTUI4R0ExVUVDeE1ZDQphSFIwY0RvdkwzZDNkeTUxYzJWeWRISjFjM1F1WTI5dE1SOHdIUVlEVlFRREV4WlZWRTR0VlZORlVrWnBjbk4wDQpMVWhoY21SM1lYSmxNQjRYRFRFeE1ETXhOVEF3TURBd01Gb1hEVEUwTURNeE5ESXpOVGsxT1Zvd2dkOHhDekFKDQpCZ05WQkFZVEFsVlRNUTR3REFZRFZRUVJFd1V6T0RRM056RVFNQTRHQTFVRUNCTUhSbXh2Y21sa1lURVFNQTRHDQpBMVVFQnhNSFJXNW5iR2x6YURFWE1CVUdBMVVFQ1JNT1UyVmhJRlpwYkd4aFoyVWdNVEF4RkRBU0JnTlZCQW9UDQpDMGR2YjJkc1pTQk1kR1F1TVJNd0VRWURWUVFMRXdwVVpXTm9JRVJsY0hRdU1TZ3dKZ1lEVlFRTEV4OUliM04wDQouLi4NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= |
Note- %SCEPCERT%democertificate (If SCEP value is equals to 'true') SCEP: type: boolean description: Specifies to create certificate using SCEP example: true GUID: type: string description: | Unique identifier of certificate example: 058e01fd-2f17-441e-909d-3bbf8a87ae3f Password: type: string description: Password of the device example: 12345 CredentialType: type: string description: | Certificate usage type
ParameterValue
VPN and apps0
Wi-Fi
1
example: 0 SCEPOveride: type: boolean description: Overrides Account-wide SCEP settings example: true AddressCaServer: type: string description: URL of the CA Server. example: 127.0.0.1 TemplateName: type: string description: Template that is fetched from CA server example: alias Wildcard: type: string description: Configuration the wild card name as IMEI/ MAC Address/ Device Id/ Serial Number on the CA server. example: MAC CertificateRenewal: type: string description: Renews the certificate automatically before the specified days/weeks/months/years. example: 2 CertificateRenewalUnit: type: string description: | Certificate renewal unit enum: - DAY - WEEK - MONTH - YEAR example: DAY SANWildcard: type: string description: Configure the alternate wild card name as IMEI/ MAC Address/ Device Id/ Serial Number /Constant Text on the CA server. example: test@domain.com OTPusername: type: string description: OTP username example: test@domain.com OTPpassword: type: string description: Encrypted password example: 123qwer mailConfigurationPolicy: type: object properties: emailAddress: type: string description: Email address example: test@domain.com hostName: type: string description: Name of the email server example: Domain userName: type: string description: Username of the email account example: User42 deviceIdentifier: type: string description: Device Identifier example: ///////////// sslRequired: type: integer description: | It allows or denies all communications through the Secure Socket Layer.
ParameterValue
0
Allowed
1
Denied
2
example: 1 trustAllCertificate: type: integer description: | Specifies to trust certificates or not.
ParameterValue
0
Allowed
1
Denied
2
example: 1 loginCertificateAlias: type: string description: Certificate alias value example: alias emailSignature: type: string description: Email signature to be displayed on all outgoing emails example: Thanks & Regards defaultWindow: type: string description: Sync period time interval in minutes example: 5 globalProxy: type: object properties: proxyType: type: string description: | Table below contains description of proxy type
DescriptionValue
None
-1
Auto
1
Manual
0
example: 1 proxyServer: type: string description: Server address of proxy server example: 192.110.10.1 proxyPort: type: integer description: Port details of proxy server example: 5050 proxyPACUrl: type: integer description: PAC file defines how web browsers/devices can automatically choose the appropriate access method (proxy or direct) for fetching a given URL example: 'http://pac.webdefence.global.blackspider.com:8082/proxy.pac' vpnConfig: type: object properties: vpnAlwaysOnPackageName: type: string description: 'If VPN is always set on, the package name of VPN' example: com.android.nord vpnAlwaysOnLockdownEnabled: type: boolean description: This option disables the network connection when VPN is not connected. example: true mobileThreatPrevention: type: object properties: SystemScan: type: object properties: TimeZoneType: type: integer description: Time zone of the time selected. By default it is 1 which indicates UTC time zone example: 1 (UTC time zone) IsEnabled: type: boolean description: It states whether system scan is enabled or not example: true Days: type: array items: type: integer example: - 1 - 2 - 3 - 4 - 5 - 6 description:
DescriptionValue
Monday
1
Tuesday
2
Wednesday3
Thursday4
Friday5
Saturday6
Sunday7
Time: type: string description: Scheduled time of scan in accordance with time zone selected example: '05:30' ScanURL: type: object properties: TimeZoneType: type: integer description: Time zone of the time selected. By default it is 1 which indicates UTC time zone example: null IsEnabled: type: boolean description: It states whether system scan is enabled or not example: false Days: type: array items: type: integer example: null description:
DescriptionValue
Monday
1
Tuesday
2
Wednesday3
Thursday4
Friday5
Saturday6
Sunday7
Time: type: string description: Scheduled time of scan in accordance with time zone selected example: null wifiConfigurationPolicy: type: object properties: ssid: type: string description: | Name of WiFi network
Open
WEPWPA/WPA2 PSEKEAP/TLSPEAP
SSID✔️✔️✔️✔️✔️
Security Type✔️✔️✔️✔️✔️
Password
✔️✔️✔️✔️
Identity
✔️✔️
CA certificates✔️✔️
User certificates✔️
Phase 2 authentication✔️
Anonymous identity✔️
Auto connect✔️✔️✔️✔️✔️
Hidden network✔️✔️✔️✔️✔️
example: 42Gears securityType: type: string description: | Security type of Wi-FI
ParameterValue
Open0
WEP1
WPA/WPA PSK2
2
EAP/TLS
3
PEAP
4
example: 2 identity: type: string description: Identity of Certificate example: User42 caCertificateData: type: string description: GUID of certificate selected from drop down menu example: 058e01fd-2f17-441e-909d-3bbf8a87ae3f PasswordBasedAuthentication: type: boolean description: Checks whether password authentication is present CA certificate added example: true password: type: string description: Password of CA certificate added example: Pass@123 phase2: type: integer description: |
ParameterValue
None
0
GTC3
MSCHAPV2
4
example: 1 anonymousIdentity: type: string description: Anonymous identity name example: alias autoConnect: type: boolean description: This allows Wifi to be connected automatically when device gets in range of WiFi example: true hiddenNetwork: type: boolean description: It states to make Wifi hidden by not presenting the SSID of WiFi. To connect to this type of network user needs to enter the SSID. example: false astromailconfigurationPolicy: type: object properties: emailAddress: type: string description: Email address example: test@domain.com password: type: string description: Name of the email server example: Domain accountType: type: integer description: | Email account type
ParameterValue
Active Sync
3
POP3
2
IMAP
1
example: 1 incomingServerPath: type: string description: Incoming mail server address example: 10.10.1.10 security: type: integer description: | Specifies the security layer (None / (SSL/TLS) / STARTTLS) of authentication for sending mails.
ParameterValue
None
0
SSL/TLS
1
STARTTLS
2
example: 1 port: type: string description: | Incoming mail server's port number. example: 9090 userName: type: string description: Username of email account example: John Doe authenticationType: type: integer description: It is mandatory value that is to be passed along with. It is 0 everytime example: 0 outgoingServerPath: type: string description: Outgoing mail server address example: 10.10.1.11 outgoingPort: type: string description: | Outgoing mail server's port number. example: 1010 requireSignIn: type: boolean description: Required sign in option example: true outgoingUserName: type: string description: Username for email account used for outgoing emails example: John Doe outgoingPassword: type: string description: Password for email account used for outgoing emails example: Pass@123 outgoingSecurity: type: integer description: | Specifies the security layer (None / (SSL/TLS) / STARTTLS) of authentication for receiving mails.
ParameterValue
None
0
SSL/TLS
1
STARTTLS
2
example: 1 restrictionOnReplyToOutsideDomain: type: boolean description: Species if user is disallowed to reply to emails outside the domain example: true restrictionOnReplyToInsideDomain: type: boolean description: Species if user is disallowed to reply to emails inside the domain example: false restrictionOnForwardEmailToOutsideDomain: type: boolean description: Species if user is disallowed to forward emails outside the domain example: true restrictionOnForwardEmailToInsideDomain: type: boolean description: Species if user is disallowed to forward emails inside the domain example: false viewAttachment: type: boolean description: Species if user is disallowed to view attachment received from mail example: false onForwardingAttachement: type: boolean description: Species if user is disallowed to forward emails containing attachment example: true downloadAttachment: type: boolean description: Species if user is disallowed to download attachment received from mail example: false screenshot: type: boolean description: Species if user is disallowed to take the screenshot example: true copyToClipboard: type: boolean description: Species if user is disallowed to copy the text from emails example: true fileSharingPolicy: type: object properties: deleteFileSharingPolicy: type: string description: This option represents whether file deletion is allowed under file sharing policies. example: "1" uploadFileSharingPolicy: type: string description: This option represents whether file upload is allowed under file sharing policies. example: "1" ignoreHomeFileSharingPolicy: type: boolean description: If set to `true`, home file sharing policies will be ignored. example: false ignoreSharedFileSharingPolicy: type: boolean description: If set to `true`, shared file sharing policies will be ignored. example: false enableHomeFolderiOS: type: string description: This option represents the state of the home folder for iOS devices. example: "default" enableSharedFolderiOS: type: string description: This option represents the state of the shared folder for iOS devices. example: "default" setDownloadPathFileSharingPolicy: type: string description: Defines the download path for file-sharing policy. example: null efssFiles: type: array description: List of EFSS (Enterprise File Sync and Share) files available for sharing. items: type: object properties: id: type: string description: Name of the file in Base64 encoded format preceded by v1. example: v1_dW50aXRsZWQgZm9sZGVyXA2 fileName: type: string description: Name of the file to be shared. example: Test folder fileSize: type: integer description: Size of file in bytes. example: 0 GUID: type: string description: Unique identifier of the file or directory. example: MS9GaWxlIFN0b3JlL3VudGl0bGVkIGZvbGRlci8= fileExtension: type: string description: Extension of the shared file. If it is a directory, the extension would be "directory". example: directory isFile: type: boolean description: Indicates whether the shared item is a file or a directory. example: false subItemsJsonArray: type: array description: List of sub-items if the shared item is a directory. items: type: object properties: id: type: string description: Name of the file in Base64 encoded format preceded by v1. example: v1_MWFc0 fileName: type: string description: Name of the file to be shared. example: 42gears_logo fileSize: type: integer description: Size of file in bytes. example: 7260 GUID: type: string description: Unique identifier of the file. example: MS9GaWxlIFN0b3JlLzQyZ2VhcnNfbG9nby5wbmc= fileExtension: type: string description: Extension of the shared file. example: png isFile: type: boolean description: Indicates whether the shared item is a file or a directory. example: true subitemsArray: type: string description: If it is a directory, it shows the list of items present in the directory. example: null s3BaseUrl: type: string description: URL of the file location. example: 1/File Store/Test folder/42gears_logo.png isRecursive: type: boolean description: Indicates whether the directory is recursive. example: false autoDownload: type: boolean description: Option to auto-download the shared file. example: false s3BaseUrl: type: string description: URL of the file location. example: 1/File Store/Test folder/ isRecursive: type: boolean description: Indicates whether the directory is recursive. example: true autoDownload: type: boolean description: Option to auto-download the shared file. example: false deviceToCloud: type: object description: Configuration related to file synchronization between the device and cloud. properties: preference: type: string description: Specifies the preference setting for device-to-cloud file sharing. example: "2" maxFileLength: type: integer description: Defines the maximum file size allowed for upload in the cloud. example: 10 fileDataUnit: type: string description: Defines the unit for file size measurement (e.g., MB, GB). example: "mb" datatransferlimit: type: array description: Defines limits on data transfer over a specific duration. items: type: object properties: durationType: type: string description: Specifies the type of duration over which the data transfer limit applies. example: "weekly" size: type: integer description: Maximum data size allowed for the defined duration. example: 1 dataUnit: type: string description: Unit of data size measurement. example: "mb" fileSyncConfig: type: array description: Configuration for file synchronization settings. items: type: object properties: source: type: string description: Path from where the files will be synchronized. example: "/dsfds/" destination: type: string description: Path where the synchronized files will be stored. example: "\\sadsadsad\\$device_id$\\" wildcardSelect: type: string description: Defines wildcard selection for file sync. example: "device_id" preSyncScript: type: string description: Script executed before synchronization. example: "echo Preparing sync..." postSyncScript: type: string description: Script executed after synchronization. example: "echo Sync complete." scriptExecution: type: string description: Defines execution order of scripts. example: "1" scheduleSync: type: object description: Scheduling details for periodic synchronization. properties: scheduleType: type: string description: Defines the type of scheduling. example: "periodically" scheduleData: type: array description: Specifies schedule details. items: type: object properties: periodically: type: integer description: Interval in minutes for periodic sync. example: 30 UseAFW: type: boolean description: Use AFW if available example: false ProfileCreationModel: type: object properties: message: type: string description: Status message related to profile creation. example: Profile creation succeeded. data: type: string description: Profile ID(s) generated during profile creation. example: 62da7a4f-b17b-46e7-8571-60eec7b8561f,ec9c3482-b6dc-42a4-b2da-592693f5835f status: type: boolean description: Indicates whether the profile creation was successful. example: true ProfileFailedModel: type: object properties: message: type: string description: Error message related to the profile creation failure. example: Profile creation failed due to invalid data. data: type: string description: Relevant data or error code (if applicable) related to the failure. example: null status: type: boolean description: Indicates whether the profile creation was successful or failed. example: false ExceedSizeLimitResponseModel: type: object properties: message: type: string description: Message indicating the error. example: Exceed Size Limit data: type: string description: Relevant data related to the response (null in this case). example: null status: type: boolean description: Indicates whether the operation was successful or not. example: false UploadResponseModel: type: object properties: message: type: string description: Message indicating the success of the operation. example: Success data: type: string description: Signed URL for S3 server where file can be uploaded. example: https://xyzabc9jobs.s3.amazonaws.com/1/Jobs/62da7a4f-b17b-46e7-8571-60eec7b8561f/ec9c3482-b6dc-42a4-b2da-592693f5835f/test.apk?X-Amz-Expires=7200&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=1111111AAAA/20190809/us-east-1/s3/aws4_request&X-Amz-Date=20190809T105623Z&X-Amz-SignedHeaders=host&X-Amz-Signature=c69b3fa2bee54fdb13becfa848e8b554801c04b8bd5165c99608faddd07f65e0 status: type: boolean description: Indicates whether the operation was successful. example: true NoReportsFoundResponseModel: type: object properties: message: type: string description: A message indicating that no reports were found. example: "No reports found." data: type: null description: No additional data to return. example: null status: type: boolean description: Status of the operation. False indicates failure or lack of results. example: false ReportModel: type: object properties: message: type: string description: Status message of the report generation process example: "Report generated successfully" data: type: object properties: OfflineReportId: type: string description: ID of the report example: 49771 QueryParams: type: string description: Query parameters example: '' ReportType: type: string description: | Type of the report
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: 100 TimeZone: type: string description: Time Zone example: '' URLReports: type: string description: URL to get the report example: '"https://suremdm1reports.s3.amazonaws.com/1/reports/ondemand/DeviceActivity_Home_20190311055522_FpdBJual1kg.zip?AWSAccessKeyId=AKIAIML7GM374T2GBBGA&Expires=1583906125&Signature=Q1KlQWdkXvjljqK0urhvxP9RA%2Bk%3D"' ReportParams: type: string description: Report Parameters example: 'null' ReportID: type: string description: ID of the report example: '250' SendMail: type: boolean description: Send mail example: true EmailID: type: string description: Email ID example: aa@gmail.com StatusOfflineReports: type: string description: Status of offline report example: null TimeStamp: type: string description: Time Stamp example: '3/15/2019 9:36:04 AM' isReadReports: type: boolean description: Read status of the report example: false StatusReports: type: boolean description: | Status of report
Value Description
0 Pending report
1 Successfully generated report
2 Failed to generate report
example: '1' MarkDelete: type: string description: Mark delete example: 'null' GroupName: type: string description: Name of the group example: Home status: type: boolean description: Operation status example: true ReportOutPutModel: type: object properties: message: type: string description: Status message for the report output example: Report retrieved successfully. data: type: object properties: ReportID: type: integer description: ID of the report example: 400 ReportName: type: string description: Name of the report example: Jobs Deployed ReportDescription: type: string description: Details of the report example: | Report listing details of all the deployed jobs, e.g., Job Name, Job Status, Job Deployed Time, etc. UseInfluxQueryReports: type: string description: | Influx query type:
0: SQL
1: Influx
2: MongoDB example: '0' CreatedDate: type: string description: The date when the report was created example: "01/01/1970 00:00:00" isDeviceGridReport: type: integer description: | Indicates if the report is a device grid report. - **0**: No - **1**: Yes example: 0 type: type: string description: Type of the report (e.g., 'Report') example: Report parentFolderId: type: string description: ID of the parent folder if the report is inside a folder example: null folderId: type: string description: ID of the folder containing the report example: "200" isPublic: type: string description: Indicates whether the report is public or not example: null status: type: boolean description: Indicates whether the report retrieval was successful example: true SystemLog: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandSystemLog' Schedule: '#/components/schemas/ScheduledSystemLog' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: ID of the custom report
System Logs report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "ShowAllLogs":true, "ShowJobLogs":true, "ShowAppInstallLogs":true, "date_start":"2019-04-11", "date_end":"2019-04-17" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsSystemLogObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: 100 example: ReportID: 100 QueryParams: '{"groupid": null,"GroupName": "Home","ShowAllLogs": true,"ShowJobLogs": true,"ShowRemoteSupportLogs": true,"ShowAppInstallLogs": true,"date_start": "2019-04-11","date_end": "2019-04-17"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsSystemLogObject: type: object properties: groupid: type: string description: ID of the group for which report is generated example: true GroupName: type: string description: Name of the group for which report is generated example: true ShowAllLogs: type: boolean description: Include all logs
Enables every other constraints example: true ShowJobLogs: type: boolean description: Include job logs example: true ShowAppInstallLogs: type: boolean description: Include app install/uninstall logs example: true date_start: type: string description: Start date example: '2018-12-24' date_end: type: string description: Start date example: '2018-12-24' OnDemandSystemLog: allOf: - $ref: '#/components/schemas/SystemLog' ScheduledSystemLog: allOf: - $ref: '#/components/schemas/SystemLog' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: true JobsDeployed: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandJobsDeployed' Schedule: '#/components/schemas/ScheduledJobsDeployed' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Report of Jobs deployed example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "date_start":"2010-01-01", "date_end":"2010-01-01", "JobId":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce", "jobname":"text2" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsJobsDeployedObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 400 QueryParams: '{"groupid":null,"GroupName":"Home","date_start":"2010-01-01","date_end":"2010-01-01","JobId":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce","jobname":"text2"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsJobsDeployedObject: type: object properties: groupid: type: string description: ID of the group for which report is generated GroupName: type: string description: Name of the group for which report is generated jobname: type: string description: | Name of the job
"All": To get report for all jobs JobId: type: string description: ID of the job(for specifics) date_start: type: string description: Start date date_end: type: string description: Start date OnDemandJobsDeployed: allOf: - $ref: '#/components/schemas/JobsDeployed' ScheduledJobsDeployed: allOf: - $ref: '#/components/schemas/JobsDeployed' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' InstalledJobs: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandInstalledJobs' Schedule: '#/components/schemas/ScheduledInstalledJobs' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Report of install jobs example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "JobId":"d45f8845-4b62-4ff8-919b-67afa5ba3302", "jobname":"Install SureLock", "date_start":"2010-01-01", "date_end":"2010-01-01", "applicationname":"asd" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsInstalledJobsObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 450 QueryParams: '{"groupid":null,"GroupName":"Home","JobId":"d45f8845-4b62-4ff8-919b-67afa5ba3302","jobname":"Install SureLock","date_start":"2010-01-01","date_end":"2010-01-01","applicationname":"asd"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsInstalledJobsObject: type: object properties: groupid: type: string description: ID of the group for which report is generated GroupName: type: string description: Name of the group for which report is generated jobname: type: string description: | Name of the job
"All": To get report for all jobs JobId: type: string description: ID of the job(for specifics) date_start: type: string description: Start date date_end: type: string description: Start date applicationname: type: string description: Application Name OnDemandInstalledJobs: allOf: - $ref: '#/components/schemas/InstalledJobs' ScheduledInstalledJobs: allOf: - $ref: '#/components/schemas/InstalledJobs' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' DataUsage: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandDataUsage' Schedule: '#/components/schemas/ScheduledDataUsage' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Device data usage report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "tagid":"032019" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsDataUsageObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 750 QueryParams: '{"groupid":null,"GroupName":"Home","tagid":"032019"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsDataUsageObject: type: object properties: groupid: type: string description: ID of the group for which report is generated GroupName: type: string description: Name of the group for which report is generated tagid: type: string description: | Billing cycle
Format: MMYYYY
Sample: 032019 OnDemandDataUsage: allOf: - $ref: '#/components/schemas/DataUsage' ScheduledDataUsage: allOf: - $ref: '#/components/schemas/DataUsage' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' AppVersion: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandAppVersion' Schedule: '#/components/schemas/ScheduledAppVersion' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
App version report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "ApplicationType":"System", "applicationname":"Playstore" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsAppVersionObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: 100 example: ReportID: 1000 QueryParams: '{"groupid":null,"GroupName":"Home","ApplicationType":"System","applicationname":"sfggd"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsAppVersionObject: type: object properties: groupid: type: string description: ID of the group for which report is generated example: true GroupName: type: string description: Name of the group for which report is generated example: true ApplicationType: type: boolean description: | Type of application
"All" : All type of apps
"Downloaded" : Downloaded apps only
"System" : System apps only example: true applicationname: type: boolean description: Include OS version logs example: true OnDemandAppVersion: allOf: - $ref: '#/components/schemas/AppVersion' ScheduledAppVersion: allOf: - $ref: '#/components/schemas/AppVersion' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: true DataUsageLegacy: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandDataUsageLegacy' Schedule: '#/components/schemas/ScheduledDataUsageLegacy' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Data usage legacy report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "date_start":"2010-01-01", "date_end":"2010-01-01" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsDataUsageLegacyObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 800 QueryParams: '{"groupid":null,"GroupName":"Home","date_start":"2010-01-01","date_end":"2010-01-01"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsDataUsageLegacyObject: type: object properties: groupid: type: string description: ID of the group for which report is generated GroupName: type: string description: Name of the group for which report is generated date_start: type: string description: Start date date_end: type: string description: Start date OnDemandDataUsageLegacy: allOf: - $ref: '#/components/schemas/DataUsageLegacy' ScheduledDataUsageLegacy: allOf: - $ref: '#/components/schemas/DataUsageLegacy' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' AssetTracking: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandAssetTracking' Schedule: '#/components/schemas/ScheduledAssetTracking' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Asset Tracking report example: 100 QueryParams: description: | Constraints to be passed for generating report.
{ "groupid":null, "GroupName":"Home" } Note: `QueryParams` is passed as URL encoded serialized string.. allOf: - $ref: '#/components/schemas/QueryParamsAssetTrackingObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of reporting.
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: 100 example: ReportID: 200 QueryParams: '{"groupid":null,"GroupName":"Home"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' QueryParamsAssetTrackingObject: type: object properties: groupid: type: string description: ID of the group for which report is generated. example: null GroupName: type: string description: Name of the group for which report is generated. example: Home OnDemandAssetTracking: allOf: - $ref: '#/components/schemas/AssetTracking' ScheduledAssetTracking: allOf: - $ref: '#/components/schemas/AssetTracking' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report.
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: true ComplianceReport: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandComplianceReport' Schedule: '#/components/schemas/ScheduledComplianceReport' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Compliance report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "ShowAllCompliance":true, "OSVersion":true, "JailbrokenOrRooted":true, "OnlineDeviceConnectivity":true, "SIMChange":true, "PasswordPolicy":true } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsComplianceReportObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: 100 example: ReportID: 1100 QueryParams: '{"groupid":null,"GroupName":"Home","ShowAllCompliance":true,"OSVersion":true,"JailbrokenOrRooted":true,"OnlineDeviceConnectivity":true,"SIMChange":true,"PasswordPolicy":true}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsComplianceReportObject: type: object properties: groupid: type: string description: ID of the group for which report is generated example: true GroupName: type: string description: Name of the group for which report is generated example: true ShowAllCompliance: type: boolean description: Include all logs
Enables every other constraints example: true OSVersion: type: boolean description: Include OS version logs example: true JailbrokenOrRooted: type: boolean description: Include report of device Jail Broken/Rooted logs example: true OnlineDeviceConnectivity: type: boolean description: Include logs pf when device came online example: true SIMChange: type: boolean description: Include SIM change logs example: true PasswordPolicy: type: string description: Include password policy report example: true OnDemandComplianceReport: allOf: - $ref: '#/components/schemas/ComplianceReport' ScheduledComplianceReport: allOf: - $ref: '#/components/schemas/ComplianceReport' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: true DeviceConnected: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandDeviceConnected' Schedule: '#/components/schemas/ScheduledDeviceConnected' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Report of device connected example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "date_start":"2010-01-01", "date_end":"2010-01-01" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsDeviceConnectedObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 900 QueryParams: '{"groupid":null,"GroupName":"Home","date_start":"2010-01-01","date_end":"2010-01-01"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsDeviceConnectedObject: type: object properties: groupid: type: string description: ID of the group for which report is generated GroupName: type: string description: Name of the group for which report is generated date_start: type: string description: Start date date_end: type: string description: Start date OnDemandDeviceConnected: allOf: - $ref: '#/components/schemas/DeviceConnected' ScheduledDeviceConnected: allOf: - $ref: '#/components/schemas/DeviceConnected' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' DeviceHealth: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandDeviceHealth' Schedule: '#/components/schemas/ScheduledDeviceHealth' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Device health report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "date_start":"2010-01-01", "date_end":"2010-01-01", "battery":"100", "storagemb":"1000", "memorymb":"1000" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsDeviceHealthObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 600 QueryParams: '{"groupid":null,"GroupName":"Home","date_start":"2010-01-01","date_end":"2010-01-01","battery":"100","storagemb":"1000","memorymb":"1000"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsDeviceHealthObject: type: object properties: groupid: type: string description: ID of the group for which report is generated GroupName: type: string description: Name of the group for which report is generated battery: type: string description: | Battery % threshold(<=) storagemb: type: string description: Storage space threshold in mb(<=) memorymb: type: string description: Physical memory threshold in mb(<=) date_start: type: string description: Start date date_end: type: string description: Start date OnDemandDeviceHealth: allOf: - $ref: '#/components/schemas/DeviceHealth' ScheduledDeviceHealth: allOf: - $ref: '#/components/schemas/DeviceHealth' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' CallLogTracking: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandCallLogTracking' Schedule: '#/components/schemas/ScheduledCallLogTracking' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Call tracking report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "DeviceName":"Client0000", "date_start":"2010-01-01", "date_end":"2010-01-01", "deviceid":"35ffdeb0-0f9f-4220-95d6-15c3e185e7fd", "CallType":"Outgoing" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsCallLogTrackingObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 300 QueryParams: '{"groupid":null,"GroupName":"Home","DeviceName":"Client0000","date_start":"2010-01-01","date_end":"2010-01-01","deviceid":"35ffdeb0-0f9f-4220-95d6-15c3e185e7fd","CallType":"Outgoing"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsCallLogTrackingObject: type: object properties: groupid: type: string description: ID of the group for which report is generated GroupName: type: string description: Name of the group for which report is generated DeviceName: type: string description: Name of the device deviceid: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 date_start: type: string description: Start date date_end: type: string description: Start date CallType: type: string description: Type of calls OnDemandCallLogTracking: allOf: - $ref: '#/components/schemas/CallLogTracking' ScheduledCallLogTracking: allOf: - $ref: '#/components/schemas/CallLogTracking' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' DeviceHistory: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandDeviceHistory' Schedule: '#/components/schemas/ScheduledDeviceHistory' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Device history report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "DeviceName":"Client0002", "date_start":"2010-01-01", "date_end":"2010-01-01", "deviceid":"8a76b3fc-6299-422b-a650-53adf2be1398" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsDeviceHistoryObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: ReportID: 700 QueryParams: '{"groupid":null,"GroupName":"Home","DeviceName":"Client0002","date_start":"2010-01-01","date_end":"2010-01-01","deviceid":"8a76b3fc-6299-422b-a650-53adf2be1398"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsDeviceHistoryObject: type: object properties: groupid: type: string description: ID of the group where device belongs GroupName: type: string description: Name of the group where device belongs DeviceName: type: string description: Name of the device deviceid: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). date_start: type: string description: Start date date_end: type: string description: Start date OnDemandDeviceHistory: allOf: - $ref: '#/components/schemas/DeviceHistory' ScheduledDeviceHistory: allOf: - $ref: '#/components/schemas/DeviceHistory' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' DeviceActivity: type: object discriminator: propertyName: ReportType mapping: On-Demand: '#/components/schemas/OnDemandDeviceActivity' Schedule: '#/components/schemas/ScheduledDeviceActivity' allOf: - type: object properties: OfflineReportId: type: string description: ID of a existing report (always null while for request reports) example: "" ReportID: type: integer description: | ID of the custom report
Device activity report example: 100 QueryParams: description: | Constraints to be passed for generating report
{ "groupid":null, "GroupName":"Home", "DeviceName":"Client0000", "deviceid":"35ffdeb0-0f9f-4220-95d6-15c3e185e7fd", "date_start":"2018-12-24", "date_end":"2018-12-24" } Note: `QueryParams` is passed as URL encoded serialized string. allOf: - $ref: '#/components/schemas/ReportParamsDeviceActivityObject' EmailID: type: string description: Report will be sent on this email address(optional) GroupName: type: string description: Name of the group example: Home TimeZone: type: string description: Time Zone example: 344 ReportType: type: string description: | Type of the reporting
On-Demand
100 Generate report immediately
Schedule
200 Generate report daily
300 Generate report weekly
400 Generate report monthly
example: 100 example: ReportID: 250 QueryParams: '{"groupid": null,"GroupName": "Home","DeviceName": "Client0000","deviceid": "35ffdeb0-0f9f-4220-95d6-15c3e185e7fd","date_start": "2018-12-24","date_end": "2018-12-24"}' EmailID: null GroupName: Home TimeZone: '+0530' ReportType: '200' CustomScheduleTime: '00:00' ReportParamsDeviceActivityObject: type: object properties: groupid: type: string description: ID of the group for which report is generated example: null GroupName: type: string description: Name of the group for which report is generated example: Home DeviceName: type: string description: Name of the device example: Client0000 deviceid: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 35ffdeb0-0f9f-4220-95d6-15c3e185e7fd date_start: type: string description: Start date example: '2018-12-24' date_end: type: string description: Start date example: '2018-12-24' OnDemandDeviceActivity: allOf: - $ref: '#/components/schemas/DeviceActivity' ScheduledDeviceActivity: allOf: - $ref: '#/components/schemas/DeviceActivity' - type: object properties: CustomScheduleTime: type: string description: | Custom schedule time for scheduled report
Daily Format: HH:MM
Sample: "01:00" (at 01:00 Daily)
Weekly Format: HH:MM~Day
Sample: "01:00~4" (at 01:00 on every Thursday of week)
Monthly Format: HH:MM~Date
Sample: "01:00~20" (at 01:00 on every 20th day of month)
example: '00:00' FileTransferJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | File Transfer
Transfering file to the device. example: File Transfer PayLoad: description: | Job specific payload
{ "LocalPath": "MR-127 BQ Update Doc.pdf", "DevicePath": "/sdcard/", "Install": false, "UseBasicAuthentication": false, "IsHttpUrl": false, "HttpUserName": "", "HttpPassword": "", "IsSilent": false, "ExecutePath": "", "CurrentUser": false, "JobNameXML": "MR-127 BQ Update Doc.pdf", "FromAppStore": false, "EnableExecutionScripts": true, "PreExecutionScript": "saasdad", "PostExecutionScript": "dsdsad", "EnableRevokeScripts": true, "PreRevokeScript": "adsadsad", "PostRevokeScript": "sadsadsad" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). Parameter Descriptions :
- LocalPath: The file name to be uploaded to the device.
- DevicePath: Directory path on the device where the file will be stored.
- Install: Set to true if the uploaded file is to be installed (e.g., APK).
- UseBasicAuthentication: Set to true to use basic authentication for file download.
- IsHttpUrl: Set to true if the file is hosted over HTTP/HTTPS.
- HttpUserName: Username for basic HTTP authentication.
- HttpPassword: Password for basic HTTP authentication.
- IsSilent: Set to true to silently install the app without user interaction.
- ExecutePath: Optional command or path to execute after deployment.
- CurrentUser: Set to true to deploy the job under the currently logged-in user.
- JobNameXML: Name of the job as stored in XML format, usually same as the file name.
- FromAppStore: Set to true if the app is to be installed from a managed app store.
- EnableExecutionScripts: Set this to true to activate the execution of pre and post scripts during job deployment.
- PreExecutionScript: Define the script to run before the job is deployed. Useful for validating prerequisites, checking permissions, or preparing configurations.
- PostExecutionScript: Define the script to run after the job deployment. Use this to apply final configurations or complete the deployment process.
- EnableRevokeScripts: Set this to true to allow execution of pre and post scripts when revoking a job.
- PreRevokeScript: Specify the script to execute before revoking the job.
- PostRevokeScript: Specify the script to execute after the job has been revoked.
allOf: - $ref: '#/components/schemas/FileTransferPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "AndroidVR", "androidwear",
"windows_ce", "windows_mobile", "windows", "Linux" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: File Transfer Platform: android PayLoad: - eyAgCgkiTG9jYWxQYXRoIjoidGVzdC50eHQiLAoJIkRldmljZVBhdGgiOiIvc2RjYXJkLyIsCgkiSW5zdGFsbCI6ZmFsc2UsCgkiVXNlQmFzaWNBdXRoZW50aWNhdGlvbiI6ZmFsc2UsCgkiSXNIdHRwVXJsIjpmYWxzZSwKCSJIdHRwVXNlck5hbWUiOiIiLAoJIkh0dHBQYXNzd29yZCI6IiIsCgkiSXNTaWxlbnQiOmZhbHNlLAoJIkV4ZWN1dGVQYXRoIjoiIiwKCSJDdXJyZW50VXNlciI6ZmFsc2UsCgkiSm9iTmFtZVhNTCI6InRlc3QudHh0IiwKCSJGcm9tQXBwU3RvcmUiOmZhbHNlCn0= InstallJobEdit: discriminator: propertyName: Platform mapping: android: '#/components/schemas/androidFileTransfer' Others: '#/components/schemas/OthersInstall' allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Install job
Remotely installing an application on the device. example: File Transfer PayLoad: description: | Job specific payload
{ "LocalPath": "CamlockPush.p12", "DevicePath": "/sdcard/", "Install": true, "DeleteAfterInstallation": true, "UseBasicAuthentication": false, "IsHttpUrl": false, "HttpUserName": "", "HttpPassword": "", "IsSilent": false, "ExecutePath": "/sdcard/ ", "CurrentUser": false, "JobNameXML": "CamlockPush.p12", "FromAppStore": false, "AppRestrictions": null, "AddShortcutToHomeScreen": true, "AutoGrantPermissions": true, "EnableExecutionScripts": true, "PreExecutionScript": "ZCZCXZC", "PostExecutionScript": "DDSDFFDSDSFA", "EnableRevokeScripts": true, "PreRevokeScript": "SFSDFDSF", "PostRevokeScript": "SADADADSADSAD" } Note: Payload must be Base64 encoded before submission. Parameter Descriptions:
- LocalPath: The name of the file to be deployed. This file can reside on the server or local machine.
- DevicePath: Destination directory on the target device where the file will be copied.
- Install: Copies the file to the specified path and installs the application on the device if applicable.
- DeleteAfterInstallation: If set to true, the file will be deleted from the device after successful installation.
- UseBasicAuthentication: Enables HTTP Basic Authentication if the file is being accessed via a URL.
- IsHttpUrl: Set to true if the LocalPath points to an online URL instead of a local or server file.
- HttpUserName: Username used for HTTP Basic Authentication (only applicable if UseBasicAuthentication is true).
- HttpPassword: Password used for HTTP Basic Authentication.
- IsSilent: Attempts to install the application silently without user interaction (if the device supports silent installs).
- ExecutePath: Path to the file to be executed after deployment. Useful for launching non-APK files.
- CurrentUser: Executes the job under the context of the currently logged-in user on the device (if supported).
- JobNameXML: Job identifier name used internally; typically the same as the file name being deployed.
- FromAppStore: Indicates whether the application is being installed from an official app store.
- AppRestrictions: Optional app restriction configurations (can be null if not applicable).
- AddShortcutToHomeScreen: Creates a shortcut to the application on the device's home screen. If there's insufficient space, the shortcut may not be created.
- AutoGrantPermissions: Automatically grants all runtime permissions required by the application post-installation.
- EnableExecutionScripts: Enables the execution of pre and post deployment scripts during the job.
- PreExecutionScript: Script that runs before the job is executed. Can be used to prepare the device or validate preconditions.
- PostExecutionScript: Script that runs after the job has completed. Useful for cleanup or final setup.
- EnableRevokeScripts: Enables execution of scripts when the job is being revoked or uninstalled.
- PreRevokeScript: Script executed before the job is revoked from the device.
- PostRevokeScript: Script executed after the job is revoked from the device.
allOf: - $ref: '#/components/schemas/InstallPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows_ce",
"windows_mobile", "windows" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: Install Platform: android PayLoad: - eyJMb2NhbFBhdGgiOiJOb3RoaW5nX3YxLjYuMV9hcGtwdXJlLmNvbS5hcGsiLCJEZXZpY2VQYXRoIjoiL3NkY2FyZC8iLCJJbnN0YWxsIjp0cnVlLCJVc2VCYXNpY0F1dGhlbnRpY2F0aW9uIjpmYWxzZSwiSXNIdHRwVXJsIjpmYWxzZSwiSHR0cFVzZXJOYW1lIjoiIiwiSHR0cFBhc3N3b3JkIjoiIiwiSXNTaWxlbnQiOmZhbHNlLCJFeGVjdXRlUGF0aCI6IiIsIkN1cnJlbnRVc2VyIjpmYWxzZSwiSm9iTmFtZVhNTCI6Ik5vdGhpbmdfdjEuNi4xX2Fwa3B1cmUuY29tLmFwayIsIkZyb21BcHBTdG9yZSI6ZmFsc2V9 WiFiConfigJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Wi-fi Configuration Settings PayLoad: description: | Job specific payload
{ "SSID":"test", "SecurityType":1, "Password":"12345678", "AutoConnect":false, "PortableHotspot":true, "HiddenNetwork":false } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/WiFiConfigPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "android", "androidwear", "AndroidVR"
Note: Hotspot setting is supported for androID only example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: wifi configuration settings Platform: android PayLoad: - eyJTU0lEIjoidGVzdCIsIlNlY3VyaXR5VHlwZSI6MSwiUGFzc3dvcmQiOiIxMjM0NTY3OCIsIkF1dG9Db25uZWN0IjpmYWxzZSwiUG9ydGFibGVIb3RzcG90Ijp0cnVlLCJIaWRkZW5OZXR3b3JrIjpmYWxzZX0= NotificationPolicyJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Notification Policy Job for applying notification policy. PayLoad: description: | Job specific payload
{ "PolicySettings":{ "BatteryPolicy":true, "ConnectionPolicy":true, "DataUsage":true, "inKb":false, "inMb":false, "inGb":true, "DeviceOnlineNotification":true, "SIMChangeNotication":true, "PermissionGrantedNotification":true, "SureMDMAlert":true, "DeviceAlert":true, "EmailAlert":true, "SMSAlert":true, "EmailAddresses":"ab@a.com ", "PhoneNumber":"+911234567890", "BatteryPercentage":10, "ConnectionTime":"1", "DataUsageQuantity":1, "PluginAlert":false, "UnPluggedAlert":false, "DisableNotificationPolicy":false, "WebHookAlert":true, "Endpoints":[1] } } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/NotificationPolicyPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "androidwear", "any"
"windows_ce", "windows_mobile", "windows" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: notification_policy Platform: android PayLoad: - eyJQb2xpY3lTZXR0aW5ncyI6eyJCYXR0ZXJ5UG9saWN5Ijp0cnVlLCJDb25uZWN0aW9uUG9saWN5Ijp0cnVlLCJEYXRhVXNhZ2UiOnRydWUsImluS2IiOmZhbHNlLCJpbk1iIjpmYWxzZSwiaW5HYiI6dHJ1ZSwiRGV2aWNlT25saW5lTm90aWZpY2F0aW9uIjp0cnVlLCJTSU1DaGFuZ2VOb3RpY2F0aW9uIjp0cnVlLCJQZXJtaXNzaW9uR3JhbnRlZE5vdGlmaWNhdGlvbiI6dHJ1ZSwiU3VyZU1ETUFsZXJ0Ijp0cnVlLCJEZXZpY2VBbGVydCI6dHJ1ZSwiRW1haWxBbGVydCI6dHJ1ZSwiU01TQWxlcnQiOnRydWUsIkVtYWlsQWRkcmVzc2VzIjoiYWJAYS5jb20gIiwiUGhvbmVOdW1iZXIiOiIrOTExMjM0NTY3ODkwIiwiQmF0dGVyeVBlcmNlbnRhZ2UiOjEwLCJDb25uZWN0aW9uVGltZSI6IjEiLCJEYXRhVXNhZ2VRdWFudGl0eSI6MSwiUGx1Z2luQWxlcnQiOmZhbHNlLCJVblBsdWdnZWRBbGVydCI6ZmFsc2UsIkRpc2FibGVOb3RpZmljYXRpb25Qb2xpY3kiOmZhbHNlLCJXZWJIb29rQWxlcnQiOmZhbHNlfX0= DeviceMigrationJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Device Migration between Groups Job for migrating the device between groups. PayLoad: description: | Job specific payload
{ "SelectedGrpId": "5e1c484f-972f-4c06-8f84-aae0e7f7b9fe" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/DeviceMigrationPayLoad' Platform: type: string description: | Name of platform
Platform Supported: "any" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: move_device Platform: android PayLoad: - eyJTZWxlY3RlZEdycElkIjoiNWUxYzQ4NGYtOTcyZi00YzA2LThmODQtYWFlMGU3ZjdiOWZlIn0= SMSTrackingJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | SMS Tracking job
Job for applying SMS tracking on device. PayLoad: description: | Job specific payload
{ "SMSTracking":"1", "Periodicity":"16" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/SMSTrackingPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "androidwear" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: SMS_TRACKING Platform: android PayLoad: - eyJTTVNUcmFja2luZyI6IjEiLCJQZXJpb2RpY2l0eSI6MjB9 CallTrackingJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Call Tracking job
Job for applying call tracking on the device. PayLoad: description: | Job specific payload
{ "CallTracking":"1", "Periodicity":"15" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/CallTrackingPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "androidwear" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: CALL_TRACKING Platform: android PayLoad: - eyJDYWxsVHJhY2tpbmciOiIxIiwiUGVyaW9kaWNpdHkiOiIxNSJ9 AppSettingsJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | App Settings job
Job for applying application settings on the device. PayLoad: description: | Job specific payload
{ "AppName":[ "Alexa" ], "Packages":[ "com.amazon.dee.app" ], "StartUpDelay":[ "12" ], "Action":"ClearData", "PhonePin":"0000" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/AppSettingsPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "Linux" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: NEW_APP_SETTINGS Platform: android PayLoad: - eyJBcHBOYW1lIjpbIkFsZXhhIl0sIlBhY2thZ2VzIjpbImNvbS5hbWF6b24uZGVlLmFwcCJdLCJTdGFydFVwRGVsYXkiOlsiMTIiXSwiQWN0aW9uIjoiQ2xlYXJEYXRhIiwiUGhvbmVQaW4iOiIwMDAwIn0= RemoteWipeJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Remote Data Wipe job
Job for remotely wiping device data. PayLoad: description: | Job specific payload
{ "WipeAllData":true, "IsScheduleWipe":true, "GracePeriod":"4", "IsWipeOnRoot":false } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/RemoteWipePayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "any", "windows_ce",
"windows_mobile" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: Wipe Platform: android PayLoad: - eyJXaXBlQWxsRGF0YSI6dHJ1ZSwiSXNTY2hlZHVsZVdpcGUiOnRydWUsIkdyYWNlUGVyaW9kIjoiNCIsIklzV2lwZU9uUm9vdCI6ZmFsc2V9 JobEditModel: type: object required: - JobID - JobName - FolderId - JobType - Platform - PayLoad properties: JobID: type: string description: ID of the job which you want to edit. example: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: type: string description: Name of the job example: test TextMessageJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Send Text Message
Job for sending text message to the device. PayLoad: description: | Job specific payload
{ "Subject":"Greetings !", "Body":"Happy Birthday!", "ReadNotification":false, "ForceRead":true, "EnableBuzz":true, "BuzzInterval":"12", "CloseDurationEnable":true, "Interval":"12", "RichTextBody":"", "RichTextHtml":"" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/TextMessagePayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "androidwear", "Linux"
"windows_ce", "windows_mobile", "windows" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: text_message Platform: android PayLoad: - eyJTdWJqZWN0IjoiR3JlZXRpbmdzICEiLCJCb2R5IjoiSGFwcHkgQmlydGhkYXkhIiwiUmVhZE5vdGlmaWNhdGlvbiI6ZmFsc2UsIkZvcmNlUmVhZCI6dHJ1ZSwiRW5hYmxlQnV6eiI6dHJ1ZSwiQnV6ekludGVydmFsIjoiMTIiLCJDbG9zZUR1cmF0aW9uRW5hYmxlIjp0cnVlLCJJbnRlcnZhbCI6IjEyIiwiUmljaFRleHRCb2R5IjoiIiwiUmljaFRleHRIdG1sIjoiIn0= LocationTrackingJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Location Tracking job
Job for applying Location tracking on the device. PayLoad: description: | Job specific payload
{ "LocationTracking":true, "Periodicity":4 } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/LocationTrackingPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "androidwear","windows_ce", "windows_mobile", "windows" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: location Platform: android PayLoad: - eyJMb2NhdGlvblRyYWNraW5nIjp0cnVlLCJQZXJpb2RpY2l0eSI6NH0= GeoFencingJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Geo Fencing job
Job for applying geo fence on the device.
Geofencing allows administrators to create a virtual fence around a geographical location such as an office building or warehouse. You can apply geofencing policy to track devices as they move in or out of the fence. An administrator can limit what corporate resources (apps or data) are available on a device as it enters or leaves the virtual boundary. PayLoad: description: | Job specific payload
{ "EnableFence":true, "Fence":[ { "Name":"fds", "Latitude":21.181658623340844, "Longitude":74.45293641393755, "Radius":262127.69998481227, "GeoFenceUnit":0, "Fence":"Geo Fence" } ], "JobOut":[ { "JobID":"33701abf-68dd-410c-834a-dcbf5669f586", "JobName":"Text_Message1", "Platform":"ANY", "Type":"TextMessage" } ], "JobIn":[ { "JobID":"fdaaaae2-9388-4fae-a51d-762d4e286883", "JobName":"Text_Message2", "Platform":"ANY", "Type":"TextMessage" } ], "FenceJobInDeployDelay":"0", "FenceJobOutDeployDelay":"0", "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":false, "FenceJobInEmailId":"", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":false, "FenceJobOutEmailId":"" } Note: PayLoad should be in escaped string form as presented in request sample. allOf: - $ref: '#/components/schemas/GeoFencingPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows", "iOS" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test_job JobType: GEO_FENCING Platform: Android PayLoad: - '{"EnableFence":true,"Fence":[{"Name":"fds","Latitude":21.181658623340844,"Longitude":74.45293641393755,"Radius":262127.69998481227,"GeoFenceUnit":0,"Fence":"Geo Fence"}],"JobOut":[{"JobID":"33701abf-68dd-410c-834a-dcbf5669f586","JobName":"Text_Message1","Platform":"ANY","Type":"TextMessage"}],"JobIn":[{"JobID":"fdaaaae2-9388-4fae-a51d-762d4e286883","JobName":"Text_Message2","Platform":"ANY","Type":"TextMessage"}],"FenceJobInDeployDelay":"0","FenceJobOutDeployDelay":"0","FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":false,"FenceJobInEmailId":"","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":false,"FenceJobOutEmailId":""}' TimeFencingJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Time Fencing job
Job for applying time fence on the device.

Time fencing offers a convenient way for enterprises to apply restriction based-profiles on mobile devices at a scheduled time. For example, businesses can use time fencing to disable social media during working hours and enable it back post working hours. In another instance, this feature can also be used to disable employee smartphone camera as soon as they enter the office and keep it disabled for a specific/specified time frame. PayLoad: description: | Job specific payload
{ "EnableFence":true, "JobIn":[ { "JobID":"70800079-4890-4ab2-a97b-111966d35052", "JobName":"text", "Platform":"ANY", "Type":"TextMessage" } ], "JobOut":[ { "JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce", "JobName":"Text_Message1", "Platform":"ANY", "Type":"TextMessage" } ], "SelectFence":{ "TimeFenceRows":[ { "TimeZoneType":1, "StartTime":"01:00", "EndTime":"13:00", "Days":[ "1", "2", "3", "4", "5", "6", "7" ] } ] }, "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":true, "FenceJobInEmailId":"abc@gmail.com", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":true, "FenceJobOutEmailId":"abc@gmail.com" } Note: PayLoad should be in escaped string form as presented in request sample. allOf: - $ref: '#/components/schemas/TimeFencingPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows", "iOS" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: TIME_FENCING Platform: android PayLoad: - '{"EnableFence":true,"JobIn":[{"JobID":"70800079-4890-4ab2-a97b-111966d35052","JobName":"text","Platform":"ANY","Type":"TextMessage"}],"JobOut":[{"JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce","JobName":"Text_Message1","Platform":"ANY","Type":"TextMessage"}],"SelectFence":{"TimeFenceRows":[{"TimeZoneType":1,"StartTime":"01:00","EndTime":"13:00","Days":["1","2","3","4","5","6","7"]}]},"FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":true,"FenceJobInEmailId":"abc@gmail.com","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":true,"FenceJobOutEmailId":"abc@gmail.com"}' NetworkFencingJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Network Fencing job
Job for applying network fencing on the device

This feature allows an IT Admin to specify device behavior when it enters or exits a certain Wi-Fi network. PayLoad: description: | Job specific payload
{ "EnableFence":true, "JobIn":[ { "JobID":"70800079-4890-4ab2-a97b-111966d35052", "JobName":"text", "Platform":"ANY", "Type":"TextMessage" } ], "JobOut":[ { "JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce", "JobName":"text2", "Platform":"ANY", "Type":"TextMessage" } ], "FenceJobInDeployDelay":"5", "FenceJobOutDeployDelay":"5", "SelectFence":{ "NetworkFenceRows":[ { "ssid":"gb" } ] }, "FenceJobInDeviceAlert":true, "FenceJobInMDMAlert":true, "FenceJobInEmailAlert":true, "FenceJobInEmailId":"abc@gmail.com", "FenceJobOutDeviceAlert":true, "FenceJobOutMDMAlert":true, "FenceJobOutEmailAlert":true, "FenceJobOutEmailId":"abc@gmail.com" } Note: PayLoad should be in escaped string form as presented in request sample. allOf: - $ref: '#/components/schemas/NetworkFencingPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: NETWORK_FENCING Platform: android PayLoad: - '{"EnableFence":true,"JobIn":[{"JobID":"70800079-4890-4ab2-a97b-111966d35052","JobName":"text","Platform":"ANY","Type":"TextMessage"}],"JobOut":[{"JobID":"eeb89057-40a2-4495-bb1d-d9f0f6e2ddce","JobName":"text2","Platform":"ANY","Type":"TextMessage"}],"FenceJobInDeployDelay":"5","FenceJobOutDeployDelay":"5","SelectFence":{"NetworkFenceRows":[{"ssid":"gb"}]},"FenceJobInDeviceAlert":true,"FenceJobInMDMAlert":true,"FenceJobInEmailAlert":true,"FenceJobInEmailId":"abc@gmail.com","FenceJobOutDeviceAlert":true,"FenceJobOutMDMAlert":true,"FenceJobOutEmailAlert":true,"FenceJobOutEmailId":"abc@gmail.com"}' CompliancePolicyJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Compliance Policy Job
Job for applying compliance policy on the device. PayLoad: description: | Job specific payload
[ { "OSVersionRule":{ "AndroidVersionFirst":"15", "AndroidVersionSecond":"30", "iOSVersionFirst":"7.0", "iOSVersionSecond":"10.0", "macOSVersionFirst":"10.13", "macOSVersionSecond":"10.14", "Actions":[ { "type":"Send_Message", "delayTime":0, "delayunit":"now" } ] }, "JailBrokenRootedRule":{ "AndroidRooted":false, "iOSJailBroken":false, "Actions":[ { "type":"Move_To_Blacklist", "delayTime":0, "delayunit":"now" } ] }, "OnlineDeviceConnectivityRule":{ "Time":"5", "Period":"Minutes", "Actions":[ { "type":"Wipe_The_Device", "delayTime":"2", "delayunit":"Minutes" } ] }, "SimChangeRule":{ "Actions":[ { "type":"Lock_Device", "delayTime":"1", "delayunit":"Hours" } ] }, "PasscodePolicyRule":{ "Actions":[ { "type":"Email_Notification", "delayTime":"1", "delayunit":"Hours", "emailids":"abc@gmail.com" } ] }, "BatteryRule":{ "BatteryPercentage":"20", "PluggedStatus":0, "Actions":[ { "type":"Apply_Job", "delayTime":0, "delayunit":"now", "jobids":[ "70800079-4890-4ab2-a97b-111966d35052" ] } ] }, "ApplicationPolicyRule":{ "BlacklistedPackages":[ "fre" ], "Actions":[ { "type":"Send_Sms", "delayTime":0, "delayunit":"now", "phonenumber":"+919999988888" } ] }, "IsEnable":true } ] Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/CompliancePolicyPayLoad' Platform: type: string description: | Platform type.(e.g, ANY).
example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: Compliance_Job Platform: ANY PayLoad: - W3siT1NWZXJzaW9uUnVsZSI6eyJBbmRyb2lkVmVyc2lvbkZpcnN0IjoiMTAwIiwiQW5kcm9pZFZlcnNpb25TZWNvbmQiOiIxMDAiLCJpT1NWZXJzaW9uRmlyc3QiOiIxMDAiLCJpT1NWZXJzaW9uU2Vjb25kIjoiMTAwIiwibWFjT1NWZXJzaW9uRmlyc3QiOiIxMDAiLCJtYWNPU1ZlcnNpb25TZWNvbmQiOiIxMDAiLCJsaW51eFJlZGhhdEZpcnN0IjoiMTAwIiwibGludXhSZWRoYXRTZWNvbmQiOiIxMDAiLCJsaW51eFVidW50dUZpcnN0IjoiMTAwIiwibGludXhVYnVudHVTZWNvbmQiOiIxMDAiLCJ3aW5kb3dzVmVyc2lvbkZpcnN0IjoiIiwid2luZG93c1ZlcnNpb25TZWNvbmQiOiIiLCJBY3Rpb25zIjpbeyJ0eXBlIjoiU2VuZF9NZXNzYWdlIiwiZGVsYXl1bml0Ijoibm93IiwiZGVsYXlUaW1lIjowfV19LCJKYWlsQnJva2VuUm9vdGVkUnVsZSI6e30sIk9ubGluZURldmljZUNvbm5lY3Rpdml0eVJ1bGUiOnt9LCJTaW1DaGFuZ2VSdWxlIjp7fSwiUGFzc2NvZGVQb2xpY3lSdWxlIjp7fSwiQmF0dGVyeVJ1bGUiOnt9LCJBcHBsaWNhdGlvblBvbGljeVJ1bGUiOnt9LCJIZWFsdGhBdHRlc3RhdGlvbiI6e30sIlNEQ2FyZENoYW5nZVJ1bGUiOnt9LCJNb2JpbGVOZXR3b3JrQ29ubmVjdGl2aXR5UnVsZSI6e30sIkRldmljZVN0b3JhZ2VSdWxlIjp7fSwiRGV2aWNlRW5jcnlwdGlvblJ1bGUiOnt9LCJEZXZpY2VVcFRpbWVSdWxlIjp7fSwiTW9iaWxlU2lnbmFsU3RyZW5ndGhSdWxlIjp7fSwiV2lmaVNpZ25hbFN0cmVuZ3RoUnVsZSI6e30sIktpb3NrRW5hYmxlZFJ1bGUiOnt9LCJNb2JpbGVUaHJlYXREZWZlbmNlIjp7fSwiV2luZG93c0dlbnVpbmUiOnt9LCJXaW5kb3dzVXBkYXRlIjp7fSwiU2VjdXJpdHlQYXRjaExldmVsUnVsZSI6e30sIkN1c3RvbVJ1bGUiOnt9LCJMb2NhdGlvbkFjY2Vzc1J1bGUiOnt9LCJIYXJkd2FyZUNoYW5nZXNSdWxlIjp7fSwiUGxheUZvcldvcmtSdWxlIjp7fSwiU3lzdGVtVXNlclJ1bGUiOnt9LCJDdXN0b21Db21wbGlhbmNlUnVsZSI6e30sIkZpcmV3YWxsQ29tcGxpYW5jZVJ1bGUiOnt9LCJJc0VuYWJsZSI6dHJ1ZSwiaXNFeGNlcHRpb25LaW9za0NoZWNrZWQiOmZhbHNlfV0= NixAgentSettingJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Nix agent settings job
Job for applying settings on nix agent remotely. PayLoad: description: | Job specific payload
[ { "TimeSynchronizationSettings":{ "TimeSync":true, "Periodicity":"MINUTES_30" }, "PeriodicUpdateSettings":{ "PeriodicUpdate":true, "Periodicity":"HOUR_6" }, "ScheduledRebootSettings":{ "ScheduledReboot":true, "ScheduledRebootTime":"22:53", "DaysOfTheWeek":{ "Monday":false, "Tuesday":true, "Wednesday":true, "Thursday":true, "Friday":true, "Saturday":true, "Sunday":true } }, "ScheduledShutDownSettings":{ "ScheduledShutDownEnabled":true, "ScheduledShutDownTime":"22:53", "DaysOfTheWeek":{ "Monday":true, "Tuesday":true, "Wednesday":true, "Thursday":true, "Friday":true, "Saturday":true, "Sunday":true } }, "ConnectionType":"ANY", "NixPassword":true, "Password":"1234" } ] Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/NixAgentSettingPayLoad' Platform: type: string description: | Platform type.(e.g, android).
Platform Supported: "Android", "Windows", "IOS", "macOS" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: nixagent_settings Platform: android PayLoad: - eyJUaW1lU3luY2hyb25pemF0aW9uU2V0dGluZ3MiOnsiVGltZVN5bmMiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlBlcmlvZGljVXBkYXRlU2V0dGluZ3MiOnsiUGVyaW9kaWNVcGRhdGUiOmZhbHNlLCJQZXJpb2RpY2l0eSI6Ik5FVkVSIn0sIlNjaGVkdWxlZFJlYm9vdFNldHRpbmdzIjp7IlNjaGVkdWxlZFJlYm9vdCI6ZmFsc2UsIlNjaGVkdWxlZFJlYm9vdFRpbWUiOiIwMDowMCIsIkRheXNPZlRoZVdlZWsiOnsiTW9uZGF5IjpmYWxzZSwiVHVlc2RheSI6ZmFsc2UsIldlZG5lc2RheSI6ZmFsc2UsIlRodXJzZGF5IjpmYWxzZSwiRnJpZGF5IjpmYWxzZSwiU2F0dXJkYXkiOmZhbHNlLCJTdW5kYXkiOmZhbHNlfX0sIlNjaGVkdWxlZFNodXREb3duU2V0dGluZ3MiOnsiU2NoZWR1bGVkU2h1dERvd25FbmFibGVkIjpmYWxzZSwiU2NoZWR1bGVkU2h1dERvd25UaW1lIjoiMDA6MDAiLCJEYXlzT2ZUaGVXZWVrIjp7Ik1vbmRheSI6ZmFsc2UsIlR1ZXNkYXkiOmZhbHNlLCJXZWRuZXNkYXkiOmZhbHNlLCJUaHVyc2RheSI6ZmFsc2UsIkZyaWRheSI6ZmFsc2UsIlNhdHVyZGF5IjpmYWxzZSwiU3VuZGF5IjpmYWxzZX19LCJTY2hlZHVsZWRQb3dlck9uVGltZVNldHRpbmdzIjp7IkVuYWJsZVNjaGVkdWxlUG93ZXJPbiI6ZmFsc2UsIlNjaGVkdWxlZFBvd2VyT25UaW1lIjoiMDA6MDAifSwiQ29ubmVjdGlvblR5cGUiOiJBTlkiLCJOaXhQYXNzd29yZCI6ZmFsc2UsIlBhc3N3b3JkIjoiIiwiTml4UGFzc3dvcmRQcmVmZXJlbmNlIjoiMCIsIlByZXZlbnREZXJlZ2lzdGVyQW5kVW5pbnN0YWxsIjpmYWxzZSwiQXV0b0Rpc21pc3NhbFRpbWVvdXQiOjEwfQ== AgentUpgradeJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Aent Upgrade Job example: Nix Upgrade PayLoad: type: array description: | Job specific payload
{ "LocalPath":"http://xxxxx.com/nixagent.apk", "DevicePath":"/sdcard/" } Note: LocalPath specifies the SureMDM Agent Link
items: type: string example: "{\"LocalPath\":\"http://abc.com\",\"DevicePath\":\"/sdcard/\"}" Platform: type: string description: | Platform type.(e.g, Android)
example: "Android" RunScriptJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Run script job. example: run_script Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "AndroidVR",
"linux", "IOS", "androidwear" PayLoad: description: | [Base64](https://en.wikipedia.org/wiki/Base64) encoded run script.
Example: YW55IHNjcmlwdCBlZGl0 Predefined run scripts can be found using [`Get run scripts`](./#tag/Run-scripts/paths/~1job~1runscript/get) api. Note: Replace all \r\n with <br/> in the script. type: array items: type: string allOf: - $ref: '#/components/schemas/RunScriptPayLoad' example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: run_script Platform: android PayLoad: - ISNzdXJlbWRtPGJyLz5UdXJuT25HUFModHJ1ZSk= RunScriptPayLoad: type: array items: type: string RemoteBuzzJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Send remote buzz job PayLoad: description: | Job specific payload
{ "Periodicity":"5", "VolumeType":"1", "VolumeLock":true } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/RemoteBuzzPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "androidwear" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: REMOTE_BUZZ Platform: android PayLoad: - eyJQZXJpb2RpY2l0eSI6IjUiLCJWb2x1bWVUeXBlIjoiMSIsIlZvbHVtZUxvY2siOnRydWV9 DeviceInfoConfigurationJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Device Information Configuration Job example: DEVICE INFO CONFIG PayLoad: description: | Job specific payload
{ "EnableDeviceInfoConfig": true, "IncludeAllAttributes": false, "AttributesToCapture": "", "EnableSampling": true, "EnableSamplingConfig": { "Interval": 600, "AttributeList": "CellSignalInfo,WifiSignalInfo,SurelockInfo,BluetoothInfo,IpInfo,MemoryInfo,BatteryInfo,BootInfo,LocationInfo,AppMemoryInfo" }, "LatestInfo": "##LatestInfo_data##", "SyncIntervalTime": 50400 } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/DeviceInfoConfigurationJobPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform supported: android example: FolderId: null JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: DEVICE INFO CONFIG Platform: android PayLoad: - eyJFbmFibGVEZXZpY2VJbmZvQ29uZmlnIjp0cnVlLCJJbmNsdWRlQWxsQXR0cmlidXRlcyI6ZmFsc2UsIkF0dHJpYnV0ZXNUb0NhcHR1cmUiOiIiLCJFbmFibGVTYW1wbGluZyI6dHJ1ZSwiRW5hYmxlU2FtcGxpbmdDb25maWciOnsiSW50ZXJ2YWwiOjYwMCwiQXR0cmlidXRlTGlzdCI6IkNlbGxTaWduYWxJbmZvLFdpZmlTaWduYWxJbmZvLFN1cmVsb2NrSW5mbyxCbHVldG9vdGhJbmZvLElwSW5mbyxNZW1vcnlJbmZvLEJhdHRlcnlJbmZvLEJvb3RJbmZvLExvY2F0aW9uSW5mbyxBcHBNZW1vcnlJbmZvIn0sIkxhdGVzdEluZm8iOiIjI0xhdGVzdEluZm9fZGF0YSMjIiwiU3luY0ludGVydmFsVGltZSI6NTA0MDB9 EditLostModeJob: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Edit Lost Mode job to modify settings for lost or stolen devices. PayLoad: description: | Job-specific payload for editing Lost Mode configuration.
Example for different platforms:
**Android:** ```json { "isLostModeEnabled": true, "Message": "Updated lost mode message", "OrganizationName": "Updated Org", "PhoneNumber": "1234567890", "StreetAddress": "123 Street, City", "EmailIds": "email@example.com", "LocationEnabled": false, "LockTheDeviceEnabled": true, "ChangeThePasswordEnabled": false, "DevicePasswordField": "U3VwZXJTZWNyZXQ=", "ManagementType": "2", "Token": "%RESET_PASSWORD_TOKEN%" } ``` **Windows:** ```json { "LostModeEnabled": true, "isLostModeEnabled": "True", "Message": "Updated lost mode message", "PhoneNumber": "+918765432123", "Footer": "Updated Footer", "EmailAlertsEnabled": false, "EmailIds": "updated@mail.com", "RecoveryPasswordEnabled": false, "Password": "UpdatedPass123", "isoCode": "US" } ``` **iOS:** ```json { "isLostModeEnabled": "1", "Message": "Updated message for lost mode", "PhoneNumber": "+919876543210", "Footer": "Updated Footer Message", "EmailAlertsEnabled": true, "EmailIds": "iosupdate@example.com", "PlayLostModeEnabled": false, "isoCode": "GB" } ``` Note: The payload should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). type: array items: type: string Platform: type: string description: | Name of platform.
Platforms Supported: "android", "windows", "ios" additionalInformation: type: string description: Additional information related to the job. example: JobID: 123e4567-e89b-12d3-a456-426614174000 JobName: EditLostModeTest JobType: LOST_MODE PayLoad: - JTdCJTIyaXNMb3N0TW9kZUVuYWJsZWQlMjIlM0F0cnVlJTJDJTIyTWVzc2FnZSUyMiUzQSUyMlVwZGF0ZWQgbG9zdCBtb2RlIG1lc3NhZ2UlMjIlMkMlMjJPcmdhbml6YXRpb25OYW1lJTIyJTNBJTIyVXBkYXRlZCBPcmclMjIlMkMlMjJQaG9uZU51bWJlciUyMiUzQSUyMjEyMzQ1Njc4OTAlMjIlMkMlMjJTdHJlZXRBZGRyZXNzJTIyJTNBJTIyMTIzJTIwU3RyZWV0LCUyMENpdHklMjIlMkMlMjJFbWFpbElkcyUyMiUzQSUyMmVtYWlsJTQwZXhhbXBsZS5jb20lMjIlMkMlMjJMb2NhdGlvbkVuYWJsZWQlMjIlM0FmYWxzZSUyQyUyMkxvY2tUaGVEZXZpY2VFbmFibGVkJTIyJTNBdHJ1ZSUyQyUyMkNoYW5nZVRoZVBhc3N3b3JkRW5hYmxlZCUyMiUzQWZhbHNlJTJDJTIyRGV2aWNlUGFzc3dvcmRGaWVsZCUyMiUzQSUyMlUzcVdObGJXcEJVekVTJTNEJTNEJTIyJTJDJTIyTWFuYWdlbWVudFR5cGUlMjIlM0ElMjIyJTIyJTJDJTIyVG9rZW4lMjIlM0ElMjIlMjVSRVNFVFBBU1NXT1JEVE9LRU4lMjUlMjIlN0Q= Platform: android additionalInformation: "EMMLostModeJob" DeviceInfoConfigurationJobPayLoad: type: object properties: EnableDeviceInfoConfig: type: boolean description: | Whether Device info configuration is enabled example: true IncludeAllAttributes: type: boolean description: | Whether all attributes have to be included example: true AttributesToCapture: type: string description: Attributes to be captured (by default empty) example: "" EnableSamplingConfig: type: object description: | Configuration of the sampling attributes properties: Interval: type: integer description: Interval between sampling (in seconds) example: 600 AttributeList: type: string description: | List of attributes
CellSignalInfo,WifiSignalInfo,SurelockInfo,BluetoothInfo,IpInfo,MemoryInfo,BatteryInfo,BootInfo,LocationInfo,AppMemoryInfo
example: "CellSignalInfo,WifiSignalInfo,SurelockInfo,BluetoothInfo,IpInfo,MemoryInfo,BatteryInfo,BootInfo,LocationInfo" LatestInfo: type: string description: Lastest info to be captured (by default "##LatestInfo_data##") example: "##LatestInfo_data##" SyncIntervalTime: type: integer description: Interval between sync (in seconds) example: 50400 RelayServerConfigurationJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Relay server configuration job example: RELAY SERVER PayLoad: description: | Job specific payload
{ "isAcceptAllCertificate": true, "isAllowFallBackToCloud": false, "url": "https://abc.com", "username": "abc", "password": "@Bcd1234", "timeout": "15", "isRelayServerEnabled": true } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/RelayServerConfigurationJobPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform supported: android example: FolderId: null JobName: test job JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobType: RELAY SERVER Platform: android PayLoad: - eyJpc0FjY2VwdEFsbENlcnRpZmljYXRlIjp0cnVlLCJpc0FsbG93RmFsbEJhY2tUb0Nsb3VkIjpmYWxzZSwidXJsIjoiaHR0cDovL2FiYy5jb20iLCJ1c2VybmFtZSI6ImFiYyIsInBhc3N3b3JkIjoiQEJjZDEyMzQiLCJ0aW1lb3V0IjoiMTUiLCJpc1JlbGF5U2VydmVyRW5hYmxlZCI6dHJ1ZX0= RelayServerConfigurationJobPayLoad: type: object properties: isRelayServerEnabled: type: boolean description: | Whether Relay Server is enabled. example: true url: type: string description: | URL of the relay server example: "https://abc.com" username: type: string description: | Username to access relay server example: "username" password: type: string description: | Password to access relay server example: "password" timeout: type: string description: | Relay TimeOut (in seconds) example: "15" isAcceptAllCertificate: type: boolean description: | Whether all certificates should be accepted example: true isAllowFallBackToCloud: type: boolean description: | Whether fallback to cloud allowed example: false TelecomManagementPolicyJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Telecom Management Policy Job example: data_usage_policy PayLoad: description: | Job specific payload
{ "MobilePolicy": { "EnableDataUsage": true, "DataUsageCycle": 3, "DataUsageCycleDay": "10/07/2021", "CustomNoOfDays": "4", "WarningLimit": "100.00", "WarningLimitType": 2, "ThresholdLimit": "200.00", "ThresholdLimitType": 3, "AlertToMDM": false, "AlertToDevice": true, "AlertToEmail": false, "EmailAddress": "", "WarningEmailAddress": "abc@g.com", "WarningAlertToMDM": true, "WarningAlertToDevice": true, "WarningAlertToEmail": true, "WarningBlockDataUsage": true, "WarningBlockDataProfile": false, "BlockDataProfile": false, "ThresholdBlockDataUsage": false, "ApplyJobWarning": false, "ApplyJobThreshold": false, "ApplyJobIDWarning": "", "ApplyJobIDThreshold": "", "warningAlertApplyJob": true, "thresholdAlertApplyJob": false, "jobWarnning": "[{\"JobID\":\"14638ac8-6ebd-4996-83fe-61f8a4d1e17e\",\"JobName\":\"text\",\"Size\":785,\"Type\":\"TextMessage\",\"LastModified\":\"2021-10-01T01:54:45.639Z\",\"JobFolderPath\":null,\"JobFolderID\":null,\"ThingHashCode\":null,\"CustomerId\":\"1111111\",\"isVisible\":1,\"DefaultPolicy\":\"0\",\"Platform\":\"ANY\",\"IsOnlyEMM\":0}]", "jobThreshold": "[]", "WarningLimitMobileDataType": "0", "ThresholdLimitMobileDataType": "0" }, "SmsLogTracking": { "SMSTracking": "1", "Periodicity": "20" }, "CallLogTracking": { "CallTracking": "1", "Periodicity": "45" } } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/TelecomManagementPolicyJobPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android" ,"windows" example: FolderId: null JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: data_usage_policy Platform: android PayLoad: - eyJNb2JpbGVQb2xpY3kiOnsiRW5hYmxlRGF0YVVzYWdlIjp0cnVlLCJEYXRhVXNhZ2VDeWNsZSI6MywiRGF0YVVzYWdlQ3ljbGVEYXkiOiIxMC8wNy8yMDIxIiwiQ3VzdG9tTm9PZkRheXMiOiI0IiwiV2FybmluZ0xpbWl0IjoiMTAwLjAwIiwiV2FybmluZ0xpbWl0VHlwZSI6MiwiVGhyZXNob2xkTGltaXQiOiIyMDAuMDAiLCJUaHJlc2hvbGRMaW1pdFR5cGUiOjMsIkFsZXJ0VG9NRE0iOmZhbHNlLCJBbGVydFRvRGV2aWNlIjp0cnVlLCJBbGVydFRvRW1haWwiOmZhbHNlLCJFbWFpbEFkZHJlc3MiOiIiLCJXYXJuaW5nRW1haWxBZGRyZXNzIjoiYWJjQGcuY29tIiwiV2FybmluZ0FsZXJ0VG9NRE0iOnRydWUsIldhcm5pbmdBbGVydFRvRGV2aWNlIjp0cnVlLCJXYXJuaW5nQWxlcnRUb0VtYWlsIjp0cnVlLCJXYXJuaW5nQmxvY2tEYXRhVXNhZ2UiOnRydWUsIldhcm5pbmdCbG9ja0RhdGFQcm9maWxlIjpmYWxzZSwiQmxvY2tEYXRhUHJvZmlsZSI6ZmFsc2UsIlRocmVzaG9sZEJsb2NrRGF0YVVzYWdlIjpmYWxzZSwiQXBwbHlKb2JXYXJuaW5nIjpmYWxzZSwiQXBwbHlKb2JUaHJlc2hvbGQiOmZhbHNlLCJBcHBseUpvYklEV2FybmluZyI6IiIsIkFwcGx5Sm9iSURUaHJlc2hvbGQiOiIiLCJ3YXJuaW5nQWxlcnRBcHBseUpvYiI6dHJ1ZSwidGhyZXNob2xkQWxlcnRBcHBseUpvYiI6ZmFsc2UsImpvYldhcm5uaW5nIjoiW3tcIkpvYklEXCI6XCIxNDYzOGFjOC02ZWJkLTQ5OTYtODNmZS02MWY4YTRkMWUxN2VcIixcIkpvYk5hbWVcIjpcInRleHRcIixcIlNpemVcIjo3ODUsXCJUeXBlXCI6XCJUZXh0TWVzc2FnZVwiLFwiTGFzdE1vZGlmaWVkXCI6XCIyMDIxLTEwLTAxVDAxOjU0OjQ1LjYzOVpcIixcIkpvYkZvbGRlclBhdGhcIjpudWxsLFwiSm9iRm9sZGVySURcIjpudWxsLFwiVGhpbmdIYXNoQ29kZVwiOm51bGwsXCJDdXN0b21lcklkXCI6XCIwMTE2MTA1XCIsXCJpc1Zpc2libGVcIjoxLFwiRGVmYXVsdFBvbGljeVwiOlwiMFwiLFwiUGxhdGZvcm1cIjpcIkFOWVwiLFwiSXNPbmx5RU1NXCI6MH1dIiwiam9iVGhyZXNob2xkIjoiW10iLCJXYXJuaW5nTGltaXRNb2JpbGVEYXRhVHlwZSI6IjAiLCJUaHJlc2hvbGRMaW1pdE1vYmlsZURhdGFUeXBlIjoiMCJ9LCJTbXNMb2dUcmFja2luZyI6eyJTTVNUcmFja2luZyI6IjEiLCJQZXJpb2RpY2l0eSI6IjIwIn0sIkNhbGxMb2dUcmFja2luZyI6eyJDYWxsVHJhY2tpbmciOiIxIiwiUGVyaW9kaWNpdHkiOiI0NSJ9fQ== TelecomManagementPolicyJobPayLoad: type: object properties: MobilePolicy: type: object properties: EnableDataUsage: type: boolean description: Whether Telecom management is enabled example: true DataUsageCycle: type: integer description: | Periodicity of limit applied.
0: Monthly
1: Weekly
2: Daily
3: Custom example: 1 DataUsageCycleDay: type: string description: | Day of start of usage cycle.
DataUsageCycleDataUsageCycleDay
MonthlyDay of the month
WeeklyIndex of the day
Sun-1; Mon-2;Tue-3;..Sat:7;
Daily-
CustomDate in DD/MM/YYYY format.
example: "10/07/2021" CustomNoOfDays: type: string description: The number of days the cycle. (Applicable only for custom DataUsageCycle; "" by default) example: "4" WarningLimit: type: string description: | Limit 1 for the data usage example: "100.00" WarningLimitType: type: integer description: | Usage units for the limit
2: MB
3: GB example: 2 WarningEmailAddress: type: string description: | Email address the alert must be sent to (Applicable only if WarningAlertToEmail is true; "" by default) example: "abc@g.com" WarningAlertToMDM: type: boolean description: Whether a warning alert must be sent to MDM example: true WarningAlertToDevice: type: boolean description: Whether a warning alert must be sent to the device example: true WarningAlertToEmail: type: boolean description: Whether a warning alert must be sent through email example: true WarningBlockDataUsage: type: boolean description: Whether device must be blocked on reaching limit specified example: true WarningBlockDataProfile: type: boolean description: Whether a block data profile is to be applied on reaching specified limit example: false warningAlertApplyJob: type: boolean description: Whether a job has to be applied on reaching the specified limit example: true jobWarnning: type: string description: | List of jobs to be applied along with the job details like JobID, JobName, Size, Type, LastModified, JobFolderPath, JobFolderID, ThingHashCode, CustomerId, isVisible, DefaultPolicy, Platform, IsOnlyEMM example: "[{\"JobID\":\"14638ac8-6ebd-4996-83fe-61f8a4d1e17e\",\"JobName\":\"text\",\"Size\":785,\"Type\":\"TextMessage\",\"LastModified\":\"2021-10-01T01:54:45.639Z\",\"JobFolderPath\":null,\"JobFolderID\":null,\"ThingHashCode\":null,\"CustomerId\":\"1111111\",\"isVisible\":1,\"DefaultPolicy\":\"0\",\"Platform\":\"ANY\",\"IsOnlyEMM\":0}]" WarningLimitMobileDataType: type: string description: | The data type for wich specified limits are applicable (0: Overall data) example: "0" ThresholdLimit: type: string description: | Limit 2 for the data usage example: "100.00" ThresholdLimitType: type: integer description: | Usage units for the limit
2: MB
3: GB example: 2 EmailAddress: type: string description: | Email address the alert must be sent to (Applicable only if WarningAlertToEmail is true; "" by default) example: "abc@g.com" AlertToMDM: type: boolean description: Whether a warning alert must be sent to MDM example: true AlertToDevice: type: boolean description: Whether a warning alert must be sent to the device example: true AlertToEmail: type: boolean description: Whether a warning alert must be sent through email example: true ThresholdBlockDataUsage: type: boolean description: Whether device must be blocked on reaching limit specified example: true BlockDataProfile: type: boolean description: Whether a block data profile is to be applied on reaching specified limit example: false thresholdAlertApplyJob: type: boolean description: Whether a job has to be applied on reaching the specified limit example: true jobThreshold: type: string description: | List of jobs to be applied along with the job details like JobID, JobName, Size, Type, LastModified, JobFolderPath, JobFolderID, ThingHashCode, CustomerId, isVisible, DefaultPolicy, Platform, IsOnlyEMM example: "[{\"JobID\":\"14638ac8-6ebd-4996-83fe-61f8a4d1e17e\",\"JobName\":\"text\",\"Size\":785,\"Type\":\"TextMessage\",\"LastModified\":\"2021-10-01T01:54:45.639Z\",\"JobFolderPath\":null,\"JobFolderID\":null,\"ThingHashCode\":null,\"CustomerId\":\"1111111\",\"isVisible\":1,\"DefaultPolicy\":\"0\",\"Platform\":\"ANY\",\"IsOnlyEMM\":0}]" ThresholdLimitMobileDataType: type: string description: | The data type for wich specified limits are applicable (0: Overall data) example: "0" ApplyJobWarning: type: boolean description: If job warning has to be applied for limit 1 (by default always false) example: false ApplyJobThreshold: type: boolean description: If job warning has to be applied for limit 2 (by default always false) example: false ApplyJobIDWarning: type: string description: IDs of Jobs that have to be applied (by default always false) example: "" ApplyJobIDThreshold: type: string description: IDs of Jobs that have to be applied (by default always false) example: "" EmailConfigurationJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Email Configuration Job example: email_configuration PayLoad: description: | Job specific payload
{ "UserName": "abc123", "Password": "@Bcd1234", "IncomingServerAddress": "http://abc.com", "OutgoingServerAddress": "http://def.com", "Action": 1, "ServerType": 0, "EmailAddress": "", "IncomingPort": 123, "OutgoingPort": 456, "Signature": "qwerty1234", "DomainName": "", "SecurityType": 1, "SyncLookBack": -1, "SyncFrequency": -3 } For Server Type MSEXCAHNGE, { "UserName": "testuser", "Password": "@Bcd1234", "IncomingServerAddress": "outlook.office365.com", "OutgoingServerAddress": "", "Action": 1, "ServerType": 2, "EmailAddress": "testuser@outlook.com", "IncomingPort": 0, "OutgoingPort": 0, "Signature": "", "DomainName": ".com", "SecurityType": 0, "SyncLookBack": 2, "SyncFrequency": 5 } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/EmailConfigurationJobPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android" example: FolderId: null JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: email_configuration Platform: android PayLoad: - eyJVc2VyTmFtZSI6ImFiYzEyMyIsIlBhc3N3b3JkIjoiQEJjZDEyMzQiLCJJbmNvbWluZ1NlcnZlckFkZHJlc3MiOiJodHRwOi8vYWJjLmNvbSIsIk91dGdvaW5nU2VydmVyQWRkcmVzcyI6Imh0dHA6Ly9kZWYuY29tIiwiQWN0aW9uIjoxLCJTZXJ2ZXJUeXBlIjowLCJFbWFpbEFkZHJlc3MiOiIiLCJJbmNvbWluZ1BvcnQiOjEyMywiT3V0Z29pbmdQb3J0Ijo0NTYsIlNpZ25hdHVyZSI6InF3ZXJ0eTEyMzQiLCJEb21haW5OYW1lIjoiIiwiU2VjdXJpdHlUeXBlIjoxLCJTeW5jTG9va0JhY2siOi0xLCJTeW5jRnJlcXVlbmN5IjotM30= AlertMessageJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Alert Message Job example: ALERT_MESSAGE PayLoad: description: | Job specific payload
{ "AlertMessageType": "NewAlert", "AlertType": "Alert", "JobName": "samplealertnew", "JobType": "ALERT_MESSAGE", "AlertIcon": "fa-address-book-o", "AlertImageName": "", "AlertTextHtml": "Font Awesome Icons

sample alert

this is a sample alert

", "Platform": "android", "Title": "sample alert", "TitleSize": "12", "TitleColor": "#ffffff", "Description": "this is a sample alert", "DescriptionSize": "12", "DescriptionColor": "#ffffff", "AlertIconType": "Predefined", "IconSize": "Small", "AlertAlignmentType": "Center", "BackgroundColor": "#ff0000", "EnableBuzz": "true", "BuzzInterval": "5", "BuzzIntervalFormat": "Seconds", "EnableCloseAlert": "true", "CloseAlertInterval": "12", "CloseAlertIntervalFormat": "Seconds" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/AlertMessagePayLoad1' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows" example: FolderId: null JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: ALERT_MESSAGE Platform: android PayLoad: - eyJBbGVydE1lc3NhZ2VUeXBlIjoiTmV3QWxlcnQiLCJBbGVydFR5cGUiOiJBbGVydCIsIkpvYk5hbWUiOiJ0ZXN0IiwiSm9iVHlwZSI6IkFMRVJUX01FU1NBR0UiLCJBbGVydEljb24iOiJmYS1jb21tZW50cy1vIiwiQWxlcnRJbWFnZU5hbWUiOiIiLCJBbGVydFRleHRIdG1sIjoiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PHRpdGxlPkZvbnQgQXdlc29tZSBJY29uczwvdGl0bGU+PG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCI+PGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNC43LjAvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzXCI+PC9oZWFkPjxib2R5PjxzdHlsZT5ib2R5LGh0bWwsZGl2LGgxLHB7bWFyZ2luOjA7cGFkZGluZzowfXZpZGVve2Rpc3BsYXk6bm9uZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMHZoO30jQWxlcnRXcmFwcGVySWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2hlaWdodDoxMDB2aDt3aWR0aDoxMDAlO2JhY2tncm91bmQ6IzAwMDAwMDsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O30jQWxlcnRXcmFwcGVySWQgLkFsZXJ0Y29udGVudEJsb2Nre21heC13aWR0aDo3NSV9I0FsZXJ0V3JhcHBlcklkLmV4aXN0aW5nSW1hZ2V7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcn0jQWxlcnRXcmFwcGVySWQuZXhpc3RpbmdJbWFnZSAuQWxlcnRjb250ZW50QmxvY2t7ZGlzcGxheTpub25lfSNBbGVydFdyYXBwZXJJZC5vcmlnaW5hbGltYWdle2JhY2tncm91bmQtc2l6ZTpjb250YWlufSNBbGVydFdyYXBwZXJJZC5maXRUb1NjcmVlbntiYWNrZ3JvdW5kLXNpemU6Y292ZXJ9I0FsZXJ0V3JhcHBlcklkLlN0cmV0Y2hGdWxsU2NyZWVue2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCV9I0FsZXJ0V3JhcHBlcklkLkFsZXJ0dGVtcGxhdGVDZW50ZXIgLkFsZXJ0Y29udGVudEJsb2Nre3RleHQtYWxpZ246Y2VudGVyfSNBbGVydFdyYXBwZXJJZC5BbGVydHRlbXBsYXRlTGVmdCAuQWxlcnRjb250ZW50QmxvY2t7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0jQWxlcnRXcmFwcGVySWQuQWxlcnR0ZW1wbGF0ZVJpZ2h0IC5BbGVydGNvbnRlbnRCbG9ja3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2RpcmVjdGlvbjpydGx9ICNBbGVydFdyYXBwZXJJZC5BbGVydHRlbXBsYXRlUmlnaHQgI0FsZXJ0VGV4dEJsa3sgZGlyZWN0aW9uOmx0cjsgdGV4dC1hbGlnbjpyaWdodDt9I0FsZXJ0SW1hZ2VCbGssI0FsZXJ0VGV4dEJsa3twYWRkaW5nOjIwcHh9I0FsZXJ0VGV4dEJsayBoMXtjb2xvcjojZmZmO2ZvbnQtZmFtaWx5OmFyaWFsfSNBbGVydFRleHRCbGsgcHtjb2xvcjojZmZmO2ZvbnQtZmFtaWx5OmFyaWFsfSNBbGVydEltYWdlQmxrIGl7Y29sb3I6I2ZmZjtmb250LXNpemU6OGVtfSNBbGVydEltYWdlQmxrLnNtYWxsU2l6ZSBpLmZhe2ZvbnQtc2l6ZTo2ZW19I0FsZXJ0SW1hZ2VCbGsubWVkaXVtU2l6ZSBpLmZhe2ZvbnQtc2l6ZTo4ZW19I0FsZXJ0SW1hZ2VCbGsubGFyZ2VTaXplIGkuZmF7Zm9udC1zaXplOjEwZW19I0FsZXJ0SW1hZ2VCbGsgaS5jdXN0b21VcGxvYWQtaWNue2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjttYXJnaW46MCBhdXRvO2Rpc3BsYXk6YmxvY2t9I0FsZXJ0SW1hZ2VCbGsuc21hbGxTaXplIGkuY3VzdG9tVXBsb2FkLWljbnt3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHh9I0FsZXJ0SW1hZ2VCbGsubWVkaXVtU2l6ZSBpLmN1c3RvbVVwbG9hZC1pY257d2lkdGg6MTUwcHg7aGVpZ2h0OjE1MHB4fSNBbGVydEltYWdlQmxrLmxhcmdlU2l6ZSBpLmN1c3RvbVVwbG9hZC1pY257d2lkdGg6MjAwcHg7aGVpZ2h0OjIwMHB4fTwvc3R5bGU+PGRpdiBpZD1cIkFsZXJ0V3JhcHBlcklkXCIgY2xhc3M9XCJuZXdBbGVydEJveCBBbGVydHRlbXBsYXRlQ2VudGVyIFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmYwMDAwO1wiPjxkaXYgY2xhc3M9XCJBbGVydGNvbnRlbnRCbG9ja1wiPjxkaXYgaWQ9XCJBbGVydEltYWdlQmxrXCIgY2xhc3M9XCJzbWFsbFNpemVcIj48aSBpZD1cIkN1c3RvbUljblBhdGhJbWFnZVwiIGNsYXNzPVwiaWNuIGZhIGZhLWNvbW1lbnRzLW9cIj48L2k+PC9kaXY+PGRpdiBpZD1cIkFsZXJ0VGV4dEJsa1wiPjxoMSBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICNmZmZmZmY7XCI+dGVzdCBhbGVydDwvaDE+PHAgc3R5bGU9XCJmb250LXNpemU6IDEycHg7IGNvbG9yOiAjZmZmZmZmO1wiPnRlc3QgYWxlcnQgZGVzY3JpcHRpb248L3A+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4iLCJQbGF0Zm9ybSI6ImFuZHJvaWQiLCJUaXRsZSI6InRlc3QgYWxlcnQiLCJUaXRsZVNpemUiOiIxMiIsIlRpdGxlQ29sb3IiOiIjZmZmZmZmIiwiRGVzY3JpcHRpb24iOiJ0ZXN0IGFsZXJ0IGRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb25TaXplIjoiMTIiLCJEZXNjcmlwdGlvbkNvbG9yIjoiI2ZmZmZmZiIsIkFsZXJ0SWNvblR5cGUiOiJQcmVkZWZpbmVkIiwiSWNvblNpemUiOiJTbWFsbCIsIkFsZXJ0QWxpZ25tZW50VHlwZSI6IkNlbnRlciIsIkJhY2tncm91bmRDb2xvciI6IiNmZjAwMDAiLCJFbmFibGVCdXp6IjoidHJ1ZSIsIkJ1enpJbnRlcnZhbCI6IjMiLCJCdXp6SW50ZXJ2YWxGb3JtYXQiOiJTZWNvbmRzIiwiRW5hYmxlQ2xvc2VBbGVydCI6InRydWUiLCJDbG9zZUFsZXJ0SW50ZXJ2YWwiOiIzIiwiQ2xvc2VBbGVydEludGVydmFsRm9ybWF0IjoiU2Vjb25kcyJ9 ApplicationPermissionsJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Application permission job
Job for applying application specific permission on the device. PayLoad: description: | Job specific payload
{ "AppName": "42GearsUtility", "PackageId": "com.abcd.surevideo", "Storage": "0", "Camera": "0", "Contacts": "0", "Location": "0", "Telephone": "0", "SMS": "0", "BatteryOptimization": "1", "DeviceAdministrator": "1", "DisplayOverOtherApps": "1", "ModifySystemSettings": "2", "NotificationAccess": "1", "PictureInPicture": "2", "UnrestrictedData": "1", "UsageAccess": "2", "Calendar": "1", "Calllog": "2", "Microphone": "0", "PhysicalActivity": "0", "BodySensore": "0" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/ApplicationPermissionsJobPayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android" example: FolderId: null JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: AppPermissionUpdate Platform: android PayLoad: - eyJBcHBOYW1lIjoiNDJHZWFyc1V0aWxpdHkiLCJQYWNrYWdlSWQiOiJjb20uZ2VhcnM0Mi5zdXJldmlkZW8iLCJTdG9yYWdlIjoiMCIsIkNhbWVyYSI6IjAiLCJDb250YWN0cyI6IjAiLCJMb2NhdGlvbiI6IjAiLCJUZWxlcGhvbmUiOiIwIiwiU01TIjoiMCIsIkJhdHRlcnlPcHRpbWl6YXRpb24iOiIxIiwiRGV2aWNlQWRtaW5pc3RyYXRvciI6IjEiLCJEaXNwbGF5T3Zlck90aGVyQXBwcyI6IjEiLCJNb2RpZnlTeXN0ZW1TZXR0aW5ncyI6IjIiLCJOb3RpZmljYXRpb25BY2Nlc3MiOiIxIiwiUGljdHVyZUluUGljdHVyZSI6IjIiLCJVbnJlc3RyaWN0ZWREYXRhIjoiMSIsIlVzYWdlQWNjZXNzIjoiMiIsIkNhbGVuZGFyIjoiMSIsIkNhbGxsb2ciOiIyIiwiTWljcm9waG9uZSI6IjAiLCJQaHlzaWNhbEFjdGl2aXR5IjoiMCIsIkJvZHlTZW5zb3JlIjoiMCJ9 ApplicationPermissionsJobPayLoad: type: array items: type: object properties: AppName: type: string description: App Name example: "42GearsUtility" PackageId: type: string description: Package Id example: "com.abcd.surevideo" Storage: type: string description: Status of storage permission
ValuePermission
0Default
1Allow
2Deny
example: "0" Camera: type: string description: Status of camera permission
ValuePermission
0Default
1Allow
2Deny
example: "0" Contacts: type: string description: Status of Contacts permission
ValuePermission
0Default
1Allow
2Deny
example: "0" Location: type: string description: Status of Location permission
ValuePermission
0Default
1Allow
2Deny
example: "0" Telephone: type: string description: Status of Telephone permission
ValuePermission
0Default
1Allow
2Deny
example: "0" SMS: type: string description: Status of SMS permission
ValuePermission
0Default
1Allow
2Deny
example: "0" Calendar: type: string description: Status of Calendar permission
ValuePermission
0Default
1Allow
2Deny
example: "1" Calllog: type: string description: Status of Calllog permission
ValuePermission
0Default
1Allow
2Deny
example: "2" Microphone: type: string description: Status of Microphone permission
ValuePermission
0Default
1Allow
2Deny
example: "0" PhysicalActivity: type: string description: Status of PhysicalActivity permission
ValuePermission
0Default
1Allow
2Deny
example: "0" BodySensore: type: string description: Status of BodySensors permission
ValuePermission
0Default
1Allow
2Deny
example: "0" BatteryOptimization: type: string description: Status of Battery Optimization permission
ValuePermission
0Default
1Optimize
2Don't Optimize
example: "1" DeviceAdministrator: type: string description: Status of Device Administrator permission
ValuePermission
0Default
1Activate
2Deactivate
example: "1" DisplayOverOtherApps: type: string description: Status of Display Over Other Apps permission
ValuePermission
0Default
1Allow
2Deny
example: "1" ModifySystemSettings: type: string description: Permission to Modify System Settings
ValuePermission
0Default
1Allow
2Deny
example: 2" NotificationAccess: type: string description: Status of Notification Access permission
ValuePermission
0Default
1Allow
2Deny
example: "1" PictureInPicture: type: string description: Status of PictureInPicture permission
ValuePermission
0Default
1Allow
2Deny
example: "2" UnrestrictedData: type: string description: Status of Unrestricted Data permission
ValuePermission
0Default
1Allow
2Deny
example: "1" UsageAccess: type: string description: Status of Usage Access permission
ValuePermission
0Default
1Allow
2Deny
example: "2" SecurityPolicyJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Security Policy job
Enabling security policy on device PayLoad: description: | Job specific payload { "PasswordPolicy":{ "EnforcePassword":true, "MinPasswordLength":"FOUR", "PasswordStrength":"ALPHANUMERIC", "DeviceAutolock":"THREE", "DeviceWipeAttempts":"TEN" }, "PeripheralSettings":{ "EnforceSettings":true, "DisableBluetooth":true, "DisableWiFi":true, "WiFi":"DONT_CARE", "MobileData":"DONT_CARE", "WiFiHotspot":"DONT_CARE", "GPS":"ALWAYS_OFF", "DisableCamera":true, "PrivateDNSModification":"Allow", "PrivateDNSMode":"off" } } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/SecurityPolicyPayLoad' Platform: type: string description: | Name of platform.
Platform Supported:
android example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: security_policy Platform: android PayLoad: - eyJQYXNzd29yZFBvbGljeSI6eyJFbmZvcmNlUGFzc3dvcmQiOnRydWUsIk1pblBhc3N3b3JkTGVuZ3RoIjoiRk9VUiIsIlBhc3N3b3JkU3RyZW5ndGgiOiJBTFBIQU5VTUVSSUMiLCJEZXZpY2VBdXRvbG9jayI6IlRIUkVFIiwiRGV2aWNlV2lwZUF0dGVtcHRzIjoiVEVOIn0sIlBlcmlwaGVyYWxTZXR0aW5ncyI6eyJFbmZvcmNlU2V0dGluZ3MiOnRydWUsIkRpc2FibGVCbHVldG9vdGgiOnRydWUsIkRpc2FibGVXaUZpIjp0cnVlLCJXaUZpIjoiRE9OVF9DQVJFIiwiTW9iaWxlRGF0YSI6IkRPTlRfQ0FSRSIsIldpRmlIb3RzcG90IjoiRE9OVF9DQVJFIiwiR1BTIjoiQUxXQVlTX09GRiIsIkRpc2FibGVDYW1lcmEiOnRydWUsIlByaXZhdGVETlNNb2RpZmljYXRpb24iOiJBbGxvdyIsIlByaXZhdGVETlNNb2RlIjoib2ZmIn19 CompositeJobEdit: discriminator: propertyName: Platform mapping: android: '#/components/schemas/androidComposite' Others: '#/components/schemas/OthersComposite' allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Composite job
Apply more than one jobs at once example: File Transfer PayLoad: description: | Job specific payload
[ "8e636662-875b-481d-bac2-31da25e46e4f", "52cb8ca4-cf9a-4dc0-85cd-cced4e5ccda4" ] Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/CompositePayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "androidwear", "AndroidVR",
"windows_mobile", "windows", "windows_ce" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: COMPOSITE Platform: android MinimumVersion: '28' VersionCompare: '2' PayLoad: - WyI4ZTYzNjY2Mi04NzViLTQ4MWQtYmFjMi0zMWRhMjVlNDZlNGYiLCI1MmNiOGNhNC1jZjlhLTRkYzAtODVjZC1jY2VkNGU1Y2NkYTQiXQ== LockDeviceJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Lock device job
Lock device or change device password example: File Transfer PayLoad: description: | Job specific payload
{ "LockDevice":true, "ChangeDevicePassword":false, "Password":"", "Token":"%RESETPASSWORDTOKEN%" } Note: PayLoad should be converted in [Base64](https://en.wikipedia.org/wiki/Base64). allOf: - $ref: '#/components/schemas/LockDevicePayLoad' Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "any", "windows_ce",
"windows_mobile", "windows" example: JobID: f38f9258-62ce-4187-b8aa-9914e129f015 JobName: test job JobType: lock Platform: android PayLoad: - eyJMb2NrRGV2aWNlIjp0cnVlLCJDaGFuZ2VEZXZpY2VQYXNzd29yZCI6ZmFsc2UsIlBhc3N3b3JkIjoic2EiLCJUb2tlbiI6IiVSRVNFVFBBU1NXT1JEVE9LRU4lIn0= CreateProfileJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - $type: object properties: JobType: type: string description: | Create New Profile
Job for creating a new profile.

Profiles are bundles of settings that allow admins to shape the way enrolled devices look and work. example: ANDROID WORK PROFILE Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows", "iOS", "macOS", "linux" example: Android PayLoad: type: array items: type: object description: | The payload should be passed as a **stringified JSON**, meaning the entire JSON object must be converted into a string format before sending. Instead of sending raw JSON . For more details on JSON string, refer to the [Wikipedia article on JSON](https://en.wikipedia.org/wiki/JSON#Data_interchange).
Example of Stringified JSON **Raw JSON:** ```json { "fileSharingPolicy": { "enableFileSharing": true, "allowedFileTypes": ["pdf", "docx"], "maxFileSizeMB": 10 } } ``` **Stringified JSON (correct format for sending in the payload):** ```json "{\"fileSharingPolicy\":{\"enableFileSharing\":true}" ```

Profile specific payload
If the policy is not configured, then by default the value is null. { "applicationPolicy":{ "defaultPermission":0, "systemApplicationPolicy":null, "playstoreApplicationPolicy":null, "uninstallApplicationPolicy":null, "enablePlayStore":false }, "passwordPolicy":{ "ProfileType":"1", "quality":"0", "expirationTimeout":43200000, "historyLength":"5", "maximumFailedAttempts":"3", "minimumLength":"5", "maximumTimeToLock":10000 }, "systemSettings":{ "defaultPermission":0, "dataRoaming":0, "bluetooth":0, "stayOnWhilePluggedIn":0, "ringerMode":1, "unknownSources":-1, "systemUpdatePolicy":0, "usbDebugging":-1, "windowedSystemUpdateEndTime":910, "windowedSystemUpdateStartTime":900, "freezePeriod":null, "disableScreenCapture":true, "disableSafeMode":true, "enableAllSystemApps":false, "kioskExitPassword":"abcd1234", "disableFactoryReset":false, "factoryResetProtectionAdmin":[], "disableVolume":false, "disableAppControl":false, "disableAppsUninstallation":false, "disableBluetoothConfiguration":false, "disableCredentialsConfiguration":false, "disableMobileNetworksConfiguration":false, "disableTetheringConfiguration":false, "disableVPNConfiguration":false, "disableWifiConfiguration":false, "disableCrossProfileCopyPaste":true, "disableAppsInstallation":false, "disableAccounts":false, "disableOutgoingCall":false, "disableLocationSharing":false, "disableSMS":false, "disableMicrophone":false, "disableUSBFileTransfer":false, "disableAddUser":false, "disableRemoveUser":false, "enableUSBMassStorage":false, "kioskMode":false, "disableNetworkReset":false, "disableOutgoingBeam":false, "disableWallpaper":false, "disableAllKeyguardFeatures":false, "disableKeyguardCamera":false, "disableKeyguardNotifications":false, "disableKeyguardUnredactedNotifications":false, "disableKeyguardTrustAgentsState":false, "disableKeyguardFingerprint":false, "disableKeyguardRemoteInput":false, "disableKeyguardFaceAuthentication":false, "disableKeyguardIrisAuthentication":false, "disableKeyguardBiometricAuthentication":false, "isDeviceAppsFeedbackReportEnabled":false, "isAEspecificConfigurationEnabled":false, "appsAutoUpdate":2, "playStoreBehavior":3 }, "globalProxy":{ "proxyType":"0", "proxyServer":"https://abcdxyz.in", "proxyPort":2312, "dnsProvider":"-1" }, "vpnConfig":{ "vpnSetAlwaysOn":false, "vpnAlwaysOnPackageName":"", "vpnAlwaysOnLockdownEnabled":false }, "enterpriseAppStore":{ "eamWebApps":[], "eamApps":[{ "AppTitle":"Compass", "AppVersion":"1.7.5a", "AutoInstallApp":false, "PlatformType":"Android", "AppCategory":"compass", "AppDescription":"compass", "AppIcon":"ASUVORK5CYII=", "AppPackage":"kr.sira.compass", "AppSize":"2988946", "AppURL":"1111111/EAM/Android/02ec823b-d8c5-4a94-8625-a0adc67e33a5", "GUID":"02ec823b-d8c5-4a94-8625-a0adc67e33a5", "IsS3Storage":"true", "AppVersionCode":"67", "ApplicationType":"Enterprise Application", "AppType":0 }] }, "caCertificatePolicy":{ "certificates":[{ "Name":"test_doc.txt", "Data":"TG9yZW0gaXBzdW0=", "SCEP":false, "Password":"abcd1234", "GUID":"14e7174c-db32-4240-8b2c-30f51d82aa0b", "CredentialType":"1" }] }, "mailConfigurationPolicy":{ "emailAddress":"abcd@gmail.com", "hostName":"gmail", "userName":"abcd123", "deviceIdentifier":"abcdDev", "sslRequired":2, "trustAllCertificate":2, "loginCertificateAlias":"", "emailSignature":"", "syncWindow":null }, "wifiConfigurationPolicy":{ "ssid":"192.168.1.1", "securityType":2, "password":"NotMyPassword", "autoConnect":false, "hiddenNetwork":true, "CertificateBasedAuthentication":false, "PasswordBasedAuthentication":false }, "wifiConfigurationPolicyMultiple":null, "fileSharingPolicy":{ "deleteFileSharingPolicy": "1", "uploadFileSharingPolicy": "1", "ignoreHomeFileSharingPolicy": false, "ignoreSharedFileSharingPolicy": false, "enableHomeFolderiOS": "default", "enableSharedFolderiOS": "default", "efssFiles": [ { "id": "v1_Qm9vazEueGxzeA2", "fileName": "Book1.xlsx", "fileSize": 15016, "GUID": "MTEyMTAwMDM4JTJGRmlsZSUyMFN0b3JlJTJGQm9vazEueGxzeA==", "fileExtension": "xlsx", "isFile": true, "subItemsJsonArray": null, "s3BaseUrl": "111111111/File Store/Book1.xlsx", "isRecursive": false, "autoDownload": true } ], "setDownloadPathFileSharingPolicy": null, "deviceToCloud": { "preference": "2", "maxFileLength": 10, "fileDataUnit": "mb", "datatransferlimit": [ { "durationType": "weekly", "size": 1, "dataUnit": "mb" } ], "fileSyncConfig": [ { "source": "/dsfds/", "destination": "\\sadsadsad\\$device_id$\\", "wildcardSelect": "device_id", "preSyncScript": "dsadsadsa", "postSyncScript": "asdsadsad", "scriptExecution": "1", "scheduleSync": { "scheduleType": "periodically", "scheduleData": [ { "periodically": 30 } ] } } ] } }, "mobileThreatPrevention":{ "Accoridianstatus":[ "sheduledScan", "antiPhising", "antiVirusProtection", "secureConnectivity", "Antispam", "Updates" ], "SystemScan":{ "IsEnableWebFilter":true, "WebCategoryFilter":["Ads"], "UseExtendedWebCategories":false, "IgnorePowerSaverMode":false, "Exclusions":"", "IsFakeAppProtection":false, "ScannerMode":"2", "ScannerAction":"1", "TimeZoneType":1, "IsEnabled":true, "Days":[1,2], "Time":"09:48", "IsEnableMonitor":true, "IsKSNScanOnly":true, "CheckInKSN":true, "EnableScanSuspicious":true, "DetectRiskwareAdware":true, "RTPDirectories":"/storage/emulated/0", "RTPExclusions":"", "ScanPath":"", "EnableAppInstallation":true, "EnableCloudeScan":false, "DetectRiskwareAdwareAppMonitor":true, "EnableScanMissedApps":true, "CheckWiFiSafety":false, "EnableAntiSpam":true, "AntiSpamSelectOption":"3", "EnableBlockNonNumeric":false, "EnableContactToWhiteList":false, "BlackListContacts":"", "WhiteListContacts":"", "UpdateComponet":"1" }, "ScanURL":{ "TimeZoneType":1, "IsEnabled":false, "Days":[], "Time":"00:00" } }, "astromailconfigurationPolicy":null, "UseAFW":false, "compliancePolicy":null, "oemConfigPolicy":null } allOf: - $ref: '#/components/schemas/AndroidWorkProfilePayLoad' example: - "{\"applicationPolicy\":null,\"passwordPolicy\":{\"ProfileType\":\"1\",\"deviceMinimumPasswordComplexity\":\"0\",\"quality\":\"0\",\"minimumLength\":null,\"maximumFailedAttempts\":null,\"expirationTimeout\":null,\"historyLength\":null,\"maximumTimeToLock\":null,\"minimumLetters\":null,\"minimumLowercaseLetters\":null,\"minimumUppercaseLetters\":null,\"minimumNumericCharacters\":null,\"minimumSymbols\":null,\"minimumNonLetters\":null,\"idleTimeStrongAuthentication\":null,\"lockScreenToNone\":false,\"selectedCompliance\":1},\"systemSettings\":null,\"globalProxy\":null,\"brandingConfig\":null,\"vpnConfig\":null,\"enterpriseAppStore\":null,\"caCertificatePolicy\":null,\"mailConfigurationPolicy\":null,\"wifiConfigurationPolicy\":null,\"wifiConfigurationPolicyMultiple\":null,\"fileSharingPolicy\":{\"deleteFileSharingPolicy\":\"1\",\"uploadFileSharingPolicy\":\"1\",\"ignoreHomeFileSharingPolicy\":false,\"ignoreSharedFileSharingPolicy\":false,\"enableHomeFolderiOS\":\"default\",\"enableSharedFolderiOS\":\"default\",\"efssFiles\":[{\"id\":\"v1_Qm9vazEueGxzeA2\",\"fileName\":\"Book1.xlsx\",\"fileSize\":15016,\"GUID\":\"MTEyMTAwMDM4JTJGRmlsZSUyMFN0b3JlJTJGQm9vazEueGxzeA==\",\"fileExtension\":\"xlsx\",\"isFile\":true,\"subItemsJsonArray\":null,\"s3BaseUrl\":\"111111111/FileStore/Book1.xlsx\",\"isRecursive\":false,\"autoDownload\":true}],\"setDownloadPathFileSharingPolicy\":null,\"deviceToCloud\":{\"preference\":\"2\",\"maxFileLength\":10,\"fileDataUnit\":\"mb\",\"datatransferlimit\":[{\"durationType\":\"weekly\",\"size\":1,\"dataUnit\":\"mb\"}],\"fileSyncConfig\":[{\"source\":\"/sample12345/\",\"destination\":\"\\\\arun\\\\$device_id$\\\\\",\"wildcardSelect\":\"device_id\",\"preSyncScript\":\"prescript\",\"postSyncScript\":\"postscript\",\"scriptExecution\":\"1\",\"scheduleSync\":{\"scheduleType\":\"periodically\",\"scheduleData\":[{\"periodically\":40}]}}]}},\"mobileThreatPrevention\":null,\"astromailconfigurationPolicy\":null,\"UseAFW\":false,\"compliancePolicy\":null,\"oemConfigPolicy\":null,\"tunnelSettings\":null,\"isSavedFromV3\":true}" # - '{"applicationPolicy":null,"passwordPolicy":{"ProfileType":"1","quality":"262144","expirationTimeout":43200000,"historyLength":"5","maximumFailedAttempts":"3","minimumLength":"5","maximumTimeToLock":10000},"systemSettings":null,"globalProxy":null,"vpnConfig":null,"enterpriseAppStore":null,"caCertificatePolicy":null,"mailConfigurationPolicy":null,"wifiConfigurationPolicy":null,"wifiConfigurationPolicyMultiple":null,"fileSharingPolicy":null,"mobileThreatPrevention":null,"astromailconfigurationPolicy":null,"UseAFW":false,"compliancePolicy":null,"oemConfigPolicy":null}' SureLockSettingsJobEdit: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Configure settings for SureLock example: thirdparty_settings Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows", "wearos" example: android Payload: description: | Base64 encoded JSON { "SettingsXML": android Android System false false false false -1 false false 10 10 true true 10 10 true false 10 10 true false 10 10 true 0 false false -1 1 25 3 SureLock 0 0 false true false false false false false false 0 false 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c6001d5b2ac3df314204a8f9d7a00e1503c9aba0fd4538645de4bf4cc7e2555cfe9ff9d0236bf327ed3e907849a98df4d330c4bea551017d465b4c1d9b80bcb0 false false false 500 0 false false false 3000 0 false true true false false false false false false true false true false false false false false false false false false false false false false false false false false false false false false false false false false 0 0 0 false 0 0 0 0 -1 0 -2 false false false 40 Miles 40 Miles 5 true false false 40 Miles 0 true 0 false true true true false false false false false false false false false true false false 2300 SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY false 15 true 0 true false false false 800 2200 false 10 false true true true true true true true true false 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 true false false 15 false 20 false false -16777216 42Gears SureLock -16777216 -1 0 0 3 12 96 false true true true 8192 20000 /storage/emulated/0 SureLock blocked : %App% /storage/emulated/0 5 0 false false false false false 2200 true true true true true true true 0 0 false false false false 150 255 15 0 false false false false 1 false false 1 false false false false false true false Default_Profile © 2009-2019 42Gears Mobility Systems Pvt Ltd. false false , "Password":"1234", "Type":0, "InstallAutomatically":false, "EnableIfNotEnabled":true, "DownloadUrl":"" } allOf: - $ref: '#/components/schemas/SureLockSettingsJobPayload' example: ["eyJTZXR0aW5nc1hNTCI6IiA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCcgc3RhbmRhbG9uZT0neWVzJyA/PiA8c3VyZWxvY2sgcGxhdGZvcm09J0FORFJPSUQnIHZlcnNpb249JzInIHByb2R1Y3RkZXRhaWw9JycgYWN0UHJlZklkVHlwZT0nLTEnIG1vZGU9J2ZsZXhpYmxlJyBhY3RpdmF0aW9uY29kZT0nJyBzZXR0aW5nSWRlbnRpZmllcj0nJz48ZmlsdGVyYXBwbGljYXRpb25zIHNjcmVlbnJlc3VsdXRpb249JzI2OC4wWDI2OC4wJz48YXBwbGljYXRpb24+PHBhY2thZ2U+YW5kcm9pZDwvcGFja2FnZT48Y2xhc3M+PC9jbGFzcz48bmFtZT5BbmRyb2lkIFN5c3RlbTwvbmFtZT48aGlkZGVuPmZhbHNlPC9oaWRkZW4+PGZyZXNobGF1bmNoPmZhbHNlPC9mcmVzaGxhdW5jaD48Y2xlYXJhcHBkYXRhPmZhbHNlPC9jbGVhcmFwcGRhdGE+PHN0YXJ0dXA+ZmFsc2U8L3N0YXJ0dXA+PGlkbGV0aW1lPi0xPC9pZGxldGltZT48L2FwcGxpY2F0aW9uPjwvZmlsdGVyYXBwbGljYXRpb25zPjxzaG9ydGN1dHM+PC9zaG9ydGN1dHM+PHdpZGdldHM+PC93aWRnZXRzPjx3aGl0ZWxpc3Q+PC93aGl0ZWxpc3Q+PGJsYWNrbGlzdD48L2JsYWNrbGlzdD48d2lkZ2V0c2V0dGluZ3M+PGVuYWJsZXdpZGdldD5mYWxzZTwvZW5hYmxld2lkZ2V0PjxlbmFibGV0b3B3aWRnZXQ+ZmFsc2U8L2VuYWJsZXRvcHdpZGdldD48TGFuZHNjYXBlVG9wV2lkZ2V0QXJlYT4xMDwvTGFuZHNjYXBlVG9wV2lkZ2V0QXJlYT48UG9ydHJhaXRUb3BXaWRnZXRBcmVhPjEwPC9Qb3J0cmFpdFRvcFdpZGdldEFyZWE+PGVuYWJsZXdpZGdldHRyYXlmb3J0b3A+dHJ1ZTwvZW5hYmxld2lkZ2V0dHJheWZvcnRvcD48ZW5hYmxlYm90dG9td2lkZ2V0PnRydWU8L2VuYWJsZWJvdHRvbXdpZGdldD48TGFuZHNjYXBlQm90dG9tV2lkZ2V0QXJlYT4xMDwvTGFuZHNjYXBlQm90dG9tV2lkZ2V0QXJlYT48UG9ydHJhaXRCb3R0b21XaWRnZXRBcmVhPjEwPC9Qb3J0cmFpdEJvdHRvbVdpZGdldEFyZWE+PGVuYWJsZXdpZGdldHRyYXlmb3Jib3R0b20+dHJ1ZTwvZW5hYmxld2lkZ2V0dHJheWZvcmJvdHRvbT48ZW5hYmxlcmlnaHR3aWRnZXQ+ZmFsc2U8L2VuYWJsZXJpZ2h0d2lkZ2V0PjxMYW5kc2NhcGVSaWdodFdpZGdldEFyZWE+MTA8L0xhbmRzY2FwZVJpZ2h0V2lkZ2V0QXJlYT48UG9ydHJhaXRSaWdodFdpZGdldEFyZWE+MTA8L1BvcnRyYWl0UmlnaHRXaWRnZXRBcmVhPjxlbmFibGV3aWRnZXR0cmF5Zm9ycmlnaHQ+dHJ1ZTwvZW5hYmxld2lkZ2V0dHJheWZvcnJpZ2h0PjxlbmFibGVsZWZ0d2lkZ2V0PmZhbHNlPC9lbmFibGVsZWZ0d2lkZ2V0PjxMYW5kc2NhcGVMZWZ0V2lkZ2V0QXJlYT4xMDwvTGFuZHNjYXBlTGVmdFdpZGdldEFyZWE+PFBvcnRyYWl0TGVmdFdpZGdldEFyZWE+MTA8L1BvcnRyYWl0TGVmdFdpZGdldEFyZWE+PGVuYWJsZXdpZGdldHRyYXlmb3JsZWZ0PnRydWU8L2VuYWJsZXdpZGdldHRyYXlmb3JsZWZ0Pjwvd2lkZ2V0c2V0dGluZ3M+PG9wdGlvbnM+PGRpc3BsYXlvcHRpb25zPjx3YWxscGFwZXJwYXRoPjwvd2FsbHBhcGVycGF0aD48bGFuZHNjYXBld2FsbHBhcGVycGF0aD48L2xhbmRzY2FwZXdhbGxwYXBlcnBhdGg+PHBvcnRyYWl0d2FsbHBhcGVycGF0aD48L3BvcnRyYWl0d2FsbHBhcGVycGF0aD48bG9ja3NjcmVlbndhbGxwYXBlcj48L2xvY2tzY3JlZW53YWxscGFwZXI+PHdhbGxwYXBlcnBvc2l0aW9uPjA8L3dhbGxwYXBlcnBvc2l0aW9uPjxzeXN0ZW13YWxscGFwZXI+ZmFsc2U8L3N5c3RlbXdhbGxwYXBlcj48ZW5hYmxlQmFja2dyb3VuZENvbG9yPmZhbHNlPC9lbmFibGVCYWNrZ3JvdW5kQ29sb3I+PGJhY2tncm91bmRDb2xvcj4tMTwvYmFja2dyb3VuZENvbG9yPjxpY29uc2l6ZT4xPC9pY29uc2l6ZT48Y3VzdG9taWNvbnNpemU+MjU8L2N1c3RvbWljb25zaXplPjxpY29ucGFkZGluZz4zPC9pY29ucGFkZGluZz48Y3VzdG9tVG9hc3RUZXh0PlN1cmVMb2NrPC9jdXN0b21Ub2FzdFRleHQ+PHRleHRjb2xvcj4wPC90ZXh0Y29sb3I+PGFwcHNPcmRlcj4wPC9hcHBzT3JkZXI+PHJlbG9jYXRlaWNvbnM+ZmFsc2U8L3JlbG9jYXRlaWNvbnM+PGZ1bGxzY3JlZW5tb2RlPnRydWU8L2Z1bGxzY3JlZW5tb2RlPjxOb3RpZmljYXRpb25CYWRnZT5mYWxzZTwvTm90aWZpY2F0aW9uQmFkZ2U+PGhpZGVBcHBUaXRsZT5mYWxzZTwvaGlkZUFwcFRpdGxlPjxmbG9hdGluZ0hvbWU+ZmFsc2U8L2Zsb2F0aW5nSG9tZT48ZmxvYXRpbmdQcmludD5mYWxzZTwvZmxvYXRpbmdQcmludD48ZmxvYXRpbmdCYWNrPmZhbHNlPC9mbG9hdGluZ0JhY2s+PGZsb2F0aW5nUmVjZW50PmZhbHNlPC9mbG9hdGluZ1JlY2VudD48RmxvYXRpbmdCdXR0b25zQ29sb3I+MDwvRmxvYXRpbmdCdXR0b25zQ29sb3I+PEJhY2tGbG9hdGluZ0J1dHRvbkljb25QYXRoPjwvQmFja0Zsb2F0aW5nQnV0dG9uSWNvblBhdGg+PEhvbWVGbG9hdGluZ0J1dHRvbkljb25QYXRoPjwvSG9tZUZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PFJlY2VudEZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PC9SZWNlbnRGbG9hdGluZ0J1dHRvbkljb25QYXRoPjxQcmludEZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PC9QcmludEZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PEVuYWJsZUZsb2F0aW5nQnV0dG9uc1JlbG9jYXRpb24+ZmFsc2U8L0VuYWJsZUZsb2F0aW5nQnV0dG9uc1JlbG9jYXRpb24+PGZsb2F0aW5nSG9tZUxhbmRzY2FwZV94PjA8L2Zsb2F0aW5nSG9tZUxhbmRzY2FwZV94PjxmbG9hdGluZ0hvbWVMYW5kc2NhcGVfeT4wPC9mbG9hdGluZ0hvbWVMYW5kc2NhcGVfeT48ZmxvYXRpbmdIb21lUG9ydHJhaXRfeD4wPC9mbG9hdGluZ0hvbWVQb3J0cmFpdF94PjxmbG9hdGluZ0hvbWVQb3J0cmFpdF95PjA8L2Zsb2F0aW5nSG9tZVBvcnRyYWl0X3k+PGZsb2F0aW5nUHJpbnRMYW5kc2NhcGVfeD4wPC9mbG9hdGluZ1ByaW50TGFuZHNjYXBlX3g+PGZsb2F0aW5nUHJpbnRMYW5kc2NhcGVfeT4wPC9mbG9hdGluZ1ByaW50TGFuZHNjYXBlX3k+PGZsb2F0aW5nUHJpbnRQb3J0cmFpdF94PjA8L2Zsb2F0aW5nUHJpbnRQb3J0cmFpdF94PjxmbG9hdGluZ1ByaW50UG9ydHJhaXRfeT4wPC9mbG9hdGluZ1ByaW50UG9ydHJhaXRfeT48ZmxvYXRpbmdSZWNlbnRMYW5kc2NhcGVfeD4wPC9mbG9hdGluZ1JlY2VudExhbmRzY2FwZV94PjxmbG9hdGluZ1JlY2VudExhbmRzY2FwZV95PjA8L2Zsb2F0aW5nUmVjZW50TGFuZHNjYXBlX3k+PGZsb2F0aW5nUmVjZW50UG9ydHJhaXRfeD4wPC9mbG9hdGluZ1JlY2VudFBvcnRyYWl0X3g+PGZsb2F0aW5nUmVjZW50UG9ydHJhaXRfeT4wPC9mbG9hdGluZ1JlY2VudFBvcnRyYWl0X3k+PGZsb2F0aW5nQmFja0xhbmRzY2FwZV94PjA8L2Zsb2F0aW5nQmFja0xhbmRzY2FwZV94PjxmbG9hdGluZ0JhY2tMYW5kc2NhcGVfeT4wPC9mbG9hdGluZ0JhY2tMYW5kc2NhcGVfeT48ZmxvYXRpbmdCYWNrUG9ydHJhaXRfeD4wPC9mbG9hdGluZ0JhY2tQb3J0cmFpdF94PjxmbG9hdGluZ0JhY2tQb3J0cmFpdF95PjA8L2Zsb2F0aW5nQmFja1BvcnRyYWl0X3k+PC9kaXNwbGF5b3B0aW9ucz48c2V0dGluZ3M+PHBhc3N3b3JkPmM2MDAxZDViMmFjM2RmMzE0MjA0YThmOWQ3YTAwZTE1MDNjOWFiYTBmZDQ1Mzg2NDVkZTRiZjRjYzdlMjU1NWNmZTlmZjlkMDIzNmJmMzI3ZWQzZTkwNzg0OWE5OGRmNGQzMzBjNGJlYTU1MTAxN2Q0NjViNGMxZDliODBiY2IwPC9wYXNzd29yZD48TXVsdGlVc2VyTW9kZT5mYWxzZTwvTXVsdGlVc2VyTW9kZT48c2luZ2xlYXBwbW9kZT5mYWxzZTwvc2luZ2xlYXBwbW9kZT48YWx3YXlzaG93UHdkUHJvbXB0aW5TaW5nbGVBcHBNb2RlPmZhbHNlPC9hbHdheXNob3dQd2RQcm9tcHRpblNpbmdsZUFwcE1vZGU+PHNpbmdsZWFwcGRlbGF5PjUwMDwvc2luZ2xlYXBwZGVsYXk+PHJ1bk9uY2U+MDwvcnVuT25jZT48ZGlzYWJsZWJvdHRvbWJhcj5mYWxzZTwvZGlzYWJsZWJvdHRvbWJhcj48aGlkZWJvdHRvbWJhcj5mYWxzZTwvaGlkZWJvdHRvbWJhcj48dXNlYWR2YW5jZWhpZGVib3R0b21iYXI+ZmFsc2U8L3VzZWFkdmFuY2VoaWRlYm90dG9tYmFyPjxhZHZhbmNlaGlkZWJvdHRvbWJhcnRpbWVPdXQ+MzAwMDwvYWR2YW5jZWhpZGVib3R0b21iYXJ0aW1lT3V0PjxvblByZXNzT2ZIb21lQnV0dG9uR29Ubz4wPC9vblByZXNzT2ZIb21lQnV0dG9uR29Ubz48ZGlzYWJsZXRvdWNoaW5wdXRzPmZhbHNlPC9kaXNhYmxldG91Y2hpbnB1dHM+PFVzZVNEUENhbGN1bGF0aW9uPnRydWU8L1VzZVNEUENhbGN1bGF0aW9uPjxlbmFibGVzYW1zdW5na25veD50cnVlPC9lbmFibGVzYW1zdW5na25veD48ZGlzYWJsZW90aGVyaG9tZXM+ZmFsc2U8L2Rpc2FibGVvdGhlcmhvbWVzPjxkaXNhYmxlbXVsdGl3aW5kb3dtb2RlPmZhbHNlPC9kaXNhYmxlbXVsdGl3aW5kb3dtb2RlPjxkaXNhYmxlc2FmZW1vZGU+ZmFsc2U8L2Rpc2FibGVzYWZlbW9kZT48ZGlzYWJsZVBvd2VyT2ZmPmZhbHNlPC9kaXNhYmxlUG93ZXJPZmY+PGRpc2FibGVmYWN0b3J5cmVzZXQ+ZmFsc2U8L2Rpc2FibGVmYWN0b3J5cmVzZXQ+PGRpc2FibGVVc2JTdG9yYWdlPmZhbHNlPC9kaXNhYmxlVXNiU3RvcmFnZT48d2lwZVJlY2VudEFwcHM+dHJ1ZTwvd2lwZVJlY2VudEFwcHM+PGRpc2FibGVDbGlwQm9hcmQ+ZmFsc2U8L2Rpc2FibGVDbGlwQm9hcmQ+PGRpc2FibGVTVm9pY2U+dHJ1ZTwvZGlzYWJsZVNWb2ljZT48RGlzYWJsZW90YT5mYWxzZTwvRGlzYWJsZW90YT48ZGlzYWJsZVNEY2FyZD5mYWxzZTwvZGlzYWJsZVNEY2FyZD48U2V0Q3VzdG9tQm9vdEFuaW1hdGlvbj5mYWxzZTwvU2V0Q3VzdG9tQm9vdEFuaW1hdGlvbj48Q3VzdG9tYm9vdEFuaW1hdGlvbkZpbGU+PC9DdXN0b21ib290QW5pbWF0aW9uRmlsZT48Q3VzdG9tQm9vdEFuaW1hdGlvbkxvb3BGaWxlPjwvQ3VzdG9tQm9vdEFuaW1hdGlvbkxvb3BGaWxlPjxDdXN0b21Cb290QW5pbWF0aW9uU291bmRGaWxlPjwvQ3VzdG9tQm9vdEFuaW1hdGlvblNvdW5kRmlsZT48U2V0Q3VzdG9tU2h1dGRvd25BbmltYXRpb24+ZmFsc2U8L1NldEN1c3RvbVNodXRkb3duQW5pbWF0aW9uPjxDdXN0b21TaHV0ZG93bkFuaW1hdGlvbkZpbGU+PC9DdXN0b21TaHV0ZG93bkFuaW1hdGlvbkZpbGU+PEN1c3RvbVNodXREb3duQW5pbWF0aW9uU291bmRGaWxlPjwvQ3VzdG9tU2h1dERvd25BbmltYXRpb25Tb3VuZEZpbGU+PGRpc2FibGVoYXJkd2FyZWtleXM+PGhvbWU+ZmFsc2U8L2hvbWU+PGJhY2s+ZmFsc2U8L2JhY2s+PG1lbnU+ZmFsc2U8L21lbnU+PHBvd2VyPmZhbHNlPC9wb3dlcj48dm9sdW1lZG93bj5mYWxzZTwvdm9sdW1lZG93bj48dm9sdW1ldXA+ZmFsc2U8L3ZvbHVtZXVwPjxyZWNlbnRrZXk+ZmFsc2U8L3JlY2VudGtleT48L2Rpc2FibGVoYXJkd2FyZWtleXM+PGRpc2FibGVoYXJkd2FyZWtleXM+PGhvbWU+ZmFsc2U8L2hvbWU+PGJhY2s+ZmFsc2U8L2JhY2s+PG1lbnU+ZmFsc2U8L21lbnU+PHBvd2VyPmZhbHNlPC9wb3dlcj48dm9sdW1lZG93bj5mYWxzZTwvdm9sdW1lZG93bj48dm9sdW1ldXA+ZmFsc2U8L3ZvbHVtZXVwPjxyZWNlbnRhcHBzPmZhbHNlPC9yZWNlbnRhcHBzPjxzcGVjaWFsS2V5PmZhbHNlPC9zcGVjaWFsS2V5PjxzcGVjaWFsVm9sdW1lPmZhbHNlPC9zcGVjaWFsVm9sdW1lPjxjYW1lcmE+ZmFsc2U8L2NhbWVyYT48L2Rpc2FibGVoYXJkd2FyZWtleXM+PGVkZ2VTdXBwb3J0PmZhbHNlPC9lZGdlU3VwcG9ydD48ZGlzYWJsZUN1c3RvbUhhcmR3YXJlS2V5cz48L2Rpc2FibGVDdXN0b21IYXJkd2FyZUtleXM+PGRpc2FibGVTb2Z0TmF2aWdhdGlvbktleXM+PGhvbWVTb2Z0S2V5PmZhbHNlPC9ob21lU29mdEtleT48YmFja1NvZnRLZXk+ZmFsc2U8L2JhY2tTb2Z0S2V5PjxyZWNlbnRTb2Z0S2V5PmZhbHNlPC9yZWNlbnRTb2Z0S2V5PjwvZGlzYWJsZVNvZnROYXZpZ2F0aW9uS2V5cz48Y2FtZXJhbW9kZT4wPC9jYW1lcmFtb2RlPjx3aWZpbW9kZT4wPC93aWZpbW9kZT48bW9iaWxlZGF0YT4wPC9tb2JpbGVkYXRhPjxwcmVmZXJNb2JpbGVEYXRhPmZhbHNlPC9wcmVmZXJNb2JpbGVEYXRhPjxncHNtb2RlPjA8L2dwc21vZGU+PGJsdWV0b29vdGhtb2RlPjA8L2JsdWV0b29vdGhtb2RlPjxzb3VuZG1vZGU+MDwvc291bmRtb2RlPjxmbGlnaHRtb2RlPjA8L2ZsaWdodG1vZGU+PFN1cmVMb2NrSG9tZVNjcmVlbk9yaWVudGF0aW9uPi0xPC9TdXJlTG9ja0hvbWVTY3JlZW5PcmllbnRhdGlvbj48cm90YXRpb25tb2RlPjA8L3JvdGF0aW9ubW9kZT48YnJpZ2h0bmVzcz4tMjwvYnJpZ2h0bmVzcz48RW5hYmxlU29mdEtleWJvYXJkPmZhbHNlPC9FbmFibGVTb2Z0S2V5Ym9hcmQ+PEVuYWJsZURyaXZlU2FmZXR5PmZhbHNlPC9FbmFibGVEcml2ZVNhZmV0eT48RW5hYmxlRW1haWxBbGVydEZvckRyaXZlclNhZmV0eT5mYWxzZTwvRW5hYmxlRW1haWxBbGVydEZvckRyaXZlclNhZmV0eT48RHJpdmVyU2FmZXR5VGhyZXNob2xkRm9yRW1haWw+NDA8L0RyaXZlclNhZmV0eVRocmVzaG9sZEZvckVtYWlsPjxEcml2ZXJTYWZldHlUaHJlc2hvbGRVbml0Rm9yRW1haWw+TWlsZXM8L0RyaXZlclNhZmV0eVRocmVzaG9sZFVuaXRGb3JFbWFpbD48RHJpdmVyU2FmZXR5RW1haWw+PC9Ecml2ZXJTYWZldHlFbWFpbD48RHJpdmVyU2FmZXR5UHJvZmlsZVNldHRpbmdzPjwvRHJpdmVyU2FmZXR5UHJvZmlsZVNldHRpbmdzPjxEcml2ZXJTYWZldHlUaHJlc2hvbGRGb3JQcm9maWxlPjQwPC9Ecml2ZXJTYWZldHlUaHJlc2hvbGRGb3JQcm9maWxlPjxEcml2ZXJTYWZldHlUaHJlc2hvbGRVbml0Rm9yUHJvZmlsZT5NaWxlczwvRHJpdmVyU2FmZXR5VGhyZXNob2xkVW5pdEZvclByb2ZpbGU+PERyaXZlclNhZmV0eUxvY2F0aW9uVXBkYXRlSW50ZXJ2YWw+NTwvRHJpdmVyU2FmZXR5TG9jYXRpb25VcGRhdGVJbnRlcnZhbD48RW5hYmxlRHJpdmVyU2FmZXR5T3ZlcmxheT50cnVlPC9FbmFibGVEcml2ZXJTYWZldHlPdmVybGF5PjxUcmFuc3BhcmVudE92ZXJsYXk+ZmFsc2U8L1RyYW5zcGFyZW50T3ZlcmxheT48YWxsb3dCYWNrZ3JvdW5kUnVubmluZ0FwcD5mYWxzZTwvYWxsb3dCYWNrZ3JvdW5kUnVubmluZ0FwcD48RHJpdmVyU2FmZXR5VGhyZXNob2xkRm9yT3ZlcmxheT40MDwvRHJpdmVyU2FmZXR5VGhyZXNob2xkRm9yT3ZlcmxheT48RHJpdmVyU2FmZXR5VGhyZXNob2xkVW5pdEZvck92ZXJsYXk+TWlsZXM8L0RyaXZlclNhZmV0eVRocmVzaG9sZFVuaXRGb3JPdmVybGF5PjxEcml2ZXJTYWZldHlQcm9maWxlRGVsYXk+MDwvRHJpdmVyU2FmZXR5UHJvZmlsZURlbGF5PjxlbmFibGV3YXRjaGRvZz50cnVlPC9lbmFibGV3YXRjaGRvZz48b25VbmFsbG93ZWRBcHBsaWNhdGlvbkdvVG8+MDwvb25VbmFsbG93ZWRBcHBsaWNhdGlvbkdvVG8+PHVzYlN0YXRlSG9tZT5mYWxzZTwvdXNiU3RhdGVIb21lPjxzdXBwcmVzc3N5c3RlbXdpbmRvd3M+dHJ1ZTwvc3VwcHJlc3NzeXN0ZW13aW5kb3dzPjxxdWlja1NldHRpbmdUaWxlcz50cnVlPC9xdWlja1NldHRpbmdUaWxlcz48RGlzYWJsZVN0YXR1c0Jhcj50cnVlPC9EaXNhYmxlU3RhdHVzQmFyPjxkaXNhYmxlU3RhdHVzQmFyVXNpbmdBZHZhbmNlTW9kZT5mYWxzZTwvZGlzYWJsZVN0YXR1c0JhclVzaW5nQWR2YW5jZU1vZGU+PHN0YXR1c0JhckFjdGlvbkFwcD48L3N0YXR1c0JhckFjdGlvbkFwcD48c3VwcHJlc3NzeXN0ZW1kaWFsb2dzPmZhbHNlPC9zdXBwcmVzc3N5c3RlbWRpYWxvZ3M+PGJsb2NrTm90aWZpY2F0aW9ucz5mYWxzZTwvYmxvY2tOb3RpZmljYXRpb25zPjxzaG93Q2FsbEluU2NyZWVuPmZhbHNlPC9zaG93Q2FsbEluU2NyZWVuPjxibG9ja0luY29taW5nQ2FsbHM+ZmFsc2U8L2Jsb2NrSW5jb21pbmdDYWxscz48YmxvY2tPdXRnb2luZ0NhbGxzPmZhbHNlPC9ibG9ja091dGdvaW5nQ2FsbHM+PGJsb2NrSW5jb21pbmdTTVM+ZmFsc2U8L2Jsb2NrSW5jb21pbmdTTVM+PGVuYWJsZXNtc2NvbW1hbmQ+ZmFsc2U8L2VuYWJsZXNtc2NvbW1hbmQ+PGFjY2VwdHNob3J0Y3V0cz5mYWxzZTwvYWNjZXB0c2hvcnRjdXRzPjxjcmVhdGVTaG9ydGN1dHM+dHJ1ZTwvY3JlYXRlU2hvcnRjdXRzPjxyZW1vdmVzaG9ydGN1dHM+ZmFsc2U8L3JlbW92ZXNob3J0Y3V0cz48YmxvY2tTaG9ydGN1dD48L2Jsb2NrU2hvcnRjdXQ+PFNjaGVkdWxlZFJlYm9vdEVuYWJsZWQ+ZmFsc2U8L1NjaGVkdWxlZFJlYm9vdEVuYWJsZWQ+PFNjaGVkdWxlZFJlYm9vdFRpbWU+MjMwMDwvU2NoZWR1bGVkUmVib290VGltZT48U2NoZWR1bGVkUmVib290RGF5cz48RGF5cz5TVU5EQVk8L0RheXM+PERheXM+TU9OREFZPC9EYXlzPjxEYXlzPlRVRVNEQVk8L0RheXM+PERheXM+V0VETkVTREFZPC9EYXlzPjxEYXlzPlRIVVJTREFZPC9EYXlzPjxEYXlzPkZSSURBWTwvRGF5cz48RGF5cz5TQVRVUkRBWTwvRGF5cz48L1NjaGVkdWxlZFJlYm9vdERheXM+PGlkbGV0aW1lb3V0ZW5hYmxlZD5mYWxzZTwvaWRsZXRpbWVvdXRlbmFibGVkPjxpZGxldGltZW91dD4xNTwvaWRsZXRpbWVvdXQ+PGlkbGVUaW1lb3V0QXBwPjwvaWRsZVRpbWVvdXRBcHA+PHJlc2V0QnJpZ2h0bmVzc1RpbWVyT25JZGxlVGltZW91dD50cnVlPC9yZXNldEJyaWdodG5lc3NUaW1lck9uSWRsZVRpbWVvdXQ+PHByZXZlbnRzdXNwZW5kPjA8L3ByZXZlbnRzdXNwZW5kPjxLZWVwQ1BVT24+dHJ1ZTwvS2VlcENQVU9uPjxydW5TdXJlTG9ja1NlcnZpY2VJbkZvcmVncm91bmQ+ZmFsc2U8L3J1blN1cmVMb2NrU2VydmljZUluRm9yZWdyb3VuZD48UHJldmVudFN1c3BlbmRPbkFDUG93ZXI+ZmFsc2U8L1ByZXZlbnRTdXNwZW5kT25BQ1Bvd2VyPjxzY2hlZHVsZVByZXZlbnRTdXNwZW5kPmZhbHNlPC9zY2hlZHVsZVByZXZlbnRTdXNwZW5kPjxwcmV2ZW50U3VzcGVuZFN0YXJ0PjgwMDwvcHJldmVudFN1c3BlbmRTdGFydD48cHJldmVudFN1c3BlbmRFbmQ+MjIwMDwvcHJldmVudFN1c3BlbmRFbmQ+PHByZXZlbnRTdXNwZW5kQmF0dGVyeT5mYWxzZTwvcHJldmVudFN1c3BlbmRCYXR0ZXJ5PjxwcmV2ZW50U3VzcGVuZEJhdHRlcnlUaHJlc2hvbGQ+MTA8L3ByZXZlbnRTdXNwZW5kQmF0dGVyeVRocmVzaG9sZD48cHJldmVudFN1c3BlbmRBcHBsaWNhdGlvbj5mYWxzZTwvcHJldmVudFN1c3BlbmRBcHBsaWNhdGlvbj48cHJldmVudFN1c3BlbmRBcHBsaWNhdGlvblN0YXR1cz50cnVlPC9wcmV2ZW50U3VzcGVuZEFwcGxpY2F0aW9uU3RhdHVzPjxwcmV2ZW50U3VzcGVuZEFwcGxpY2F0aW9uTGlzdD48L3ByZXZlbnRTdXNwZW5kQXBwbGljYXRpb25MaXN0PjxkYXlzT2ZUaGVXZWVrPjxzdW5kYXk+dHJ1ZTwvc3VuZGF5Pjxtb25kYXk+dHJ1ZTwvbW9uZGF5Pjx0dWVzZGF5PnRydWU8L3R1ZXNkYXk+PHdlZG5lc2RheT50cnVlPC93ZWRuZXNkYXk+PHRodXJzZGF5PnRydWU8L3RodXJzZGF5PjxmcmlkYXk+dHJ1ZTwvZnJpZGF5PjxzYXR1cmRheT50cnVlPC9zYXR1cmRheT48L2RheXNPZlRoZVdlZWs+PHZvbHVtZVNldHRpbmdzPjxlbmFibGVWb2x1bWVTZXR0aW5ncz5mYWxzZTwvZW5hYmxlVm9sdW1lU2V0dGluZ3M+PHZvbHVtZUxldmVsPjEwPC92b2x1bWVMZXZlbD48bWluVm9sdW1lTGV2ZWw+MTA8L21pblZvbHVtZUxldmVsPjxtYXhWb2x1bWVMZXZlbD4xMDwvbWF4Vm9sdW1lTGV2ZWw+PHZvbHVtZUxldmVsQWxhcm0+MTA8L3ZvbHVtZUxldmVsQWxhcm0+PHZvbHVtZUxldmVsUmluZz4xMDwvdm9sdW1lTGV2ZWxSaW5nPjx2b2x1bWVMZXZlbE1lZGlhPjEwPC92b2x1bWVMZXZlbE1lZGlhPjx2b2x1bWVMZXZlbENhbGw+MTA8L3ZvbHVtZUxldmVsQ2FsbD48bWluVm9sdW1lTGV2ZWxNZWRpYT4xMDwvbWluVm9sdW1lTGV2ZWxNZWRpYT48bWF4Vm9sdW1lTGV2ZWxNZWRpYT4xMDwvbWF4Vm9sdW1lTGV2ZWxNZWRpYT48bWluVm9sdW1lTGV2ZWxBbGFybT4xMDwvbWluVm9sdW1lTGV2ZWxBbGFybT48bWF4Vm9sdW1lTGV2ZWxBbGFybT4xMDwvbWF4Vm9sdW1lTGV2ZWxBbGFybT48bWluVm9sdW1lTGV2ZWxDYWxsPjEwPC9taW5Wb2x1bWVMZXZlbENhbGw+PG1heFZvbHVtZUxldmVsQ2FsbD4xMDwvbWF4Vm9sdW1lTGV2ZWxDYWxsPjxtaW5Wb2x1bWVMZXZlbFJpbmc+MTA8L21pblZvbHVtZUxldmVsUmluZz48bWF4Vm9sdW1lTGV2ZWxSaW5nPjEwPC9tYXhWb2x1bWVMZXZlbFJpbmc+PHZvbHVtZVR5cGU+dHJ1ZTwvdm9sdW1lVHlwZT48L3ZvbHVtZVNldHRpbmdzPjxTY3JlZW5zYXZlclNldHRpbmdzPjxFbmFibGVTY3JlZW5zYXZlcj5mYWxzZTwvRW5hYmxlU2NyZWVuc2F2ZXI+PFVzZVN5c3RlbVdhbGxwYXBlckFzU2NyZWVuc2F2ZXI+ZmFsc2U8L1VzZVN5c3RlbVdhbGxwYXBlckFzU2NyZWVuc2F2ZXI+PFNjcmVlbnNhdmVySW1hZ2VQYXRoPjwvU2NyZWVuc2F2ZXJJbWFnZVBhdGg+PFNjcmVlbnNhdmVyVGltZW91dD4xNTwvU2NyZWVuc2F2ZXJUaW1lb3V0PjwvU2NyZWVuc2F2ZXJTZXR0aW5ncz48TWVtb3J5U2V0dGluZ3M+PG1lbW9yeU1hbmFnZW1lbnQ+ZmFsc2U8L21lbW9yeU1hbmFnZW1lbnQ+PHRocmVzaG9sZE1lbW9yeT4yMDwvdGhyZXNob2xkTWVtb3J5PjxoaWRlUHJvbXB0PmZhbHNlPC9oaWRlUHJvbXB0PjwvTWVtb3J5U2V0dGluZ3M+PGVuYWJsZUN1c3RvbVRpdGxlQmFyPmZhbHNlPC9lbmFibGVDdXN0b21UaXRsZUJhcj48dGl0bGVCYXJDb2xvcj4tMTY3NzcyMTY8L3RpdGxlQmFyQ29sb3I+PHRpdGxlPjQyR2VhcnMgU3VyZUxvY2s8L3RpdGxlPjxzdGF0dXNCYXJDb2xvcj4tMTY3NzcyMTY8L3N0YXR1c0JhckNvbG9yPjx0aXRsZVRleHRDb2xvcj4tMTwvdGl0bGVUZXh0Q29sb3I+PHRpdGxlVGV4dEFsaWdubWVudD4wPC90aXRsZVRleHRBbGlnbm1lbnQ+PHRpdGxlVGV4dFN0eWxlPjA8L3RpdGxlVGV4dFN0eWxlPjx0aXRsZUZvbnRGYW1pbHk+MzwvdGl0bGVGb250RmFtaWx5Pjx0aXRsZUZvbnRTaXplPjEyPC90aXRsZUZvbnRTaXplPjx0aXRsZUJhclNpemU+OTY8L3RpdGxlQmFyU2l6ZT48ZW5hYmxlR3JhZGllbnQ+ZmFsc2U8L2VuYWJsZUdyYWRpZW50PjxlbmFibGVsb2dnaW5nPnRydWU8L2VuYWJsZWxvZ2dpbmc+PGVuYWJsZXRvYXN0PnRydWU8L2VuYWJsZXRvYXN0PjxlcnJvcmxvZ2VuYWJsZWQ+dHJ1ZTwvZXJyb3Jsb2dlbmFibGVkPjxsb2dCdWZmZXJTaXplPjgxOTI8L2xvZ0J1ZmZlclNpemU+PGJvb3RkZWxheT4yMDAwMDwvYm9vdGRlbGF5Pjxsb2dmaWxlcGF0aD4vc3RvcmFnZS9lbXVsYXRlZC8wPC9sb2dmaWxlcGF0aD48Y3VzdG9tVG9hc3RNZXNzYWdlPlN1cmVMb2NrIGJsb2NrZWQgOiAlQXBwJTwvY3VzdG9tVG9hc3RNZXNzYWdlPjxkaWFnbm9zdGljUGF0aD4vc3RvcmFnZS9lbXVsYXRlZC8wPC9kaWFnbm9zdGljUGF0aD48bWVudWFjY2Vzcz48bnVtdGFwcz41PC9udW10YXBzPjx0aW1lb3V0PjA8L3RpbWVvdXQ+PC9tZW51YWNjZXNzPjxzdXJlbG9ja2FuYWx5dGljcz5mYWxzZTwvc3VyZWxvY2thbmFseXRpY3M+PG11bHRpdXNlcmFuYWx5dGljcz5mYWxzZTwvbXVsdGl1c2VyYW5hbHl0aWNzPjxhbmFseXRpY3NzY2hlZHVsZWV4cD5mYWxzZTwvYW5hbHl0aWNzc2NoZWR1bGVleHA+PGFuYWx5dGljc1NjaGVkdWxlRXhwVG9NYWlsPmZhbHNlPC9hbmFseXRpY3NTY2hlZHVsZUV4cFRvTWFpbD48cmVjZXBpZW50ZW1haWxhZGRyZXNzPjwvcmVjZXBpZW50ZW1haWxhZGRyZXNzPjxhbmFseXRpY3NTY2hlZHVsZUV4cFRvU3VyZU1ETT5mYWxzZTwvYW5hbHl0aWNzU2NoZWR1bGVFeHBUb1N1cmVNRE0+PGFuYWx5dGljc1NlY3JldEtleT48L2FuYWx5dGljc1NlY3JldEtleT48bXVsdGlVc2VyQW5hbHl0aWNzU2VjcmV0S2V5PjwvbXVsdGlVc2VyQW5hbHl0aWNzU2VjcmV0S2V5PjxhbmFseXRpY3NzY2hlZHVsZWV4cGF0PjIyMDA8L2FuYWx5dGljc3NjaGVkdWxlZXhwYXQ+PGRheXNPZlRoZVdlZWtBbmFseXRpY3NTY2hlZHVsZUV4cD48c3VuZGF5PnRydWU8L3N1bmRheT48bW9uZGF5PnRydWU8L21vbmRheT48dHVlc2RheT50cnVlPC90dWVzZGF5Pjx3ZWRuZXNkYXk+dHJ1ZTwvd2VkbmVzZGF5Pjx0aHVyc2RheT50cnVlPC90aHVyc2RheT48ZnJpZGF5PnRydWU8L2ZyaWRheT48c2F0dXJkYXk+dHJ1ZTwvc2F0dXJkYXk+PC9kYXlzT2ZUaGVXZWVrQW5hbHl0aWNzU2NoZWR1bGVFeHA+PGJhdHRlcnlNc2c+PC9iYXR0ZXJ5TXNnPjxiYXR0ZXJ5SW50ZXJ2YWw+MDwvYmF0dGVyeUludGVydmFsPjxiYXR0ZXJ5VGhyZXNob2xkPjA8L2JhdHRlcnlUaHJlc2hvbGQ+PHNob3dCYXR0ZXJ5TG93PmZhbHNlPC9zaG93QmF0dGVyeUxvdz48ZW5hYmxlUG9wQWxlcnRUb25lPmZhbHNlPC9lbmFibGVQb3BBbGVydFRvbmU+PGFuYWx5dGljc2NsZWFyZGF0YWFmdGVyZXhwPmZhbHNlPC9hbmFseXRpY3NjbGVhcmRhdGFhZnRlcmV4cD48ZW5hYmxlcG93ZXJzYXZpbmc+ZmFsc2U8L2VuYWJsZXBvd2Vyc2F2aW5nPjxkZWZhdWx0YnJpZ2h0bmVzc29uYmF0dGVyeT4xNTA8L2RlZmF1bHRicmlnaHRuZXNzb25iYXR0ZXJ5PjxkZWZhdWx0YnJpZ2h0bmVzc29uYWM+MjU1PC9kZWZhdWx0YnJpZ2h0bmVzc29uYWM+PGJyaWdodG5lc3NpbmFjdGl2aXR5dGltZT4xNTwvYnJpZ2h0bmVzc2luYWN0aXZpdHl0aW1lPjxicmlnaHRuZXNzaW5hY3Rpdml0eXZhbHVlPjA8L2JyaWdodG5lc3NpbmFjdGl2aXR5dmFsdWU+PGRpc2FibGVicmlnaHRuZXNzY2hhbmdlb250aGlyZHBhcnR5YXBwPmZhbHNlPC9kaXNhYmxlYnJpZ2h0bmVzc2NoYW5nZW9udGhpcmRwYXJ0eWFwcD48YmxvY2tBZG1pbkFjY2Vzc0FmdGVyTG9hZGluZz5mYWxzZTwvYmxvY2tBZG1pbkFjY2Vzc0FmdGVyTG9hZGluZz48c2VuZE1haWxPbkZhaWxlZEF0dGVtcHQ+ZmFsc2U8L3NlbmRNYWlsT25GYWlsZWRBdHRlbXB0PjxibG9ja0xvZ2luVGlsbFJlYm9vdD5mYWxzZTwvYmxvY2tMb2dpblRpbGxSZWJvb3Q+PGxvZ2luYmxvY2t0aW1lPjE8L2xvZ2luYmxvY2t0aW1lPjxibG9ja0xvZ2luRm9yU3BlY2lmaWVkVGltZT5mYWxzZTwvYmxvY2tMb2dpbkZvclNwZWNpZmllZFRpbWU+PGJsb2NrTG9naW5UaWxsTWVzc2FnZT5mYWxzZTwvYmxvY2tMb2dpblRpbGxNZXNzYWdlPjxsb2dpbnRocmVzaG9sZD4xPC9sb2dpbnRocmVzaG9sZD48YWRtaW5Mb2dpblNlY3VyaXR5RGFpbHlSZXBvcnQ+ZmFsc2U8L2FkbWluTG9naW5TZWN1cml0eURhaWx5UmVwb3J0Pjx3aGl0ZWxpc3ROZXdDb250YWN0cz5mYWxzZTwvd2hpdGVsaXN0TmV3Q29udGFjdHM+PGJsb2NrT3V0Z29pbmdTTVM+ZmFsc2U8L2Jsb2NrT3V0Z29pbmdTTVM+PGJsb2NrT3V0Z29pbmdNTVM+ZmFsc2U8L2Jsb2NrT3V0Z29pbmdNTVM+PGJsb2NrSW5jb21pbmdNTVM+ZmFsc2U8L2Jsb2NrSW5jb21pbmdNTVM+PC9zZXR0aW5ncz48ZXhwb3J0bGljZW5zZWtleT50cnVlPC9leHBvcnRsaWNlbnNla2V5PjxNdWx0aVVzZXJQcm9maWxlU2V0dGluZ3M+PE11bHRpVXNlclByb2ZpbGU+ZmFsc2U8L011bHRpVXNlclByb2ZpbGU+PEFjdGl2ZVByb2ZpbGU+RGVmYXVsdF9Qcm9maWxlPC9BY3RpdmVQcm9maWxlPjxQcm9maWxlU2V0dGluZ3M+PC9Qcm9maWxlU2V0dGluZ3M+PFVzZXJTZXR0aW5ncz48L1VzZXJTZXR0aW5ncz48U2VydmVyQ29uZmlndXJhdGlvbj48L1NlcnZlckNvbmZpZ3VyYXRpb24+PGxvZ2luc2NyZWVuX2xvZ28+PC9sb2dpbnNjcmVlbl9sb2dvPjxsb2dpbnNjcmVlbl90aXRsZT7CqSAyMDA5LTIwMTkgNDJHZWFycyBNb2JpbGl0eSBTeXN0ZW1zIFB2dCBMdGQuPC9sb2dpbnNjcmVlbl90aXRsZT48L011bHRpVXNlclByb2ZpbGVTZXR0aW5ncz48L29wdGlvbnM+PFdpZmlDZW50ZXJTZXR0aW5ncz48aXNMb2FkRGVmYXVsdFVybD5mYWxzZTwvaXNMb2FkRGVmYXVsdFVybD48aXNMYXVuY2hPbkNvbm5lY3RUb09wZW5OZXR3b3JrPmZhbHNlPC9pc0xhdW5jaE9uQ29ubmVjdFRvT3Blbk5ldHdvcms+PFVybFRvT3Blbk9uQ29ubmVjdGl2aXR5PjwvVXJsVG9PcGVuT25Db25uZWN0aXZpdHk+PC9XaWZpQ2VudGVyU2V0dGluZ3M+PC9zdXJlbG9jaz4iLCJQYXNzd29yZCI6IjEyMzQiLCJUeXBlIjowLCJJbnN0YWxsQXV0b21hdGljYWxseSI6ZmFsc2UsIkVuYWJsZUlmTm90RW5hYmxlZCI6dHJ1ZSwiRG93bmxvYWRVcmwiOiIifQ=="] ThirdPartyApplicationSettings: allOf: - $ref: '#/components/schemas/JobEditModel' - type: object properties: JobType: type: string description: | Configure settings for SureLock example: thirdparty_settings Platform: type: string description: | Platform type.(e.g, android)
Platform Supported: "android", "windows", "wearos" example: android Payload: description: | Base64 encoded JSON { "SettingsXML": android Android System false false false false -1 false false 10 10 true true 10 10 true false 10 10 true false 10 10 true 0 false false -1 1 25 3 SureLock 0 0 false true false false false false false false 0 false 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c6001d5b2ac3df314204a8f9d7a00e1503c9aba0fd4538645de4bf4cc7e2555cfe9ff9d0236bf327ed3e907849a98df4d330c4bea551017d465b4c1d9b80bcb0 false false false 500 0 false false false 3000 0 false true true false false false false false false true false true false false false false false false false false false false false false false false false false false false false false false false false false false 0 0 0 false 0 0 0 0 -1 0 -2 false false false 40 Miles 40 Miles 5 true false false 40 Miles 0 true 0 false true true true false false false false false false false false false true false false 2300 SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY false 15 true 0 true false false false 800 2200 false 10 false true true true true true true true true false 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 true false false 15 false 20 false false -16777216 42Gears SureLock -16777216 -1 0 0 3 12 96 false true true true 8192 20000 /storage/emulated/0 SureLock blocked : %App% /storage/emulated/0 5 0 false false false false false 2200 true true true true true true true 0 0 false false false false 150 255 15 0 false false false false 1 false false 1 false false false false false true false Default_Profile © 2009-2019 42Gears Mobility Systems Pvt Ltd. false false , "Password":"1234", "Type":0, "InstallAutomatically":false, "EnableIfNotEnabled":true, "DownloadUrl":"" } allOf: - $ref: '#/components/schemas/SureLockSettingsJobPayload' example: ["eyJTZXR0aW5nc1hNTCI6IiA8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCcgc3RhbmRhbG9uZT0neWVzJyA/PiA8c3VyZWxvY2sgcGxhdGZvcm09J0FORFJPSUQnIHZlcnNpb249JzInIHByb2R1Y3RkZXRhaWw9JycgYWN0UHJlZklkVHlwZT0nLTEnIG1vZGU9J2ZsZXhpYmxlJyBhY3RpdmF0aW9uY29kZT0nJyBzZXR0aW5nSWRlbnRpZmllcj0nJz48ZmlsdGVyYXBwbGljYXRpb25zIHNjcmVlbnJlc3VsdXRpb249JzI2OC4wWDI2OC4wJz48YXBwbGljYXRpb24+PHBhY2thZ2U+YW5kcm9pZDwvcGFja2FnZT48Y2xhc3M+PC9jbGFzcz48bmFtZT5BbmRyb2lkIFN5c3RlbTwvbmFtZT48aGlkZGVuPmZhbHNlPC9oaWRkZW4+PGZyZXNobGF1bmNoPmZhbHNlPC9mcmVzaGxhdW5jaD48Y2xlYXJhcHBkYXRhPmZhbHNlPC9jbGVhcmFwcGRhdGE+PHN0YXJ0dXA+ZmFsc2U8L3N0YXJ0dXA+PGlkbGV0aW1lPi0xPC9pZGxldGltZT48L2FwcGxpY2F0aW9uPjwvZmlsdGVyYXBwbGljYXRpb25zPjxzaG9ydGN1dHM+PC9zaG9ydGN1dHM+PHdpZGdldHM+PC93aWRnZXRzPjx3aGl0ZWxpc3Q+PC93aGl0ZWxpc3Q+PGJsYWNrbGlzdD48L2JsYWNrbGlzdD48d2lkZ2V0c2V0dGluZ3M+PGVuYWJsZXdpZGdldD5mYWxzZTwvZW5hYmxld2lkZ2V0PjxlbmFibGV0b3B3aWRnZXQ+ZmFsc2U8L2VuYWJsZXRvcHdpZGdldD48TGFuZHNjYXBlVG9wV2lkZ2V0QXJlYT4xMDwvTGFuZHNjYXBlVG9wV2lkZ2V0QXJlYT48UG9ydHJhaXRUb3BXaWRnZXRBcmVhPjEwPC9Qb3J0cmFpdFRvcFdpZGdldEFyZWE+PGVuYWJsZXdpZGdldHRyYXlmb3J0b3A+dHJ1ZTwvZW5hYmxld2lkZ2V0dHJheWZvcnRvcD48ZW5hYmxlYm90dG9td2lkZ2V0PnRydWU8L2VuYWJsZWJvdHRvbXdpZGdldD48TGFuZHNjYXBlQm90dG9tV2lkZ2V0QXJlYT4xMDwvTGFuZHNjYXBlQm90dG9tV2lkZ2V0QXJlYT48UG9ydHJhaXRCb3R0b21XaWRnZXRBcmVhPjEwPC9Qb3J0cmFpdEJvdHRvbVdpZGdldEFyZWE+PGVuYWJsZXdpZGdldHRyYXlmb3Jib3R0b20+dHJ1ZTwvZW5hYmxld2lkZ2V0dHJheWZvcmJvdHRvbT48ZW5hYmxlcmlnaHR3aWRnZXQ+ZmFsc2U8L2VuYWJsZXJpZ2h0d2lkZ2V0PjxMYW5kc2NhcGVSaWdodFdpZGdldEFyZWE+MTA8L0xhbmRzY2FwZVJpZ2h0V2lkZ2V0QXJlYT48UG9ydHJhaXRSaWdodFdpZGdldEFyZWE+MTA8L1BvcnRyYWl0UmlnaHRXaWRnZXRBcmVhPjxlbmFibGV3aWRnZXR0cmF5Zm9ycmlnaHQ+dHJ1ZTwvZW5hYmxld2lkZ2V0dHJheWZvcnJpZ2h0PjxlbmFibGVsZWZ0d2lkZ2V0PmZhbHNlPC9lbmFibGVsZWZ0d2lkZ2V0PjxMYW5kc2NhcGVMZWZ0V2lkZ2V0QXJlYT4xMDwvTGFuZHNjYXBlTGVmdFdpZGdldEFyZWE+PFBvcnRyYWl0TGVmdFdpZGdldEFyZWE+MTA8L1BvcnRyYWl0TGVmdFdpZGdldEFyZWE+PGVuYWJsZXdpZGdldHRyYXlmb3JsZWZ0PnRydWU8L2VuYWJsZXdpZGdldHRyYXlmb3JsZWZ0Pjwvd2lkZ2V0c2V0dGluZ3M+PG9wdGlvbnM+PGRpc3BsYXlvcHRpb25zPjx3YWxscGFwZXJwYXRoPjwvd2FsbHBhcGVycGF0aD48bGFuZHNjYXBld2FsbHBhcGVycGF0aD48L2xhbmRzY2FwZXdhbGxwYXBlcnBhdGg+PHBvcnRyYWl0d2FsbHBhcGVycGF0aD48L3BvcnRyYWl0d2FsbHBhcGVycGF0aD48bG9ja3NjcmVlbndhbGxwYXBlcj48L2xvY2tzY3JlZW53YWxscGFwZXI+PHdhbGxwYXBlcnBvc2l0aW9uPjA8L3dhbGxwYXBlcnBvc2l0aW9uPjxzeXN0ZW13YWxscGFwZXI+ZmFsc2U8L3N5c3RlbXdhbGxwYXBlcj48ZW5hYmxlQmFja2dyb3VuZENvbG9yPmZhbHNlPC9lbmFibGVCYWNrZ3JvdW5kQ29sb3I+PGJhY2tncm91bmRDb2xvcj4tMTwvYmFja2dyb3VuZENvbG9yPjxpY29uc2l6ZT4xPC9pY29uc2l6ZT48Y3VzdG9taWNvbnNpemU+MjU8L2N1c3RvbWljb25zaXplPjxpY29ucGFkZGluZz4zPC9pY29ucGFkZGluZz48Y3VzdG9tVG9hc3RUZXh0PlN1cmVMb2NrPC9jdXN0b21Ub2FzdFRleHQ+PHRleHRjb2xvcj4wPC90ZXh0Y29sb3I+PGFwcHNPcmRlcj4wPC9hcHBzT3JkZXI+PHJlbG9jYXRlaWNvbnM+ZmFsc2U8L3JlbG9jYXRlaWNvbnM+PGZ1bGxzY3JlZW5tb2RlPnRydWU8L2Z1bGxzY3JlZW5tb2RlPjxOb3RpZmljYXRpb25CYWRnZT5mYWxzZTwvTm90aWZpY2F0aW9uQmFkZ2U+PGhpZGVBcHBUaXRsZT5mYWxzZTwvaGlkZUFwcFRpdGxlPjxmbG9hdGluZ0hvbWU+ZmFsc2U8L2Zsb2F0aW5nSG9tZT48ZmxvYXRpbmdQcmludD5mYWxzZTwvZmxvYXRpbmdQcmludD48ZmxvYXRpbmdCYWNrPmZhbHNlPC9mbG9hdGluZ0JhY2s+PGZsb2F0aW5nUmVjZW50PmZhbHNlPC9mbG9hdGluZ1JlY2VudD48RmxvYXRpbmdCdXR0b25zQ29sb3I+MDwvRmxvYXRpbmdCdXR0b25zQ29sb3I+PEJhY2tGbG9hdGluZ0J1dHRvbkljb25QYXRoPjwvQmFja0Zsb2F0aW5nQnV0dG9uSWNvblBhdGg+PEhvbWVGbG9hdGluZ0J1dHRvbkljb25QYXRoPjwvSG9tZUZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PFJlY2VudEZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PC9SZWNlbnRGbG9hdGluZ0J1dHRvbkljb25QYXRoPjxQcmludEZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PC9QcmludEZsb2F0aW5nQnV0dG9uSWNvblBhdGg+PEVuYWJsZUZsb2F0aW5nQnV0dG9uc1JlbG9jYXRpb24+ZmFsc2U8L0VuYWJsZUZsb2F0aW5nQnV0dG9uc1JlbG9jYXRpb24+PGZsb2F0aW5nSG9tZUxhbmRzY2FwZV94PjA8L2Zsb2F0aW5nSG9tZUxhbmRzY2FwZV94PjxmbG9hdGluZ0hvbWVMYW5kc2NhcGVfeT4wPC9mbG9hdGluZ0hvbWVMYW5kc2NhcGVfeT48ZmxvYXRpbmdIb21lUG9ydHJhaXRfeD4wPC9mbG9hdGluZ0hvbWVQb3J0cmFpdF94PjxmbG9hdGluZ0hvbWVQb3J0cmFpdF95PjA8L2Zsb2F0aW5nSG9tZVBvcnRyYWl0X3k+PGZsb2F0aW5nUHJpbnRMYW5kc2NhcGVfeD4wPC9mbG9hdGluZ1ByaW50TGFuZHNjYXBlX3g+PGZsb2F0aW5nUHJpbnRMYW5kc2NhcGVfeT4wPC9mbG9hdGluZ1ByaW50TGFuZHNjYXBlX3k+PGZsb2F0aW5nUHJpbnRQb3J0cmFpdF94PjA8L2Zsb2F0aW5nUHJpbnRQb3J0cmFpdF94PjxmbG9hdGluZ1ByaW50UG9ydHJhaXRfeT4wPC9mbG9hdGluZ1ByaW50UG9ydHJhaXRfeT48ZmxvYXRpbmdSZWNlbnRMYW5kc2NhcGVfeD4wPC9mbG9hdGluZ1JlY2VudExhbmRzY2FwZV94PjxmbG9hdGluZ1JlY2VudExhbmRzY2FwZV95PjA8L2Zsb2F0aW5nUmVjZW50TGFuZHNjYXBlX3k+PGZsb2F0aW5nUmVjZW50UG9ydHJhaXRfeD4wPC9mbG9hdGluZ1JlY2VudFBvcnRyYWl0X3g+PGZsb2F0aW5nUmVjZW50UG9ydHJhaXRfeT4wPC9mbG9hdGluZ1JlY2VudFBvcnRyYWl0X3k+PGZsb2F0aW5nQmFja0xhbmRzY2FwZV94PjA8L2Zsb2F0aW5nQmFja0xhbmRzY2FwZV94PjxmbG9hdGluZ0JhY2tMYW5kc2NhcGVfeT4wPC9mbG9hdGluZ0JhY2tMYW5kc2NhcGVfeT48ZmxvYXRpbmdCYWNrUG9ydHJhaXRfeD4wPC9mbG9hdGluZ0JhY2tQb3J0cmFpdF94PjxmbG9hdGluZ0JhY2tQb3J0cmFpdF95PjA8L2Zsb2F0aW5nQmFja1BvcnRyYWl0X3k+PC9kaXNwbGF5b3B0aW9ucz48c2V0dGluZ3M+PHBhc3N3b3JkPmM2MDAxZDViMmFjM2RmMzE0MjA0YThmOWQ3YTAwZTE1MDNjOWFiYTBmZDQ1Mzg2NDVkZTRiZjRjYzdlMjU1NWNmZTlmZjlkMDIzNmJmMzI3ZWQzZTkwNzg0OWE5OGRmNGQzMzBjNGJlYTU1MTAxN2Q0NjViNGMxZDliODBiY2IwPC9wYXNzd29yZD48TXVsdGlVc2VyTW9kZT5mYWxzZTwvTXVsdGlVc2VyTW9kZT48c2luZ2xlYXBwbW9kZT5mYWxzZTwvc2luZ2xlYXBwbW9kZT48YWx3YXlzaG93UHdkUHJvbXB0aW5TaW5nbGVBcHBNb2RlPmZhbHNlPC9hbHdheXNob3dQd2RQcm9tcHRpblNpbmdsZUFwcE1vZGU+PHNpbmdsZWFwcGRlbGF5PjUwMDwvc2luZ2xlYXBwZGVsYXk+PHJ1bk9uY2U+MDwvcnVuT25jZT48ZGlzYWJsZWJvdHRvbWJhcj5mYWxzZTwvZGlzYWJsZWJvdHRvbWJhcj48aGlkZWJvdHRvbWJhcj5mYWxzZTwvaGlkZWJvdHRvbWJhcj48dXNlYWR2YW5jZWhpZGVib3R0b21iYXI+ZmFsc2U8L3VzZWFkdmFuY2VoaWRlYm90dG9tYmFyPjxhZHZhbmNlaGlkZWJvdHRvbWJhcnRpbWVPdXQ+MzAwMDwvYWR2YW5jZWhpZGVib3R0b21iYXJ0aW1lT3V0PjxvblByZXNzT2ZIb21lQnV0dG9uR29Ubz4wPC9vblByZXNzT2ZIb21lQnV0dG9uR29Ubz48ZGlzYWJsZXRvdWNoaW5wdXRzPmZhbHNlPC9kaXNhYmxldG91Y2hpbnB1dHM+PFVzZVNEUENhbGN1bGF0aW9uPnRydWU8L1VzZVNEUENhbGN1bGF0aW9uPjxlbmFibGVzYW1zdW5na25veD50cnVlPC9lbmFibGVzYW1zdW5na25veD48ZGlzYWJsZW90aGVyaG9tZXM+ZmFsc2U8L2Rpc2FibGVvdGhlcmhvbWVzPjxkaXNhYmxlbXVsdGl3aW5kb3dtb2RlPmZhbHNlPC9kaXNhYmxlbXVsdGl3aW5kb3dtb2RlPjxkaXNhYmxlc2FmZW1vZGU+ZmFsc2U8L2Rpc2FibGVzYWZlbW9kZT48ZGlzYWJsZVBvd2VyT2ZmPmZhbHNlPC9kaXNhYmxlUG93ZXJPZmY+PGRpc2FibGVmYWN0b3J5cmVzZXQ+ZmFsc2U8L2Rpc2FibGVmYWN0b3J5cmVzZXQ+PGRpc2FibGVVc2JTdG9yYWdlPmZhbHNlPC9kaXNhYmxlVXNiU3RvcmFnZT48d2lwZVJlY2VudEFwcHM+dHJ1ZTwvd2lwZVJlY2VudEFwcHM+PGRpc2FibGVDbGlwQm9hcmQ+ZmFsc2U8L2Rpc2FibGVDbGlwQm9hcmQ+PGRpc2FibGVTVm9pY2U+dHJ1ZTwvZGlzYWJsZVNWb2ljZT48RGlzYWJsZW90YT5mYWxzZTwvRGlzYWJsZW90YT48ZGlzYWJsZVNEY2FyZD5mYWxzZTwvZGlzYWJsZVNEY2FyZD48U2V0Q3VzdG9tQm9vdEFuaW1hdGlvbj5mYWxzZTwvU2V0Q3VzdG9tQm9vdEFuaW1hdGlvbj48Q3VzdG9tYm9vdEFuaW1hdGlvbkZpbGU+PC9DdXN0b21ib290QW5pbWF0aW9uRmlsZT48Q3VzdG9tQm9vdEFuaW1hdGlvbkxvb3BGaWxlPjwvQ3VzdG9tQm9vdEFuaW1hdGlvbkxvb3BGaWxlPjxDdXN0b21Cb290QW5pbWF0aW9uU291bmRGaWxlPjwvQ3VzdG9tQm9vdEFuaW1hdGlvblNvdW5kRmlsZT48U2V0Q3VzdG9tU2h1dGRvd25BbmltYXRpb24+ZmFsc2U8L1NldEN1c3RvbVNodXRkb3duQW5pbWF0aW9uPjxDdXN0b21TaHV0ZG93bkFuaW1hdGlvbkZpbGU+PC9DdXN0b21TaHV0ZG93bkFuaW1hdGlvbkZpbGU+PEN1c3RvbVNodXREb3duQW5pbWF0aW9uU291bmRGaWxlPjwvQ3VzdG9tU2h1dERvd25BbmltYXRpb25Tb3VuZEZpbGU+PGRpc2FibGVoYXJkd2FyZWtleXM+PGhvbWU+ZmFsc2U8L2hvbWU+PGJhY2s+ZmFsc2U8L2JhY2s+PG1lbnU+ZmFsc2U8L21lbnU+PHBvd2VyPmZhbHNlPC9wb3dlcj48dm9sdW1lZG93bj5mYWxzZTwvdm9sdW1lZG93bj48dm9sdW1ldXA+ZmFsc2U8L3ZvbHVtZXVwPjxyZWNlbnRrZXk+ZmFsc2U8L3JlY2VudGtleT48L2Rpc2FibGVoYXJkd2FyZWtleXM+PGRpc2FibGVoYXJkd2FyZWtleXM+PGhvbWU+ZmFsc2U8L2hvbWU+PGJhY2s+ZmFsc2U8L2JhY2s+PG1lbnU+ZmFsc2U8L21lbnU+PHBvd2VyPmZhbHNlPC9wb3dlcj48dm9sdW1lZG93bj5mYWxzZTwvdm9sdW1lZG93bj48dm9sdW1ldXA+ZmFsc2U8L3ZvbHVtZXVwPjxyZWNlbnRhcHBzPmZhbHNlPC9yZWNlbnRhcHBzPjxzcGVjaWFsS2V5PmZhbHNlPC9zcGVjaWFsS2V5PjxzcGVjaWFsVm9sdW1lPmZhbHNlPC9zcGVjaWFsVm9sdW1lPjxjYW1lcmE+ZmFsc2U8L2NhbWVyYT48L2Rpc2FibGVoYXJkd2FyZWtleXM+PGVkZ2VTdXBwb3J0PmZhbHNlPC9lZGdlU3VwcG9ydD48ZGlzYWJsZUN1c3RvbUhhcmR3YXJlS2V5cz48L2Rpc2FibGVDdXN0b21IYXJkd2FyZUtleXM+PGRpc2FibGVTb2Z0TmF2aWdhdGlvbktleXM+PGhvbWVTb2Z0S2V5PmZhbHNlPC9ob21lU29mdEtleT48YmFja1NvZnRLZXk+ZmFsc2U8L2JhY2tTb2Z0S2V5PjxyZWNlbnRTb2Z0S2V5PmZhbHNlPC9yZWNlbnRTb2Z0S2V5PjwvZGlzYWJsZVNvZnROYXZpZ2F0aW9uS2V5cz48Y2FtZXJhbW9kZT4wPC9jYW1lcmFtb2RlPjx3aWZpbW9kZT4wPC93aWZpbW9kZT48bW9iaWxlZGF0YT4wPC9tb2JpbGVkYXRhPjxwcmVmZXJNb2JpbGVEYXRhPmZhbHNlPC9wcmVmZXJNb2JpbGVEYXRhPjxncHNtb2RlPjA8L2dwc21vZGU+PGJsdWV0b29vdGhtb2RlPjA8L2JsdWV0b29vdGhtb2RlPjxzb3VuZG1vZGU+MDwvc291bmRtb2RlPjxmbGlnaHRtb2RlPjA8L2ZsaWdodG1vZGU+PFN1cmVMb2NrSG9tZVNjcmVlbk9yaWVudGF0aW9uPi0xPC9TdXJlTG9ja0hvbWVTY3JlZW5PcmllbnRhdGlvbj48cm90YXRpb25tb2RlPjA8L3JvdGF0aW9ubW9kZT48YnJpZ2h0bmVzcz4tMjwvYnJpZ2h0bmVzcz48RW5hYmxlU29mdEtleWJvYXJkPmZhbHNlPC9FbmFibGVTb2Z0S2V5Ym9hcmQ+PEVuYWJsZURyaXZlU2FmZXR5PmZhbHNlPC9FbmFibGVEcml2ZVNhZmV0eT48RW5hYmxlRW1haWxBbGVydEZvckRyaXZlclNhZmV0eT5mYWxzZTwvRW5hYmxlRW1haWxBbGVydEZvckRyaXZlclNhZmV0eT48RHJpdmVyU2FmZXR5VGhyZXNob2xkRm9yRW1haWw+NDA8L0RyaXZlclNhZmV0eVRocmVzaG9sZEZvckVtYWlsPjxEcml2ZXJTYWZldHlUaHJlc2hvbGRVbml0Rm9yRW1haWw+TWlsZXM8L0RyaXZlclNhZmV0eVRocmVzaG9sZFVuaXRGb3JFbWFpbD48RHJpdmVyU2FmZXR5RW1haWw+PC9Ecml2ZXJTYWZldHlFbWFpbD48RHJpdmVyU2FmZXR5UHJvZmlsZVNldHRpbmdzPjwvRHJpdmVyU2FmZXR5UHJvZmlsZVNldHRpbmdzPjxEcml2ZXJTYWZldHlUaHJlc2hvbGRGb3JQcm9maWxlPjQwPC9Ecml2ZXJTYWZldHlUaHJlc2hvbGRGb3JQcm9maWxlPjxEcml2ZXJTYWZldHlUaHJlc2hvbGRVbml0Rm9yUHJvZmlsZT5NaWxlczwvRHJpdmVyU2FmZXR5VGhyZXNob2xkVW5pdEZvclByb2ZpbGU+PERyaXZlclNhZmV0eUxvY2F0aW9uVXBkYXRlSW50ZXJ2YWw+NTwvRHJpdmVyU2FmZXR5TG9jYXRpb25VcGRhdGVJbnRlcnZhbD48RW5hYmxlRHJpdmVyU2FmZXR5T3ZlcmxheT50cnVlPC9FbmFibGVEcml2ZXJTYWZldHlPdmVybGF5PjxUcmFuc3BhcmVudE92ZXJsYXk+ZmFsc2U8L1RyYW5zcGFyZW50T3ZlcmxheT48YWxsb3dCYWNrZ3JvdW5kUnVubmluZ0FwcD5mYWxzZTwvYWxsb3dCYWNrZ3JvdW5kUnVubmluZ0FwcD48RHJpdmVyU2FmZXR5VGhyZXNob2xkRm9yT3ZlcmxheT40MDwvRHJpdmVyU2FmZXR5VGhyZXNob2xkRm9yT3ZlcmxheT48RHJpdmVyU2FmZXR5VGhyZXNob2xkVW5pdEZvck92ZXJsYXk+TWlsZXM8L0RyaXZlclNhZmV0eVRocmVzaG9sZFVuaXRGb3JPdmVybGF5PjxEcml2ZXJTYWZldHlQcm9maWxlRGVsYXk+MDwvRHJpdmVyU2FmZXR5UHJvZmlsZURlbGF5PjxlbmFibGV3YXRjaGRvZz50cnVlPC9lbmFibGV3YXRjaGRvZz48b25VbmFsbG93ZWRBcHBsaWNhdGlvbkdvVG8+MDwvb25VbmFsbG93ZWRBcHBsaWNhdGlvbkdvVG8+PHVzYlN0YXRlSG9tZT5mYWxzZTwvdXNiU3RhdGVIb21lPjxzdXBwcmVzc3N5c3RlbXdpbmRvd3M+dHJ1ZTwvc3VwcHJlc3NzeXN0ZW13aW5kb3dzPjxxdWlja1NldHRpbmdUaWxlcz50cnVlPC9xdWlja1NldHRpbmdUaWxlcz48RGlzYWJsZVN0YXR1c0Jhcj50cnVlPC9EaXNhYmxlU3RhdHVzQmFyPjxkaXNhYmxlU3RhdHVzQmFyVXNpbmdBZHZhbmNlTW9kZT5mYWxzZTwvZGlzYWJsZVN0YXR1c0JhclVzaW5nQWR2YW5jZU1vZGU+PHN0YXR1c0JhckFjdGlvbkFwcD48L3N0YXR1c0JhckFjdGlvbkFwcD48c3VwcHJlc3NzeXN0ZW1kaWFsb2dzPmZhbHNlPC9zdXBwcmVzc3N5c3RlbWRpYWxvZ3M+PGJsb2NrTm90aWZpY2F0aW9ucz5mYWxzZTwvYmxvY2tOb3RpZmljYXRpb25zPjxzaG93Q2FsbEluU2NyZWVuPmZhbHNlPC9zaG93Q2FsbEluU2NyZWVuPjxibG9ja0luY29taW5nQ2FsbHM+ZmFsc2U8L2Jsb2NrSW5jb21pbmdDYWxscz48YmxvY2tPdXRnb2luZ0NhbGxzPmZhbHNlPC9ibG9ja091dGdvaW5nQ2FsbHM+PGJsb2NrSW5jb21pbmdTTVM+ZmFsc2U8L2Jsb2NrSW5jb21pbmdTTVM+PGVuYWJsZXNtc2NvbW1hbmQ+ZmFsc2U8L2VuYWJsZXNtc2NvbW1hbmQ+PGFjY2VwdHNob3J0Y3V0cz5mYWxzZTwvYWNjZXB0c2hvcnRjdXRzPjxjcmVhdGVTaG9ydGN1dHM+dHJ1ZTwvY3JlYXRlU2hvcnRjdXRzPjxyZW1vdmVzaG9ydGN1dHM+ZmFsc2U8L3JlbW92ZXNob3J0Y3V0cz48YmxvY2tTaG9ydGN1dD48L2Jsb2NrU2hvcnRjdXQ+PFNjaGVkdWxlZFJlYm9vdEVuYWJsZWQ+ZmFsc2U8L1NjaGVkdWxlZFJlYm9vdEVuYWJsZWQ+PFNjaGVkdWxlZFJlYm9vdFRpbWU+MjMwMDwvU2NoZWR1bGVkUmVib290VGltZT48U2NoZWR1bGVkUmVib290RGF5cz48RGF5cz5TVU5EQVk8L0RheXM+PERheXM+TU9OREFZPC9EYXlzPjxEYXlzPlRVRVNEQVk8L0RheXM+PERheXM+V0VETkVTREFZPC9EYXlzPjxEYXlzPlRIVVJTREFZPC9EYXlzPjxEYXlzPkZSSURBWTwvRGF5cz48RGF5cz5TQVRVUkRBWTwvRGF5cz48L1NjaGVkdWxlZFJlYm9vdERheXM+PGlkbGV0aW1lb3V0ZW5hYmxlZD5mYWxzZTwvaWRsZXRpbWVvdXRlbmFibGVkPjxpZGxldGltZW91dD4xNTwvaWRsZXRpbWVvdXQ+PGlkbGVUaW1lb3V0QXBwPjwvaWRsZVRpbWVvdXRBcHA+PHJlc2V0QnJpZ2h0bmVzc1RpbWVyT25JZGxlVGltZW91dD50cnVlPC9yZXNldEJyaWdodG5lc3NUaW1lck9uSWRsZVRpbWVvdXQ+PHByZXZlbnRzdXNwZW5kPjA8L3ByZXZlbnRzdXNwZW5kPjxLZWVwQ1BVT24+dHJ1ZTwvS2VlcENQVU9uPjxydW5TdXJlTG9ja1NlcnZpY2VJbkZvcmVncm91bmQ+ZmFsc2U8L3J1blN1cmVMb2NrU2VydmljZUluRm9yZWdyb3VuZD48UHJldmVudFN1c3BlbmRPbkFDUG93ZXI+ZmFsc2U8L1ByZXZlbnRTdXNwZW5kT25BQ1Bvd2VyPjxzY2hlZHVsZVByZXZlbnRTdXNwZW5kPmZhbHNlPC9zY2hlZHVsZVByZXZlbnRTdXNwZW5kPjxwcmV2ZW50U3VzcGVuZFN0YXJ0PjgwMDwvcHJldmVudFN1c3BlbmRTdGFydD48cHJldmVudFN1c3BlbmRFbmQ+MjIwMDwvcHJldmVudFN1c3BlbmRFbmQ+PHByZXZlbnRTdXNwZW5kQmF0dGVyeT5mYWxzZTwvcHJldmVudFN1c3BlbmRCYXR0ZXJ5PjxwcmV2ZW50U3VzcGVuZEJhdHRlcnlUaHJlc2hvbGQ+MTA8L3ByZXZlbnRTdXNwZW5kQmF0dGVyeVRocmVzaG9sZD48cHJldmVudFN1c3BlbmRBcHBsaWNhdGlvbj5mYWxzZTwvcHJldmVudFN1c3BlbmRBcHBsaWNhdGlvbj48cHJldmVudFN1c3BlbmRBcHBsaWNhdGlvblN0YXR1cz50cnVlPC9wcmV2ZW50U3VzcGVuZEFwcGxpY2F0aW9uU3RhdHVzPjxwcmV2ZW50U3VzcGVuZEFwcGxpY2F0aW9uTGlzdD48L3ByZXZlbnRTdXNwZW5kQXBwbGljYXRpb25MaXN0PjxkYXlzT2ZUaGVXZWVrPjxzdW5kYXk+dHJ1ZTwvc3VuZGF5Pjxtb25kYXk+dHJ1ZTwvbW9uZGF5Pjx0dWVzZGF5PnRydWU8L3R1ZXNkYXk+PHdlZG5lc2RheT50cnVlPC93ZWRuZXNkYXk+PHRodXJzZGF5PnRydWU8L3RodXJzZGF5PjxmcmlkYXk+dHJ1ZTwvZnJpZGF5PjxzYXR1cmRheT50cnVlPC9zYXR1cmRheT48L2RheXNPZlRoZVdlZWs+PHZvbHVtZVNldHRpbmdzPjxlbmFibGVWb2x1bWVTZXR0aW5ncz5mYWxzZTwvZW5hYmxlVm9sdW1lU2V0dGluZ3M+PHZvbHVtZUxldmVsPjEwPC92b2x1bWVMZXZlbD48bWluVm9sdW1lTGV2ZWw+MTA8L21pblZvbHVtZUxldmVsPjxtYXhWb2x1bWVMZXZlbD4xMDwvbWF4Vm9sdW1lTGV2ZWw+PHZvbHVtZUxldmVsQWxhcm0+MTA8L3ZvbHVtZUxldmVsQWxhcm0+PHZvbHVtZUxldmVsUmluZz4xMDwvdm9sdW1lTGV2ZWxSaW5nPjx2b2x1bWVMZXZlbE1lZGlhPjEwPC92b2x1bWVMZXZlbE1lZGlhPjx2b2x1bWVMZXZlbENhbGw+MTA8L3ZvbHVtZUxldmVsQ2FsbD48bWluVm9sdW1lTGV2ZWxNZWRpYT4xMDwvbWluVm9sdW1lTGV2ZWxNZWRpYT48bWF4Vm9sdW1lTGV2ZWxNZWRpYT4xMDwvbWF4Vm9sdW1lTGV2ZWxNZWRpYT48bWluVm9sdW1lTGV2ZWxBbGFybT4xMDwvbWluVm9sdW1lTGV2ZWxBbGFybT48bWF4Vm9sdW1lTGV2ZWxBbGFybT4xMDwvbWF4Vm9sdW1lTGV2ZWxBbGFybT48bWluVm9sdW1lTGV2ZWxDYWxsPjEwPC9taW5Wb2x1bWVMZXZlbENhbGw+PG1heFZvbHVtZUxldmVsQ2FsbD4xMDwvbWF4Vm9sdW1lTGV2ZWxDYWxsPjxtaW5Wb2x1bWVMZXZlbFJpbmc+MTA8L21pblZvbHVtZUxldmVsUmluZz48bWF4Vm9sdW1lTGV2ZWxSaW5nPjEwPC9tYXhWb2x1bWVMZXZlbFJpbmc+PHZvbHVtZVR5cGU+dHJ1ZTwvdm9sdW1lVHlwZT48L3ZvbHVtZVNldHRpbmdzPjxTY3JlZW5zYXZlclNldHRpbmdzPjxFbmFibGVTY3JlZW5zYXZlcj5mYWxzZTwvRW5hYmxlU2NyZWVuc2F2ZXI+PFVzZVN5c3RlbVdhbGxwYXBlckFzU2NyZWVuc2F2ZXI+ZmFsc2U8L1VzZVN5c3RlbVdhbGxwYXBlckFzU2NyZWVuc2F2ZXI+PFNjcmVlbnNhdmVySW1hZ2VQYXRoPjwvU2NyZWVuc2F2ZXJJbWFnZVBhdGg+PFNjcmVlbnNhdmVyVGltZW91dD4xNTwvU2NyZWVuc2F2ZXJUaW1lb3V0PjwvU2NyZWVuc2F2ZXJTZXR0aW5ncz48TWVtb3J5U2V0dGluZ3M+PG1lbW9yeU1hbmFnZW1lbnQ+ZmFsc2U8L21lbW9yeU1hbmFnZW1lbnQ+PHRocmVzaG9sZE1lbW9yeT4yMDwvdGhyZXNob2xkTWVtb3J5PjxoaWRlUHJvbXB0PmZhbHNlPC9oaWRlUHJvbXB0PjwvTWVtb3J5U2V0dGluZ3M+PGVuYWJsZUN1c3RvbVRpdGxlQmFyPmZhbHNlPC9lbmFibGVDdXN0b21UaXRsZUJhcj48dGl0bGVCYXJDb2xvcj4tMTY3NzcyMTY8L3RpdGxlQmFyQ29sb3I+PHRpdGxlPjQyR2VhcnMgU3VyZUxvY2s8L3RpdGxlPjxzdGF0dXNCYXJDb2xvcj4tMTY3NzcyMTY8L3N0YXR1c0JhckNvbG9yPjx0aXRsZVRleHRDb2xvcj4tMTwvdGl0bGVUZXh0Q29sb3I+PHRpdGxlVGV4dEFsaWdubWVudD4wPC90aXRsZVRleHRBbGlnbm1lbnQ+PHRpdGxlVGV4dFN0eWxlPjA8L3RpdGxlVGV4dFN0eWxlPjx0aXRsZUZvbnRGYW1pbHk+MzwvdGl0bGVGb250RmFtaWx5Pjx0aXRsZUZvbnRTaXplPjEyPC90aXRsZUZvbnRTaXplPjx0aXRsZUJhclNpemU+OTY8L3RpdGxlQmFyU2l6ZT48ZW5hYmxlR3JhZGllbnQ+ZmFsc2U8L2VuYWJsZUdyYWRpZW50PjxlbmFibGVsb2dnaW5nPnRydWU8L2VuYWJsZWxvZ2dpbmc+PGVuYWJsZXRvYXN0PnRydWU8L2VuYWJsZXRvYXN0PjxlcnJvcmxvZ2VuYWJsZWQ+dHJ1ZTwvZXJyb3Jsb2dlbmFibGVkPjxsb2dCdWZmZXJTaXplPjgxOTI8L2xvZ0J1ZmZlclNpemU+PGJvb3RkZWxheT4yMDAwMDwvYm9vdGRlbGF5Pjxsb2dmaWxlcGF0aD4vc3RvcmFnZS9lbXVsYXRlZC8wPC9sb2dmaWxlcGF0aD48Y3VzdG9tVG9hc3RNZXNzYWdlPlN1cmVMb2NrIGJsb2NrZWQgOiAlQXBwJTwvY3VzdG9tVG9hc3RNZXNzYWdlPjxkaWFnbm9zdGljUGF0aD4vc3RvcmFnZS9lbXVsYXRlZC8wPC9kaWFnbm9zdGljUGF0aD48bWVudWFjY2Vzcz48bnVtdGFwcz41PC9udW10YXBzPjx0aW1lb3V0PjA8L3RpbWVvdXQ+PC9tZW51YWNjZXNzPjxzdXJlbG9ja2FuYWx5dGljcz5mYWxzZTwvc3VyZWxvY2thbmFseXRpY3M+PG11bHRpdXNlcmFuYWx5dGljcz5mYWxzZTwvbXVsdGl1c2VyYW5hbHl0aWNzPjxhbmFseXRpY3NzY2hlZHVsZWV4cD5mYWxzZTwvYW5hbHl0aWNzc2NoZWR1bGVleHA+PGFuYWx5dGljc1NjaGVkdWxlRXhwVG9NYWlsPmZhbHNlPC9hbmFseXRpY3NTY2hlZHVsZUV4cFRvTWFpbD48cmVjZXBpZW50ZW1haWxhZGRyZXNzPjwvcmVjZXBpZW50ZW1haWxhZGRyZXNzPjxhbmFseXRpY3NTY2hlZHVsZUV4cFRvU3VyZU1ETT5mYWxzZTwvYW5hbHl0aWNzU2NoZWR1bGVFeHBUb1N1cmVNRE0+PGFuYWx5dGljc1NlY3JldEtleT48L2FuYWx5dGljc1NlY3JldEtleT48bXVsdGlVc2VyQW5hbHl0aWNzU2VjcmV0S2V5PjwvbXVsdGlVc2VyQW5hbHl0aWNzU2VjcmV0S2V5PjxhbmFseXRpY3NzY2hlZHVsZWV4cGF0PjIyMDA8L2FuYWx5dGljc3NjaGVkdWxlZXhwYXQ+PGRheXNPZlRoZVdlZWtBbmFseXRpY3NTY2hlZHVsZUV4cD48c3VuZGF5PnRydWU8L3N1bmRheT48bW9uZGF5PnRydWU8L21vbmRheT48dHVlc2RheT50cnVlPC90dWVzZGF5Pjx3ZWRuZXNkYXk+dHJ1ZTwvd2VkbmVzZGF5Pjx0aHVyc2RheT50cnVlPC90aHVyc2RheT48ZnJpZGF5PnRydWU8L2ZyaWRheT48c2F0dXJkYXk+dHJ1ZTwvc2F0dXJkYXk+PC9kYXlzT2ZUaGVXZWVrQW5hbHl0aWNzU2NoZWR1bGVFeHA+PGJhdHRlcnlNc2c+PC9iYXR0ZXJ5TXNnPjxiYXR0ZXJ5SW50ZXJ2YWw+MDwvYmF0dGVyeUludGVydmFsPjxiYXR0ZXJ5VGhyZXNob2xkPjA8L2JhdHRlcnlUaHJlc2hvbGQ+PHNob3dCYXR0ZXJ5TG93PmZhbHNlPC9zaG93QmF0dGVyeUxvdz48ZW5hYmxlUG9wQWxlcnRUb25lPmZhbHNlPC9lbmFibGVQb3BBbGVydFRvbmU+PGFuYWx5dGljc2NsZWFyZGF0YWFmdGVyZXhwPmZhbHNlPC9hbmFseXRpY3NjbGVhcmRhdGFhZnRlcmV4cD48ZW5hYmxlcG93ZXJzYXZpbmc+ZmFsc2U8L2VuYWJsZXBvd2Vyc2F2aW5nPjxkZWZhdWx0YnJpZ2h0bmVzc29uYmF0dGVyeT4xNTA8L2RlZmF1bHRicmlnaHRuZXNzb25iYXR0ZXJ5PjxkZWZhdWx0YnJpZ2h0bmVzc29uYWM+MjU1PC9kZWZhdWx0YnJpZ2h0bmVzc29uYWM+PGJyaWdodG5lc3NpbmFjdGl2aXR5dGltZT4xNTwvYnJpZ2h0bmVzc2luYWN0aXZpdHl0aW1lPjxicmlnaHRuZXNzaW5hY3Rpdml0eXZhbHVlPjA8L2JyaWdodG5lc3NpbmFjdGl2aXR5dmFsdWU+PGRpc2FibGVicmlnaHRuZXNzY2hhbmdlb250aGlyZHBhcnR5YXBwPmZhbHNlPC9kaXNhYmxlYnJpZ2h0bmVzc2NoYW5nZW9udGhpcmRwYXJ0eWFwcD48YmxvY2tBZG1pbkFjY2Vzc0FmdGVyTG9hZGluZz5mYWxzZTwvYmxvY2tBZG1pbkFjY2Vzc0FmdGVyTG9hZGluZz48c2VuZE1haWxPbkZhaWxlZEF0dGVtcHQ+ZmFsc2U8L3NlbmRNYWlsT25GYWlsZWRBdHRlbXB0PjxibG9ja0xvZ2luVGlsbFJlYm9vdD5mYWxzZTwvYmxvY2tMb2dpblRpbGxSZWJvb3Q+PGxvZ2luYmxvY2t0aW1lPjE8L2xvZ2luYmxvY2t0aW1lPjxibG9ja0xvZ2luRm9yU3BlY2lmaWVkVGltZT5mYWxzZTwvYmxvY2tMb2dpbkZvclNwZWNpZmllZFRpbWU+PGJsb2NrTG9naW5UaWxsTWVzc2FnZT5mYWxzZTwvYmxvY2tMb2dpblRpbGxNZXNzYWdlPjxsb2dpbnRocmVzaG9sZD4xPC9sb2dpbnRocmVzaG9sZD48YWRtaW5Mb2dpblNlY3VyaXR5RGFpbHlSZXBvcnQ+ZmFsc2U8L2FkbWluTG9naW5TZWN1cml0eURhaWx5UmVwb3J0Pjx3aGl0ZWxpc3ROZXdDb250YWN0cz5mYWxzZTwvd2hpdGVsaXN0TmV3Q29udGFjdHM+PGJsb2NrT3V0Z29pbmdTTVM+ZmFsc2U8L2Jsb2NrT3V0Z29pbmdTTVM+PGJsb2NrT3V0Z29pbmdNTVM+ZmFsc2U8L2Jsb2NrT3V0Z29pbmdNTVM+PGJsb2NrSW5jb21pbmdNTVM+ZmFsc2U8L2Jsb2NrSW5jb21pbmdNTVM+PC9zZXR0aW5ncz48ZXhwb3J0bGljZW5zZWtleT50cnVlPC9leHBvcnRsaWNlbnNla2V5PjxNdWx0aVVzZXJQcm9maWxlU2V0dGluZ3M+PE11bHRpVXNlclByb2ZpbGU+ZmFsc2U8L011bHRpVXNlclByb2ZpbGU+PEFjdGl2ZVByb2ZpbGU+RGVmYXVsdF9Qcm9maWxlPC9BY3RpdmVQcm9maWxlPjxQcm9maWxlU2V0dGluZ3M+PC9Qcm9maWxlU2V0dGluZ3M+PFVzZXJTZXR0aW5ncz48L1VzZXJTZXR0aW5ncz48U2VydmVyQ29uZmlndXJhdGlvbj48L1NlcnZlckNvbmZpZ3VyYXRpb24+PGxvZ2luc2NyZWVuX2xvZ28+PC9sb2dpbnNjcmVlbl9sb2dvPjxsb2dpbnNjcmVlbl90aXRsZT7CqSAyMDA5LTIwMTkgNDJHZWFycyBNb2JpbGl0eSBTeXN0ZW1zIFB2dCBMdGQuPC9sb2dpbnNjcmVlbl90aXRsZT48L011bHRpVXNlclByb2ZpbGVTZXR0aW5ncz48L29wdGlvbnM+PFdpZmlDZW50ZXJTZXR0aW5ncz48aXNMb2FkRGVmYXVsdFVybD5mYWxzZTwvaXNMb2FkRGVmYXVsdFVybD48aXNMYXVuY2hPbkNvbm5lY3RUb09wZW5OZXR3b3JrPmZhbHNlPC9pc0xhdW5jaE9uQ29ubmVjdFRvT3Blbk5ldHdvcms+PFVybFRvT3Blbk9uQ29ubmVjdGl2aXR5PjwvVXJsVG9PcGVuT25Db25uZWN0aXZpdHk+PC9XaWZpQ2VudGVyU2V0dGluZ3M+PC9zdXJlbG9jaz4iLCJQYXNzd29yZCI6IjEyMzQiLCJUeXBlIjowLCJJbnN0YWxsQXV0b21hdGljYWxseSI6ZmFsc2UsIkVuYWJsZUlmTm90RW5hYmxlZCI6dHJ1ZSwiRG93bmxvYWRVcmwiOiIifQ=="] EditJobNewResponseModel: type: object properties: message: type: string description: Status message for the operation. example: Success data: type: string description: Unique identifier for the result of the operation. example: "0b23c03d-3ce5-48d0-8086-18b22d8dc570" # Id: # type: integer # description: Identifier for the operation. # example: 7262 # Exception: # type: string # description: Exception details if any occurred during the operation. # example: null # Status: # type: integer # description: Status of the operation.
# # # # # # # # # # # # # # # # # #
ValueDescription
0Pending
1In Progress
5Completed
# example: 5 # IsCanceled: # type: boolean # description: Indicates if the operation was canceled. # example: false # IsCompleted: # type: boolean # description: Indicates if the operation is completed. # example: true # IsCompletedSuccessfully: # type: boolean # description: Indicates if the operation completed successfully. # example: true # CreationOptions: # type: integer # description: Options for the creation of the operation. # example: 0 # AsyncState: # type: string # description: State of the asynchronous operation. # example: null # IsFaulted: # type: boolean # description: Indicates if the operation faulted. # example: false status: type: boolean description: Indicates whether the operation was successful. example: true FileTransferJobResponseModel: type: object properties: message: type: string description: Status message for the file transfer job example: "Success" data: type: string description: | Job ID and sub-job ID in CSV format (JobID,SubJobID). Use these IDs for uploading files for the file transfer job. example: '62da7a4f-b17b-46e7-8571-60eec7b8561f,ec9c3482-b6dc-42a4-b2da-592693f5835f' status: type: boolean description: Indicates if the file transfer job creation was successful example: true InstallJobResponseModel: type: object properties: message: type: string description: Status message for the install job example: "Success" data: type: string description: | Job ID and sub-job ID in CSV format (JobID,SubJobID). Use these IDs for uploading the APK file for the install job. example: '62da7a4f-b17b-46e7-8571-60eec7b8561f,ec9c3482-b6dc-42a4-b2da-592693f5835f' status: type: boolean description: Indicates if the install job creation was successful example: true OtherJobResponseModel: type: object properties: message: type: string description: Status message for the other job example: "Success" data: type: string description: Job ID of the other job example: '8e7bdfe5-5c7d-4e0c-a808-1226c2259efc' status: type: boolean description: Indicates if the other job creation was successful example: true GroupCreateResponseModel: type: object properties: message: type: string description: A message indicating the success of the group creation. example: "New Group created successfully" data: type: string description: The ID of the newly created group. example: 4b7198ec-a300-4f4c-a27e-e473c4b831cc status: type: boolean description: The status of the operation. example: true EditGroupsResponseModel: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Groups edited successfully. data: type: integer description: The number of groups that were edited. example: 2 status: type: boolean description: Indicates whether the request was successful. example: true EditGroupModel: type: array items: type: object required: - GroupName - GroupID properties: GroupName: type: string description: New name of the group example: Test GroupID: type: string description: | ID of the group which you want to edit example: 4b7198ec-a300-4f4c-a27e-e473c4b831cc GroupByIDModel: allOf: - $ref: '#/components/schemas/GroupGetAllModel' - $ref: '#/components/schemas/GroupGetModel' - type: object properties: Online: type: integer description: Number of online devices in current group Offline: type: integer description: Number of offline devices in current group TotalDevicesExcludingSubGroups: type: integer description: Total number of devices excluding sub-groups GroupGetModel: allOf: - $ref: '#/components/schemas/GroupGetAllModel' - type: object properties: TotalDevices: type: integer description: Total number of devices in current group Devices: type: integer description: Number of devices in current group example: Groups: - ParentGroupID: null DefaultJobsCount: 0 DeviceNameRule: null GroupName: group1 GroupID: 5e1c484f-972f-4c06-8f84-aae0e7f7b9fe - ParentGroupID: null DefaultJobsCount: 0 DeviceNameRule: null GroupName: group2 GroupID: 5e1c484f-972f-4c06-8f84-aae0e7f7b9fe TotalDevices: 1 TotalSubgroups: 0 Devices: 1 GroupHierarchyResponseModel: type: object properties: Message: type: string description: Status message of the request example: "Group details retrieved successfully." Data: type: object properties: Groups: type: array items: type: object properties: GroupID: type: string description: ID of the group allocated by SureMDM example: 'fccf30a2-fbcf-44b0-93e7-8620f2097fb3' GroupName: type: string description: Name of the group ParentGroupID: type: string nullable: true description: ID of the parent group, null if it's a top-level group DefaultJobsCount: type: integer description: Number of default jobs associated with the group DeviceNameRule: type: string nullable: true description: The device name rule applied to devices in the group, null if none GroupType: type: integer description: The type of the group (e.g., 0 for normal group) example: 0 GroupPath: type: string description: Full path of the group in the hierarchy example: "Home/VACAY/zzzzzzzzzzzzzzz_z/Z" TotalSubgroups: type: integer description: Total number of subgroups in the current group example: 0 Status: type: boolean description: The success status of the request example: true GroupGetAllModel: type: object properties: Groups: type: array items: type: object properties: ParentGroupID: type: string description: ID of the parent group DefaultJobsCount: type: integer description: Jobs count DeviceNameRule: type: string description: null GroupName: type: string description: Name of the group GroupID: type: string description: ID of the group allocated by the SureMDM
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 TotalSubgroups: type: integer description: Total sub-groups in first level example: Groups: - ParentGroupID: null DefaultJobsCount: 0 DeviceNameRule: null GroupName: Layer1_group GroupID: ac5b891d-a352-437b-8454-8c71adcccb5f - ParentGroupID: ac5b891d-a352-437b-8454-8c71adcccb5f DefaultJobsCount: 0 DeviceNameRule: null GroupName: Layer2_group GroupID: ba680645-d4ff-4e59-9052-a85e5c12805e - ParentGroupID: ba680645-d4ff-4e59-9052-a85e5c12805e DefaultJobsCount: 0 DeviceNameRule: null GroupName: Layer3_group GroupID: 888804d8-f3ae-4080-a286-6523aaf129ba TotalSubgroups: 0 GroupDeleteResponseModel: type: object properties: message: type: string description: A message indicating the result of the group deletion. example: "Failed to delete the group." data: type: object nullable: true description: Additional data or null in case of failure. example: null status: type: boolean description: The status of the delete operation. example: false GroupDeleteSuccessResponseModel: type: object properties: message: type: string description: A message indicating the result of the group deletion. example: "Group deleted successfully." data: type: object nullable: true description: Additional data or null when no additional information is available. example: null status: type: boolean description: The status of the delete operation. example: true JobApplicationResponseModel: type: object properties: message: type: string description: A message indicating that the job was successfully applied to the group. example: "Job applied to group successfully." data: type: boolean description: | true: Job successfully applied on group.
false: Failed to apply job on group. example: true status: type: boolean description: Indicates whether the operation was successful. example: true GroupJobQueueResponseModel: type: object properties: message: type: string description: A message indicating the result of the operation. example: "Group job queue details retrieved successfully." data: type: array items: type: object properties: DeviceId: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 JobID: type: string description: ID of the job.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: ffea8e48-c1df-4548-94f4-e02cdd1e224b JobCount: type: string description: Job count example: '2' JobName: type: string description: Name of the job example: testjob Type: type: string description: Type of the job example: Notification Policy JobSize: type: string description: Size of job example: '1302' status: type: boolean description: Indicates whether the operation was successful. example: true DefaultJobResponseModel: type: object properties: message: type: string description: A message indicating the result of the operation. example: "Jobs added successfully." data: type: integer description: The return value (int), which could represent the number of jobs applied. example: 5 status: type: boolean description: Indicates whether the operation was successful. example: true GroupByIDResponseModel: type: object properties: message: type: string description: A message indicating the success of the group retrieval. example: "Group details retrieved successfully." data: type: object properties: Groups: type: array items: type: object properties: ParentGroupID: type: string nullable: true description: ID of the parent group (null if it's a top-level group) example: "ba680645-d4ff-4e59-9052-a85e5c12805e" DefaultJobsCount: type: integer description: Number of default jobs associated with the group example: 0 DeviceNameRule: type: string nullable: true description: Device naming rule, if applicable example: null GroupName: type: string description: Name of the group example: "엔지니어" GroupID: type: string description: ID of the group allocated by SureMDM example: "4806125a-f399-4b82-ac49-5ca99c8df00d" GroupPath: type: string description: Full path of the group in the hierarchy example: "Home/엔지니어" GroupType: type: integer description: The type of the group (e.g., 0 for normal group) example: 0 gCaptchaResponse: type: string nullable: true description: CAPTCHA response for group verification, if applicable example: null TotalDevices: type: integer description: Total number of devices in the current group example: 0 TotalSubgroups: type: integer description: Total number of subgroups in the current group example: 0 Devices: type: integer description: Number of devices in the current group example: 0 Online: type: integer description: Number of online devices in the current group example: 0 Offline: type: integer description: Number of offline devices in the current group example: 0 TotalDevicesExcludingSubGroups: type: integer description: Total number of devices excluding sub-groups example: 0 AndroidInGroup: type: integer description: Number of Android devices in the group example: 0 LinuxInGroup: type: integer description: Number of Linux devices in the group example: 0 WindowsInGroup: type: integer description: Number of Windows devices in the group example: 0 status: type: boolean description: The status of the operation example: true GroupGetResponseModel: type: object properties: message: type: string description: A message indicating the operation result. example: "Group details retrieved successfully." data: type: object properties: Groups: type: array items: type: object properties: ParentGroupID: type: string description: ID of the parent group, null if it's a top-level group example: null DefaultJobsCount: type: integer description: The count of default jobs associated with the group example: 0 DeviceNameRule: type: string description: A rule for device naming, could be null example: null GroupName: type: string description: Name of the group example: Testhead GroupID: type: string description: ID of the group allocated by SureMDM example: eb983bb6-c65a-40de-a1ee-b9544c231238 GroupPath: type: string description: The hierarchical path of the group within the group structure example: "" GroupType: type: integer description: Type of the group example: 0 gCaptchaResponse: type: string description: CAPTCHA response if applicable example: null TotalDevices: type: integer description: Total number of devices in the current group example: 0 TotalSubgroups: type: integer description: Total number of sub-groups within this group example: 0 Devices: type: integer description: Number of devices in the current group example: 0 example: Groups: - ParentGroupID: null DefaultJobsCount: 0 DeviceNameRule: null GroupName: Testhead GroupID: eb983bb6-c65a-40de-a1ee-b9544c231238 GroupPath: "" GroupType: 0 gCaptchaResponse: null TotalDevices: 0 TotalSubgroups: 0 Devices: 0 status: type: boolean description: Status of the operation, true for success and false for failure example: true UserDetailsApiResponse: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving user details. example: User details retrieved successfully. Data: type: array description: List of user details. items: type: object properties: UserID: type: string description: Unique identifier for the user. example: "sa" FirstName: type: string description: First name of the user. example: "raj22" LastName: type: string description: Last name of the user. nullable: true example: "Anand" Email: type: string description: Email address of the user. example: "username.abc@example.com" PhoneNumber: type: string description: Contact number of the user. nullable: true example: "+911111111111" isoCode: type: string description: ISO country code. nullable: true example: null UserType: type: integer description: | Specifies the type of user. - `0` for **Superuser** - `1` for **Subuser** example: 0 UserTimestamp: type: string format: date-time description: Timestamp of user creation. example: "04/19/2021 09:45:52" HideParentIfChildNotAllowed: type: boolean description: | This setting controls the visibility of parent menu options based on child permissions. - If **enabled**, and the user does not have access to any child settings, the parent option in the **Header Menu** will be hidden. - If **disabled**, the parent option remains visible regardless of child permissions. - **Exceptions:** This setting does not apply to **Home, Enrollment, DeepThought, Apps Plugin, or OS Updates**. example: false IsSsoUser: type: boolean description: Flag indicating if the user is an SSO user. example: false UserEnabled: type: integer description: Status of the user account. example: 1 isIntercomEnable: type: integer description: Flag indicating Intercom status. example: 0 isOnlyTagAllowed: type: integer description: Restriction flag for tag-based access. example: 0 frTemplateId: type: string description: Feature role template ID. example: "Super User" gpTemplateId: type: string description: Group permissions template ID. example: "Super User" jpTemplateId: type: string description: Job permissions template ID. example: "Super User" Devicegridcolumntemplate: type: string nullable: true description: Device grid column template. example: null isHubSSO: type: boolean description: Flag indicating if the user is Hub SSO enabled. example: false lastLogin: type: string format: date-time nullable: true description: Last login timestamp of the user. example: "2025-03-11T09:03:59" Type2FA: type: string description: Type of two-factor authentication enabled. example: "0" FolderAccessTemplateId: type: string nullable: true description: Folder access template ID. example: "Super User" Result: type: boolean description: Status of the API operation. example: true UserDetailsApiResponse2: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving user details. example: User details retrieved successfully. Data: type: object properties: total: type: integer description: Total number of users retrieved. example: 3 users: type: array description: List of user details. items: type: object properties: UserID: type: string description: Unique identifier for the user. example: "test22.stage" FirstName: type: string description: First name of the user. example: "abcdefg" LastName: type: string description: Last name of the user. example: null Email: type: string description: Email address of the user. example: "abc@test.com" PhoneNumber: type: string description: Contact number of the user. example: null isoCode: type: string description: ISO country code. example: null UserType: type: integer description: | Specifies the type of user. - `0` for **Superuser** - `1` for **Subuser** example: 1 UserTimestamp: type: string description: Timestamp of user creation. example: "03/05/2025 08:40:11" HideParentIfChildNotAllowed: type: boolean description: | This setting controls the visibility of parent menu options based on child permissions. - If **enabled**, and the user does not have access to any child settings, the parent option in the **Header Menu** will be hidden. - If **disabled**, the parent option remains visible regardless of child permissions. - **Exceptions:** This setting does not apply to **Home, Enrollment, DeepThought, Apps Plugin, or OS Updates**. example: false IsSsoUser: type: boolean description: Flag indicating if the user is an SSO user. example: false UserEnabled: type: integer description: Status of the user account. example: 1 isIntercomEnable: type: integer description: Flag indicating Intercom status. example: 0 isOnlyTagAllowed: type: integer description: Restriction flag for tag-based access. example: 0 frTemplateId: type: string description: Front-end role template ID. example: "All Roles" gpTemplateId: type: string description: Group permissions template ID. example: "BB@116" jpTemplateId: type: string description: Job permissions template ID. example: "ss" Devicegridcolumntemplate: type: string description: Device grid column template. example: "!R2" isHubSSO: type: boolean description: Flag indicating if the user is Hub SSO enabled. example: false lastLogin: type: string description: Last login timestamp of the user. example: "2025-03-10T14:14:22" Type2FA: type: string description: Type of two-factor authentication enabled. example: "0" IsTemplate: type: boolean description: Flag indicating if the user is a template. example: false FolderAccessTemplateId: type: string description: Folder access template ID. example: "!!!" Status: type: boolean description: Status of the API operation. example: true example: message: User details retrieved successfully. data: total: 4 users: - UserID: "test22.stage" FirstName: "abcdefg" LastName: null Email: "abc@test.com" PhoneNumber: null isoCode: null UserType: 1 UserTimestamp: "03/05/2025 08:40:11" HideParentIfChildNotAllowed: false IsSsoUser: false UserEnabled: 1 isIntercomEnable: 0 isOnlyTagAllowed: 0 frTemplateId: "All Roles" gpTemplateId: "BB@116" jpTemplateId: "ss" Devicegridcolumntemplate: "!R2" isHubSSO: false lastLogin: "2025-03-10T14:14:22" Type2FA: "0" IsTemplate: false FolderAccessTemplateId: "!!!" - UserID: "jdoe.stage" FirstName: "John" LastName: "Doe" Email: "john.doe@example.com" PhoneNumber: "+1234567890" isoCode: "US" UserType: 2 UserTimestamp: "03/05/2025 09:00:00" HideParentIfChildNotAllowed: true IsSsoUser: true UserEnabled: 1 isIntercomEnable: 1 isOnlyTagAllowed: 1 frTemplateId: "Admin Role" gpTemplateId: "XY@200" jpTemplateId: "yy" Devicegridcolumntemplate: "!X3" isHubSSO: true lastLogin: "2025-03-10T14:20:45" Type2FA: "1" IsTemplate: false FolderAccessTemplateId: "##1" - UserID: "asmith.stage" FirstName: "Alice" LastName: "Smith" Email: "alice.smith@example.com" PhoneNumber: "+9876543210" isoCode: "UK" UserType: 3 UserTimestamp: "03/05/2025 10:15:30" HideParentIfChildNotAllowed: false IsSsoUser: false UserEnabled: 0 isIntercomEnable: 0 isOnlyTagAllowed: 0 frTemplateId: "User Role" gpTemplateId: "CD@300" jpTemplateId: "zz" Devicegridcolumntemplate: "!Z5" isHubSSO: false lastLogin: "2025-03-10T15:00:10" Type2FA: "2" IsTemplate: false FolderAccessTemplateId: "&&2" status: true UserCreateResponseModel: type: object properties: Message: type: string description: Response message indicating the success or failure of the operation example: User created successfully Data: type: object nullable: true description: Additional data related to user creation example: null Result: type: boolean description: Indicates whether the user creation was successful or not DeleteUserRequestModel: type: object required: - UserIds properties: UserIds: type: string description: | A JSON string containing an array of user IDs to be deleted. The correct format is a string representation of a JSON array. Example: `{"UserIds": "[\"122test\",\"123test\"]"}` Ensure the array is properly formatted within a string. example: "[\"122test\",\"123test\"]" ChangeUserPasswordRequestModel: type: object required: - Password - UserData properties: Password: type: string description: The new password for the user (Base64 encoded). example: "AAAAAAAAAAAAA==" UserData: type: object description: User details required for password change. properties: UserID: type: string description: Unique identifier of the user. example: "test222" ChangeUserPasswordResponseModel: type: object properties: Message: type: string description: Success or failure message. example: "Password changed successfully." Data: type: string example: null description: Additional response data, if any. Result: type: boolean description: Indicates whether the password change was successful. example: true GetAllRoleResponseModelNew: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving user role templates. example: "User role templates retrieved successfully." Data: type: array description: List of user role templates. items: type: object properties: TemplateName: type: string description: Name of the role template. example: "admin_role" TemplateId: type: string description: Unique identifier for the role template. example: "2E55613E-8251-4B65-9199-1A0F43712ABF" TemplateDescription: type: string description: Brief description of the role template. example: "Admin permissions enabled" example: - TemplateName: "tyui" TemplateId: "019F42E5-8AA7-463E-B759-E82ECD2BD656" TemplateDescription: "" - TemplateName: "job_role" TemplateId: "1D55613E-8251-4B65-9199-1A0F43712FEF" TemplateDescription: "job permission added" - TemplateName: "admin_role" TemplateId: "2E55613E-8251-4B65-9199-1A0F43712ABF" TemplateDescription: "Admin permissions enabled" Result: type: boolean description: Indicates whether the API call was successful. example: true GetAllRoleResponseModel: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving user role templates. example: "User role templates retrieved successfully." Data: type: array description: List of user role templates. items: type: object properties: TemplateName: type: string description: Name of the role template. example: "admin_role" TemplateData: type: object description: Additional data related to the template, if any. example: null TemplateId: type: string description: Unique identifier for the role template. example: "2E55613E-8251-4B65-9199-1A0F43712ABF" TemplateDescription: type: string description: Brief description of the role template. example: "Admin permissions enabled" isAllowedNewGroupOrJobFolder: type: integer description: Indicates if creating a new group or job folder is allowed (1 for yes, 0 for no). example: 1 isForClone: type: boolean description: Specifies whether the template is intended for cloning. example: true folderType: type: integer description: Type of folder associated with the template (0 for default, 1 for special folders). example: 1 ReportTemplateData: type: object description: Data related to report templates, if applicable. example: null JobFolderTemplateData: type: object description: Data related to job folder templates, if applicable. example: null DeviceGroupTemplateData: type: object description: Data related to device group templates, if applicable. example: null RoleTemplateData: type: object description: Data related to role templates, if applicable. example: null RoleTemplateId: type: string description: Identifier for the associated role template. example: "1" FolderTemplateId: type: string description: Identifier for the associated folder template. example: "1" GroupSetTemplateId: type: string description: Identifier for the associated group set template. example: "1" isOnlyTagAllowed: type: integer description: Indicates if only tags are allowed for the template (1 for yes, 0 for no). example: 1 loginValidFrom: type: string format: date-time description: Start date and time when login is valid. example: "2025-03-10T08:00:00" loginValidTo: type: string format: date-time description: End date and time when login is valid. example: "2025-03-10T18:00:00" Notify42GearsEmailIds: type: array description: List of email IDs to be notified. items: type: string example: ["admin@example.com"] example: - TemplateName: "tyui" TemplateData: null TemplateId: "019F42E5-8AA7-463E-B759-E82ECD2BD656" TemplateDescription: "" isAllowedNewGroupOrJobFolder: 0 isForClone: false folderType: 0 ReportTemplateData: null JobFolderTemplateData: null DeviceGroupTemplateData: null RoleTemplateData: null RoleTemplateId: "0" FolderTemplateId: "0" GroupSetTemplateId: "0" isOnlyTagAllowed: 0 loginValidFrom: null loginValidTo: null Notify42GearsEmailIds: null - TemplateName: "job_role" TemplateData: null TemplateId: "1D55613E-8251-4B65-9199-1A0F43712FEF" TemplateDescription: "job permission added" isAllowedNewGroupOrJobFolder: 0 isForClone: false folderType: 0 ReportTemplateData: null JobFolderTemplateData: null DeviceGroupTemplateData: null RoleTemplateData: null RoleTemplateId: "0" FolderTemplateId: "0" GroupSetTemplateId: "0" isOnlyTagAllowed: 0 loginValidFrom: null loginValidTo: null Notify42GearsEmailIds: null - TemplateName: "admin_role" TemplateData: null TemplateId: "2E55613E-8251-4B65-9199-1A0F43712ABF" TemplateDescription: "Admin permissions enabled" isAllowedNewGroupOrJobFolder: 1 isForClone: true folderType: 1 ReportTemplateData: null JobFolderTemplateData: null DeviceGroupTemplateData: null RoleTemplateData: null RoleTemplateId: "1" FolderTemplateId: "1" GroupSetTemplateId: "1" isOnlyTagAllowed: 1 loginValidFrom: "2025-03-10T08:00:00" loginValidTo: "2025-03-10T18:00:00" Notify42GearsEmailIds: ["admin@example.com"] Result: type: boolean description: Indicates whether the API call was successful. example: true FolderTemplateResponse: type: object properties: Message: type: string description: "Response message indicating the status of the API call." example: "Folder templates retrieved successfully" Data: type: array description: "List of folder templates." items: $ref: '#/components/schemas/FolderTemplate' Result: type: boolean description: "Indicates whether the API request was successful." example: true FolderTemplate: type: object properties: TemplateId: type: string format: uuid description: "Unique identifier of the folder template." example: "63229440-0A34-4FE8-BA82-D786993C43CB" TemplateName: type: string description: "Name of the folder template." example: "Super User" TemplateDescription: type: string description: "Brief description of the folder template." example: "Permit All Folder" FolderPath: type: string description: "Path of the folder associated with the template. If empty, no specific folder is set." example: "/storage/emulated/0/" DeviceGridColumnSetResponse: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving the device grid column set. example: "Device grid column set retrieved successfully" Data: type: array description: List of device grid column set templates. items: $ref: '#/components/schemas/DeviceGridColumnSet' Result: type: boolean description: Indicates whether the API call was successful. example: true DeviceGridColumnSet: type: object properties: TemplateName: type: string description: The name assigned to the device grid column set. example: "bus" TemplateId: type: string format: uuid description: Unique identifier for the device grid column set. example: "8B0DAAEB-82DD-4518-BFEB-F436423F6435" TemplateDescription: type: string nullable: true description: A brief description of the device grid column set. Can be empty or null if no description is provided. example: "descripton of template" DataTemplate: type: string description: A comma-separated list of numerical identifiers representing the columns in the grid configuration. example: "[11,42,57,3,82,83,84,33,40,35,10,71,72,22,49,21,67,61,63,55,7,9,54,30,47,26,60,59,39,38,601,31,23,43,58,66,16,48,73,62,4,20,5,6,65,44,606,77,76,27,8,29,37,12,17,50,1,28,69,19,41,18,32,2,25,75,14,36,13,15,24,45,51,53,34,52,46,56,74,68,70,602,603,605]" FolderSetResponse: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving the folder set. example: "FolderSet retrieved successfully" Data: type: array description: List of folder set templates. items: type: object properties: TemplateName: type: string description: Name of the folder set template. example: "Super User" TemplateId: type: string description: Unique identifier for the folder set template. example: "31C118E8-1030-476D-8262-6622DCF568D4" TemplateDescription: type: string nullable: true description: Brief description of the folder set template. example: null Result: type: boolean description: Indicates whether the API call was successful. example: true FolderSetResponse1: type: object properties: Message: type: string example: "FolderSet retrieved successfully" Data: type: array items: $ref: '#/components/schemas/FolderSet' Result: type: boolean example: true FolderSet: type: object properties: TemplateName: type: string example: "Super User" TemplateData: type: string nullable: true example: null TemplateId: type: string format: uuid example: "31C118E8-1030-476D-8262-6622DCF568D4" TemplateDescription: type: string nullable: true example: null isAllowedNewGroupOrJobFolder: type: integer example: 0 isForClone: type: boolean example: false folderType: type: integer example: 0 ReportTemplateData: type: string nullable: true example: null JobFolderTemplateData: type: string nullable: true example: null DeviceGroupTemplateData: type: string nullable: true example: null RoleTemplateData: type: string nullable: true example: null RoleTemplateId: type: string example: "0" FolderTemplateId: type: string example: "0" GroupSetTemplateId: type: string example: "0" isOnlyTagAllowed: type: integer example: 0 loginValidFrom: type: string format: date-time nullable: true example: null loginValidTo: type: string format: date-time nullable: true example: null Notify42GearsEmailIds: type: string nullable: true example: null UserSearchResponse: type: object description: Response model for retrieving user details and permissions. properties: Message: type: string description: Status message of the API response. Data: type: object description: Contains user-related data and permissions. properties: UserData: type: object description: Detailed information about the user. properties: LicenseAgreementAccepted: type: boolean description: Indicates if the user has accepted the license agreement. UseDeviceName: type: boolean description: Whether the device name is used. UseModelName: type: boolean description: Whether the model name is used. UseSKUModel: type: boolean description: Whether the SKU model is used. UsePlatformName: type: boolean description: Whether the platform name is used. UseStatus: type: boolean description: Whether the status of the device is used. UseAMTStatus: type: boolean description: Whether the AMT status is used. UseLastConn: type: boolean description: Whether the last connection time is used. UseNixVersion: type: boolean description: Whether the Nix version is used. UseBattery: type: boolean description: Whether the battery details are used. UseBatterySerialNumber: type: boolean description: Whether the battery serial number is used. UseBatteryCycleTime: type: boolean description: Whether the battery cycle time is used. UseBatteryHealth: type: boolean description: Whether the battery health information is used. UseSignal: type: boolean description: Whether signal strength is used. UseOperatorName: type: boolean description: Whether the operator name is used. UseIPAddress: type: boolean description: Whether the IP address is used. UseDeviceTime: type: boolean description: Whether the device time is used. UseLastLocTime: type: boolean description: Whether the last location time is used. UseDeviceRoam: type: boolean description: Whether the device roaming status is used. UseAppliedPassword: type: boolean description: Whether the applied password is used. UseCurentPassword: type: boolean description: Whether the current password is used. UseAppliedWifi: type: boolean description: Whether the applied WiFi settings are used. UseCurrentWifi: type: boolean description: Whether the current WiFi settings are used. UseSerialNumber: type: boolean description: Whether the device serial number is used. UsePhoneNumber: type: boolean description: Whether the phone number is used. UserCustomColumnIds: type: array items: type: string description: List of custom column IDs assigned to the user. UserID: type: string description: Unique identifier of the user. FirstName: type: string description: First name of the user. LastName: type: string description: Last name of the user. Email: type: string description: Email address of the user. PhoneNumber: type: string description: Phone number of the user. UserType: type: integer description: | Specifies the type of user. - `0` for **Superuser** - `1` for **Subuser** lastLogin: type: string format: date-time description: Last login timestamp of the user. PermissionGroups: type: array description: List of permission groups assigned to the user. items: type: object Groups: type: array description: List of groups the user belongs to. items: type: object JobFolders: type: array description: List of job folders associated with the user. items: type: object Result: type: boolean description: Indicates whether the operation was successful. SearchRoleResponseModel: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving role data. example: "Role data retrieved successfully." Data: type: object properties: TemplateId: type: string description: Unique identifier for the role template. example: "1D55613E-8251-4B65-9199-1A0F43712FEF" TemplateData: type: array description: List of permission IDs associated with the role template. items: type: string example: ["699", "403", "404", "405", "406"] TemplateDescription: type: string description: Brief description of the role template. example: "job permission added" Result: type: boolean description: Indicates whether the API call was successful. example: true SearchRoleResponse: type: object properties: Message: type: string example: "Role data retrieved successfully." Data: $ref: '#/components/schemas/RoleData' Result: type: boolean example: true RoleData: type: object properties: TemplateName: type: string example: "noti_perm_role" TemplateData: type: array items: type: string example: ["1111"] TemplateId: type: string example: "548DEB18-899E-43DE-BF9E-28D06F9122A2" TemplateDescription: type: string example: "notification permission" isAllowedNewGroupOrJobFolder: type: integer example: 0 isForClone: type: boolean example: false folderType: type: integer example: 0 ReportTemplateData: type: string nullable: true JobFolderTemplateData: type: string nullable: true DeviceGroupTemplateData: type: string nullable: true RoleTemplateData: type: string nullable: true RoleTemplateId: type: string example: "0" FolderTemplateId: type: string example: "0" GroupSetTemplateId: type: string example: "0" isOnlyTagAllowed: type: integer example: 0 loginValidFrom: type: string nullable: true loginValidTo: type: string nullable: true Notify42GearsEmailIds: type: string nullable: true CreateUserRoleRequest: type: object properties: TemplateName: type: string description: Name of the user role template. TemplateDescription: type: string description: Description of the role. TemplateData: type: array items: type: integer description: | List of permission IDs assigned to the role. You can pass multiple permission IDs in the array. Refer to the table below for available permission IDs and their descriptions
click to Expand
Permission ID Description
1 New Group
2 Rename Group
3 Delete Group
367 Apply Jobs/Profile on Group
46 Assign Group
58 Allow Home Group
223 Move Group
296 Edit Custom Property
379 View Masked Custom Property
380 Edit Masked Custom Property
490 Group Properties View
4 Add Default Group Job
433 Delete Default Group Job
385 Edit Device Naming Rule
386 Edit Device Maintenance Window
434 New Tag
421 Rename Tag
423 Delete Tag
425 Apply Jobs/Profiles on Tag
426 Add Default Tag Job
427 Delete Default Tag Job
428 Assign Tag
168 Firmware Update and History
420 New Filter
422 Rename Filter
424 Delete Filter
5 Move to Recycle Bin
6 Apply Job
115 Apply Profile
516 Job History
301 Retry Pending/Failed/Scheduled Jobs
7 Remove Queued Job
9 Remote Device
10 Locate Device/Location Tracking
11 Send Message to Device
12 Reboot Device
344 Power Off Device
13 Lock Device
14 Wipe Device
44 Edit Device Name
45 Edit Device Notes
304 Logs
303 Export Devices
48 Call log
49 SureLock Settings
50 SureFox Settings
54 SureVideo Settings
57 SMS Logs
59 Edit Telecom Management
91 Remote Buzz
256 Edit Bluetooth Name
258 Edit Android Enterprise
259 Edit Geo Fence
260 Edit Time Fence
261 Edit Network Fence
262 Remove Installed Profile
263 Reset Password
264 System Scan
526 OS Update
268 Edit Custom Column
333 Edit Custom property
328 Edit Things Info
343 Apps
349 Export Logs
350 Download Logs
351 Request Report
381 Edit Admin Access
418 Lost Mode
522 View and Edit SureMDM LAPS
436 BitLocker Dynamic Rotate Job Permission
270 Unapproved View
21 Approve Device
390 Export Unapproved
271 Preapproved View
272 Allow Enrollment
273 Block Enrollment
20 Automatically Approve Devices
19 Import Preapproved Devices
274 Invite User
391 Export Pre-Approved
8 Blocklist Device
275 Blocklisted View
22 Allowlist Device
392 Export Blocklisted
276 Recycle Bin View
277 Force Delete
289 Restore
393 Export Recycle-bin
368 Unlicensed View
369 Unlicesed Delete
370 Assign License
394 Export Unlicensed
126 Allow Remote Screen
339 Allow Remote View
340 Allow Remote Touch
306 Allow Remote Screen Settings
307 Allow Remote Screen Play/Pause
308 Allow Remote Screen Swipe to Unlock
309 Allow Remote Screen Volume
310 Allow Remote Screen Search
311 Allow Remote Screen Screenshot
312 Allow Remote Screen Ctrl+alt+delete
313 Allow Remote Screen Shortcut Management
314 Allow Remote Screen Change View
315 Allow Remote Screen Resolution Change
127 Allow Remote File Manager
316 Allow remote New Folder
317 Allow remote Delete
318 Allow remote Download
319 Allow remote Upload
128 Allow Remote Clipboard
320 Allow Remote Send to Device Clipboard
321 Allow Remote Read from Device Clipboard
322 Allow Remote Clear from Device Clipboard
129 Allow Remote Task Manager
323 Allow Remote Kill Process Task Manager
324 Allow Remote Kill AllTask Manager
382 View Overridden Recovery PIN
419 View Profile Removal Password
401 Allow Remote Terminal
15 Lock Application
16 Uninstall Application
17 Application Run at Startup
53 Clear Application Data
62 Hide/Unhide Application
18 Monitor Application
278 Jobs View
29 New Job
30 Delete Job
31 Modify Job
178 Move Jobs To Folder
345 Job Revision History
346 Revert Job
347 Compare Job
348 Save as Job
384 Download apk/files
32 Generate Configuration Barcodes
279 Reports View
33 System Log Report
34 Device Health Report
35 Device Connected Report
36 Job Deployed Report
37 Asset Tracking Report
47 Call Log Tracking Report
51 App Version Tracking Report
55 Device History Report
56 Data Usage Report
99 Installed Job Report
116 Compliance Job Report
121 Allow Custom Report
130 Allow Data Usage Report
117 Device Activity Report
288 Device Encryption Report
334 Group Details
1112 User Accounts Report
450 Access All User Reports
431 Windows 11 Readiness Report
402 Device Event Analytics Report
122 View Custom Report
360 Add Custom Report
123 Modify Custom Report
124 Delete Custom Report
41 Add User, Role & Settings Control.
42 Edit User, Role & Settings Control.
43 Delete User, Role & Settings Control.
100 Change Password
101 Enable or Disable User
109 Export
280 Dashboard View
63 OS Platforms
64 Available Battery
65 Available RAM
66 Available Storage
67 Last Connected
68 Online/Offline
69 Device SIM Status
70 Roaming Status
71 Unread Mail
72 Unapproved Devices
73 Jobs
146 Over All Compliance
147 OS Version Compliance
148 Rooted Compliance
358 Play For Work
224 Security Patch Level
225 Things Compliance
149 Connectivity Compliance
150 Sim Change Compliance
151 Password Policy Compliance
152 Battery Compliance
524 Cell Signal Strength Compliance
266 Wi-Fi Signal Strength
153 Application Policy
154 SD Card Change Compliance
167 Efota Registration Status
173 Data Analytics
174 Mobile Network Compliance
175 Windows Health Attestation
265 Active Kiosk Application
205 Windows Copy Genuine Validation
176 Intel® AMT Configuration Status
338 OS Build Number
177 Device Storage Compliance
525 Device Temperature Compliance
336 Device Encryption
195 Copy Dashboard
196 Edit Dashboard
197 Delete Dashboard
198 Add/Remove Favorite Dashboard
200 Add Chart
201 Create Dashboard
206 Mobile Threat Defence
494 Firewall Compliance Policy
267 Location Access
335 Hardware Change
226 Windows Update
352 OEM Configuration Status
12001 App Version
12002 OS Build Version
337 Device Uptime
359 Custom Compliance
194 Rename Dashboard
281 Inbox View
28 Reply
185 Mark As Read
186 Mark As Unread
27 Delete
187 Cleanup Inbox
287 File Store View
74 New Folder
75 Upload Files
76 Delete File/Folder
305 Enable FileStore for all devices
283 Profiles View
77 Add Android Profile
78 Modify Android Profile
79 Delete Android Profile
80 Set Default Android Profile
169 Move to Folder Android Profile
82 Add iOS Profile
83 Modify iOS Profile
84 Delete iOS Profile
85 Set Default iOS Profile
170 Move to Folder iOS Profile
87 Add Windows Profile
88 Modify Windows Profile
89 Delete Windows Profile
90 Set Default Windows Profile
171 Move to Folder Windows Profile
102 Add macOS Profile
103 Modify macOS Profile
104 Delete macOS Profile
105 Set Default macOS Profile
172 Move to Folder macOS Profile
188 Add Linux Profile
189 Modify Linux Profile
190 Delete Linux Profile
191 Set Default Linux Profile
192 Move to Folder Linux Profile
157 Add Office365 Profile
158 Modify Office365 Profile
159 Delete Office365 Profile
160 Assign to groups Office365 Profile
163 Select unapproved Android Enterprise applications
354 Profile Revision History
357 Save as Profile
356 Compare Profile
355 Revert Profile
361 Add ChromeOS Profile
362 Edit ChromeOS Profile
363 Delete ChromeOS Profile
403 Add tvOS Profile
404 Modify tvOS Profile
405 Delete tvOS Profile
406 Set Default tvOS Profile
407 Move to Folder tvOS Profile
284 AppStore View
92 Add Android
93 Edit Android
94 Remove Android
95 Add iOS
96 Edit iOS
97 Remove iOS
118 Add Windows
119 Edit Windows
120 Remove Windows
106 Add macOS
107 Edit macOS
108 Remove macOS
325 Add Linux
326 Edit Linux
327 Remove Linux
364 Add ChromeOS
365 Edit ChromeOS
366 Remove ChromeOS
383 Download Android
408 Edit tvOS
409 Remove tvOS
38 Activity Log
39 Security
699 Notification Permission
113 Modify History
114 Export History
285 Enrollment View
183 Create QR Code
179 Set as Default QR Code
180 Modify QR Code
181 Delete QR Code
182 View QR Code
527 Zebra Printer
528 Citizen Printer
529 SATO Printer
221 Create Custom Column
222 Delete Custom Column
257 Modify Custom Column
371 Account ID
372 Subscription
373 Device License Used
374 Things License Used
375 VR License Used
377 MTD License Used
378 SureAccess License Used
376 Storage Used
415 OS Update View
411 Explore Jobs
412 Create New Job
413 Delete Job
414 Modify Job
416 Approve/Install Update
417 Uninstall Update
286 MTD View
204 MTD Scan
438 CVE View
439 CVE Deploy
440 CVE Export
520 Network Discovery View
521 Export Network Discovery
131 Branding Info
132 Device Enrollment Rules
517 Identity & Access Management
330 Device Enrollment Restrictions
435 Customize SureMDM Agent Permissions
133 Acceptable Use Policy
134 Apple Platform Management
135 Group Assignment Rules
136 SAML Single Sign-On
137 Alert Template
138 Customize Toolbar
139 Customize SureMDM Agent/SureLock
140 Certificate Management
141 Data Analytics
142 Miscellaneous Settings
353 Android Management
143 Mobile Email Management
144 Account Management
203 Enterprise Integrations
155 Chrome OS Device Management
156 Office 365 Settings
161 Webhooks Settings
342 ServiceNow Settings
162 Verified Emails
164 Plugins settings
166 Firmware Updates
399 Mobile Threat Defense
269 Things Management
331 Device Properties
429 Linux Management
441 Windows Management
437 SureAccess
145 License Management
341 Relay Server
471 Add
472 Delete
473 Move Up
474 Move Down
474 Move Down
442 Move Single Device To Group
443 Move Multiple Device To Group
example : [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,113,114,115,116,117,118,119,120,121,122,123,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,185,186,187,188,189,190,191,192,194,195,196,197,198,200,201,203,204,205,206,221,222,223,224,225,226,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,296,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,330,331,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,390,391,392,393,394,399,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,431,433,434,435,436,437,438,439,440,441,450,490,494,516,517,520,521,522,524,525,526,527,528,529,699,1112,12001,12002] required: - TemplateName - TemplateData CreateUserRoleResponse1: type: object properties: Message: type: string description: "Response message indicating the status of the operation." example: "User role permissions saved successfully." Data: type: string description: "Unique identifier for the created user role." example: "AA9B7E56-768D-4694-B7CF-F1A3178101AB" Result: type: boolean description: "Indicates whether the operation was successful." example: true CreateUserRoleResponse: type: object properties: Message: type: string description: "Response message indicating the status of the operation." example: "User role permissions saved successfully." Data: type: array description: "List of role permission templates with their details." items: type: object properties: TemplateName: type: string description: "Name of the role permission template." example: "tyui" TemplateData: type: string nullable: true description: "Data related to the template, if any." example: null TemplateId: type: string format: uuid description: "Unique identifier for the template." example: "019F42E5-8AA7-463E-B759-E82ECD2BD656" TemplateDescription: type: string description: "Description of the template." example: "" isAllowedNewGroupOrJobFolder: type: integer description: "Indicates whether a new group or job folder is allowed (0 for no, 1 for yes)." example: 0 isForClone: type: boolean description: "Indicates if the template is used for cloning." example: false folderType: type: integer description: "Type of folder associated with the template." example: 0 ReportTemplateData: type: string nullable: true description: "Report template data, if applicable." example: null JobFolderTemplateData: type: string nullable: true description: "Job folder template data, if applicable." example: null DeviceGroupTemplateData: type: string nullable: true description: "Device group template data, if applicable." example: null RoleTemplateData: type: string nullable: true description: "Role template data, if applicable." example: null RoleTemplateId: type: string description: "ID of the associated role template." example: "0" FolderTemplateId: type: string description: "ID of the associated folder template." example: "0" GroupSetTemplateId: type: string description: "ID of the associated group set template." example: "0" isOnlyTagAllowed: type: integer description: "Indicates whether only tagging is allowed (0 for no, 1 for yes)." example: 0 loginValidFrom: type: string format: date-time nullable: true description: "Start date and time from which the login is valid." example: null loginValidTo: type: string format: date-time nullable: true description: "End date and time until which the login is valid." example: null Notify42GearsEmailIds: type: string nullable: true description: "Email IDs to notify within 42Gears." example: null Result: type: boolean description: "Indicates whether the operation was successful." example: true RoleTemplate: type: object properties: TemplateName: type: string description: Name of the role template. TemplateData: type: array items: type: integer nullable: true description: List of permissions assigned. TemplateId: type: string description: Unique identifier for the template. TemplateDescription: type: string description: Description of the role template. isAllowedNewGroupOrJobFolder: type: integer description: Indicates if new group/job folders are allowed (0 or 1). isForClone: type: boolean description: Indicates if the role template is for cloning. folderType: type: integer description: Specifies the type of folder. ReportTemplateData: type: array items: type: integer nullable: true description: Report template data. JobFolderTemplateData: type: array items: type: integer nullable: true description: Job folder template data. DeviceGroupTemplateData: type: array items: type: integer nullable: true description: Device group template data. RoleTemplateData: type: array items: type: integer nullable: true description: Role template data. RoleTemplateId: type: string description: Role template ID. FolderTemplateId: type: string description: Folder template ID. GroupSetTemplateId: type: string description: Group set template ID. isOnlyTagAllowed: type: integer description: Specifies if only tags are allowed. loginValidFrom: type: string format: date-time nullable: true description: Specifies the start date-time for login validity. loginValidTo: type: string format: date-time nullable: true description: Specifies the end date-time for login validity. Notify42GearsEmailIds: type: array items: type: string nullable: true description: List of email IDs for notifications. DeleteUserRoleRequest: type: array items: type: string format: uuid description: List of Role IDs to delete. example : [ "TemplateId" ] DeleteUserRoleResponse: type: object description: "Response object for deleting a user role." properties: Message: type: string description: "Response message indicating the status of the user role deletion." example: "User roles deleted successfully." Data: type: string nullable: true description: | This field is reserved for additional data, but it is typically null in this response. example: null Result: type: boolean description: "Indicates whether the API call was successful." example: true ModifyRoleRequest: type: object required: - TemplateName - TemplateData - TemplateId properties: TemplateName: type: string description: | Name of the template being modified. - This should be a unique and meaningful name to identify the role template. example: "Admin Role Template" required: true TemplateDescription: type: string description: | Description of the template. - Provide details about the purpose of this role template. example: "This template grants administrative privileges to users." TemplateData: type: array required: true items: type: integer description: | List of permissions or role IDs associated with the template. - Each integer represents a specific permission assigned to the role. - For the list of available permission IDs, refer to the **Permissions Table** in the **Create a New User Role API (POST)**. - Use the appropriate permission ID from the table based on the required functionality. - Ensure that only valid permission IDs are assigned to avoid unauthorized actions. example: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,113,114,115,116,117,118,119,120,121,122,123,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,185,186,187,188,189,190,191,192,194,195,196,197,198,200,201,203,204,205,206,221,222,223,224,225,226,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,296,301,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,330,331,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,390,391,392,393,394,399,401,402,403,404,405,406,407,408,409,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,431,433,434,435,436,437,438,439,440,441,450,490,494,516,517,520,521,522,524,525,526,527,528,529,699,1112,12001,12002] TemplateId: type: string format: uuid description: | Unique identifier of the template. - This is required when modifying an existing template. - Use the link: [getAllRoleTemplates](#operation/getAllFeatureTemplatesID) to fetch the list of role templates and get the `TemplateId`. example: "B70345EA-E1D2-4CFE-A5E1-CF64CF7F2283" ModifyRoleResponse: type: object description: "Response object for modifying a user role." properties: Message: type: string description: "Response message indicating the status of the role modification." example: "User role permissions updated successfully." Data: type: boolean description: "Indicates whether the role modification was successful." example: true Result: type: boolean description: "Boolean flag indicating the overall success of the API call." example: true RoleTemplateData: type: object properties: TemplateName: type: string TemplateData: type: array items: type: string nullable: true TemplateId: type: string TemplateDescription: type: string isAllowedNewGroupOrJobFolder: type: integer isForClone: type: boolean folderType: type: integer ReportTemplateData: type: string nullable: true JobFolderTemplateData: type: string nullable: true DeviceGroupTemplateData: type: string nullable: true RoleTemplateData: type: string nullable: true RoleTemplateId: type: string FolderTemplateId: type: string GroupSetTemplateId: type: string isOnlyTagAllowed: type: integer loginValidFrom: type: string nullable: true loginValidTo: type: string nullable: true Notify42GearsEmailIds: type: string nullable: true DeleteUserResponseModel: type: object properties: Message: type: string description: Success or failure message. example: "User deleted successfully." Data: type: object nullable: true description: Additional response data, if any. example: null Result: type: boolean description: Indicates whether the deletion was successful. example: true UserUpdateResponseModel: type: object properties: Message: type: string description: Success or failure message. example: "User updated successfully." Data: type: boolean nullable: true description: Additional response data, if any. example: true Result: type: boolean description: Indicates whether the update was successful. example: true DeviceGroupSetResponseModel: type: object properties: Message: type: string description: Message indicating the success or failure of retrieving the device group set. example: "DeviceGroupSet retrieved successfully" Data: type: array description: List of device group set templates. items: type: object properties: TemplateId: type: string description: Unique identifier for the device group set template. example: "89D9F857-F826-4969-85DC-5EB58A4FCAF1" TemplateName: type: string description: Name assigned to the device group set template. example: "DeviceGroupSet - 1699457834501" TemplateDescription: type: string description: Brief description of the device group set template. example: "SCASC" Result: type: boolean description: Indicates whether the API call was successful. example: true DeviceGroupSetResponse: type: object description: Response structure for the Device Group Set API. properties: Message: type: string description: A message indicating the status of the API response. example: "DeviceGroupSet retrieved successfully" Data: type: array description: List of device group set details. items: $ref: '#/components/schemas/DeviceGroupSet' Result: type: boolean description: Indicates whether the API request was successful. example: true DeviceGroupSet: type: object description: Represents a single device group set template. properties: TemplateName: type: string description: The name of the template. example: "Super User" TemplateData: type: string nullable: true description: Additional data associated with the template. example: null TemplateId: type: string format: uuid description: Unique identifier for the template. example: "F700F46E-7C66-4A35-B464-CACBDB86D714" TemplateDescription: type: string nullable: true description: A brief description of the template. example: null isAllowedNewGroupOrJobFolder: type: integer description: Indicates whether creating a new group or job folder is allowed (0 - No, 1 - Yes). example: 0 isForClone: type: boolean description: Specifies if the template is intended for cloning. example: false folderType: type: integer description: Type of folder associated with the template. example: 0 ReportTemplateData: type: string nullable: true description: Data related to report templates. example: null JobFolderTemplateData: type: string nullable: true description: Data related to job folder templates. example: null DeviceGroupTemplateData: type: string nullable: true description: Data related to device group templates. example: null RoleTemplateData: type: string nullable: true description: Data related to role templates. example: null RoleTemplateId: type: string description: Identifier for the role template. example: "0" FolderTemplateId: type: string description: Identifier for the folder template. example: "0" GroupSetTemplateId: type: string description: Identifier for the group set template. example: "0" isOnlyTagAllowed: type: integer description: Specifies whether only tagging is allowed (0 - No, 1 - Yes). example: 0 loginValidFrom: type: string format: date-time nullable: true description: Start date-time for login validity. example: null loginValidTo: type: string format: date-time nullable: true description: End date-time for login validity. example: null Notify42GearsEmailIds: type: string nullable: true description: Email IDs to notify regarding the template. example: null AddEditUserModelForPut: type: object required: - UserData properties: UserData: type: object required: - UserID - FirstName - Email properties: UserID: type: string description: Unique identifier for the user. example: "usernametestAPIDOC" FirstName: type: string description: First name of the user. example: "username" LastName: type: string description: Last name of the user (optional). example: "" Email: type: string format: email description: Email address of the user. example: "usernametestAPIDOC@gmail.com" PhoneNumber: type: string description: User's phone number including country code. example: "+11111111111" HideParentIfChildNotAllowed: type: boolean description: | This setting controls the visibility of parent menu options based on child permissions. - If **enabled**, and the user does not have access to any child settings, the parent option in the **Header Menu** will be hidden. - If **disabled**, the parent option remains visible regardless of child permissions. - **Exceptions:** This setting does not apply to **Home, Enrollment, DeepThought, Apps Plugin, or OS Updates**. example: false FeaturesTemplateId: type: string format: uuid description: | ID of the features template assigned to the user. - Use the link: [getAllFeatureTemplatesID](#operation/getAllFeatureTemplatesID) and go to the **"Retrieve all user role templates"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "B70345EA-E1D2-4CFE-A5E1-CF64CF7F2283" GroupsTemplateId: type: string format: uuid description: | ID of the groups template assigned to the user. - Use the link: [getAllGroupTemplates](#operation/getAllGroupTemplates) and go to the **"Get Device Group Set"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "8A40DCB9-4CC0-403F-9C13-05E006CBCD9B" JobsTemplateId: type: string format: uuid description: | ID of the jobs template assigned to the user. - Use the link: [getAllJobTemplates](#operation/getAllJobTemplates) and go to the **"Get Folder Set"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "52874737-5F07-4C8C-9E25-98E019565E08" Devicegridcolumntemplate: type: string format: uuid description: | ID of the device grid column template. - Use the link: [getAllDeviceGridColumnTemplates](#operation/getAllDeviceGridColumnTemplates) and go to the **"Get Device Grid Column Set"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "09977BE9-3C76-4308-A39B-DC3C9045933B" FolderAccessTemplateId: type: string format: uuid description: | ID of the folder access template assigned to the user. - Use the link: [getAllFolderAccessTemplates](#operation/getAllFolderAccessTemplates) and go to the **"Get Folder Templates"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "d37a0f5f-e97e-48bd-a55d-dea6ec5925c5" AddEditUserModel: type: object required: - Password - UserData properties: Password: type: string format: password description: Base64 encoded user password. example: "c291cmF2dGVzdEFQSUAxMjM=" UserData: type: object required: - UserID - FirstName - Email properties: UserID: type: string description: Unique identifier for the user. example: "usernametestAPIDOC" FirstName: type: string description: First name of the user. example: "username" LastName: type: string description: Last name of the user (optional). example: "" Email: type: string format: email description: Email address of the user. example: "usernametestAPIDOC@gmail.com" PhoneNumber: type: string description: User's phone number including country code. example: "+11111111111" HideParentIfChildNotAllowed: type: boolean description: | This setting controls the visibility of parent menu options based on child permissions. - If **enabled**, and the user does not have access to any child settings, the parent option in the **Header Menu** will be hidden. - If **disabled**, the parent option remains visible regardless of child permissions. - **Exceptions:** This setting does not apply to **Home, Enrollment, DeepThought, Apps Plugin, or OS Updates**. example: false FeaturesTemplateId: type: string format: uuid description: | ID of the features template assigned to the user. - Use the link: [getAllFeatureTemplatesID](#operation/getAllFeatureTemplatesID) and go to the **"Retrieve all user role templates"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "B70345EA-E1D2-4CFE-A5E1-CF64CF7F2283" GroupsTemplateId: type: string format: uuid description: | ID of the groups template assigned to the user. - Use the link: [getAllGroupTemplates](#operation/getAllGroupTemplates) and go to the **"Get Device Group Set"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "8A40DCB9-4CC0-403F-9C13-05E006CBCD9B" JobsTemplateId: type: string format: uuid description: | ID of the jobs template assigned to the user. - Use the link: [getAllJobTemplates](#operation/getAllJobTemplates) and go to the **"Get Folder Set"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "52874737-5F07-4C8C-9E25-98E019565E08" Devicegridcolumntemplate: type: string format: uuid description: | ID of the device grid column template. - Use the link: [getAllDeviceGridColumnTemplates](#operation/getAllDeviceGridColumnTemplates) and go to the **"Get Device Grid Column Set"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "09977BE9-3C76-4308-A39B-DC3C9045933B" FolderAccessTemplateId: type: string format: uuid description: | ID of the folder access template assigned to the user. - Use the link: [getAllFolderAccessTemplates](#operation/getAllFolderAccessTemplates) and go to the **"Get Folder Templates"** API. - In the response, you will get a `TemplateId`, which can be used here. example: "d37a0f5f-e97e-48bd-a55d-dea6ec5925c5" GroupPostOutputModel: type: object description: 'ID of the group allocated by the SureMDM
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.' example: 8afc87ba-d797-4de4-85b0-8971db41a94d GroupModel: type: object required: - GroupName - GroupID properties: GroupName: type: string description: Name of the group example: Test GroupID: type: string description: | ID of the parent group for which this new group will fall under.
Note: ID of home group is null example: null DefaultGroupModel: type: object required: - JobId - GroupId properties: JobId: description: 'ID of the default job which you want to apply.
For eg. 89269aad-681f-4bad-9668-984cd79d7f43
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API.' type: string example: 89269aad-681f-4bad-9668-984cd79d7f43 GroupId: description: 'ID of the group allocated by the SureMDM onto which default job is to be applied
For eg. a8a327b5-2894-45f2-aa58-a02616440094
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.' type: string example: a8a327b5-2894-45f2-aa58-a02616440094 ForceApply: description: Select if the default job is to be applied forcefully or not type: boolean example: false DownloadType: description: | Select network type for applying default job.
ValueDescription
0WiFi
1Mobile data
2Any

Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) type: integer example: 2 DeviceChargingState: description: Select the Charging state of the device for applying default job.
ValueDescription
"0"Don't Care
"1"Plugged in
type: string example: "0" Priority: type: integer description: Priority level of the job example: 1 DefaultJobDetailsListOnGroupModel: type: array items: type: object properties: JobId: type: string description: ID of the job to apply example: "89269aad-681f-4bad-9668-984cd79d7f43" GroupId: type: string description: ID of the group to which the job should be applied. For the Home group, the Group ID will be null example: "a8a327b5-2894-45f2-aa58-a02616440094" ForceApply: type: boolean description: Whether to apply the job forcefully example: false DownloadType: type: integer description: Network type for applying the job
ValueDescription
0WiFi
1Mobile data
2Any
example: 2 DeviceChargingState: type: string description: Charging state for applying the job
ValueDescription
0Don't Care
1Plugged in
example: "0" Priority: type: integer description: Priority level of the job example: 1 Immediate_Tag: type: object required: - TagId - JobId properties: TagId: description: 'ID of the tag allocated by the SureMDM
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Tag ID can be retrieved using the [Get all the tags](#operation/getAllTags) API.' type: string example: 1111111111111111111 JobId: description: 'ID of the job which you want to apply.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API.' type: string example: eaa76725-ff02-4c45-8fca-4f6145d65d3f DownloadType: description: | Select network type for applying job.
ValueDescription
0WiFi
1Mobile data
2Any

Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) type: integer example: 0 Periodically_Tag: allOf: - $ref: '#/components/schemas/Immediate_Tag' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on regular interval (specified in minutes)
Sample: "12"
Note: Minimum interval can be 5 minutes type: string example: '12' Days_Time_Tag: allOf: - $ref: '#/components/schemas/Immediate_Tag' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on recursive schedule time and days { "Time":"10:41", "Days":["0","5","6"], "GMTTimeInterval":-330 } Note: Given object should be in escaped(Serialized) string form as presented in request sample
Parameter
Description
Time
HH:MM (24 hour format)
Eg: 10:41
Days
Days to repeat
0 - Sunday
1 - Monday
2 - Tuesday
3 - Wednesday
4 - Thursday
5 - Friday
6 - Saturday
Eg: ["1","2","3","4","5"]
GMTTimeInterval
Time offset in minutes preceding with '-'
Eg: -330 for GMT"+05:30"
type: string example: | {"Time":"10:41","Days":["0","5","6"],"GMTTimeInterval":-330} Date_Time_Tag: allOf: - $ref: '#/components/schemas/Immediate_Tag' - type: object properties: ServerScheduleTime: description: | Schedule date and time(UTC time) to apply job
Format: YYYY/MM/DD HH:MM
Sample: 2019/4/10 5:11
type: string example: '2019/4/10 5:11' Immediate_Group: type: object required: - GroupId - JobId properties: GroupId: description: 'ID of the group allocated by the SureMDM
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.
For the Home group, the Group ID will be "Home".' type: string example: 1111111111111111111 JobId: description: 'ID of the job which you want to apply.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API.' type: string example: eaa76725-ff02-4c45-8fca-4f6145d65d3f DownloadType: description: | Select network type for applying job.
ValueDescription
0WiFi
1Mobile data
2Any

Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) type: integer example: 0 Periodically_Group: allOf: - $ref: '#/components/schemas/Immediate_Group' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on regular interval (specified in minutes)
Sample: "12"
Note: Minimum interval can be 5 minutes type: string example: '12' Days_Time_Group: allOf: - $ref: '#/components/schemas/Immediate_Group' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on recursive schedule time and days { "Time":"10:41", "Days":["0","5","6"], "GMTTimeInterval":-330 } Note: Given object should be in escaped(Serialized) string form as presented in request sample.
Parameter
Description
Time
HH:MM (24 hour format)
Eg: 10:41
Days
Days to repeat
0 - Sunday
1 - Monday
2 - Tuesday
3 - Wednesday
4 - Thursday
5 - Friday
6 - Saturday
Eg: ["1","2","3","4","5"]
GMTTimeInterval
Time offset in minutes preceding with '-'
Eg: -330 for GMT"+05:30"
type: string example: | {"Time":"10:41","Days":["0","5","6"],"GMTTimeInterval":-330} Date_Time_Group: allOf: - $ref: '#/components/schemas/Immediate_Group' - type: object properties: ServerScheduleTime: description: | Schedule date and time(UTC time) to apply job
Format: YYYY/MM/DD HH:MM
Sample: 2019/4/10 5:11
type: string example: '2019/4/10 5:11' GetAdvancedFiltersOutputModel: type: object properties: message: type: string description: "Indicates the status of the request. 'Success' implies that the request was successful." example: "Success" data: type: array description: "A list of advanced filters associated with the user's account." items: type: object properties: FilterName: type: string description: "The name of the filter." example: "!! 0" FilterId: type: string description: "A unique identifier for the filter." example: "3874ed3f-b976-470a-8e16-bb49e1db0a32" FilterQuery: type: string description: "The filter's query criteria in JSON format. It specifies conditions used for the filtering process." example: "[{\"name\":\"Agent Version\",\"prop\":\"AgentVersion\",\"condition\":\">\",\"type\":\"text\",\"val\":\"10\",\"valueLabel\":\"10\"},{\"joinCondition\":\"And\"},{\"name\":\"IMEI\",\"prop\":\"IMEI\",\"condition\":\"=\",\"type\":\"textWithFilters\",\"val\":\"22\",\"valueLabel\":\"22\"}]" isQuerySearch: type: boolean description: "Indicates whether the filter is based on a query search (true) or not (false)." example: true # customerId: # type: string # nullable: true # description: "The ID of the customer associated with the filter. This can be null if no customer is associated." # userId: # type: string # description: "The ID of the user who created the filter." # example: "sudheer" # FilterJobs: # type: array # description: "A list of jobs associated with the filter." # items: # type: object # properties: # JobID: # type: string # description: "A unique identifier for the job." # example: "e33a9d4f-125a-4405-87e7-b53ab14403d3" # GroupID: # type: string # description: "The group ID associated with the job." # example: "4fd1ba3a-6de0-42b0-8609-62d0b867a499" # ForceApply: # type: boolean # description: "Indicates whether the filter should be forcibly applied (true) or not (false)." # example: false # DownloadType: # type: integer # description: "The type of download associated with the job. Different integers represent different download behaviors." # example: 2 # DeviceChargingState: # type: string # description: "Indicates the device's charging state (e.g., '0' for not charging, '1' for charging)." # example: "0" # Priority: # type: integer # description: "The priority of the job, where 0 typically indicates the lowest priority." # example: 0 # ApplyOnExistingDevices: # type: integer # description: "Indicates whether the filter should be applied to existing devices. A value of 1 means 'Yes', and 0 means 'No'." # example: 1 status: type: boolean description: "Indicates whether the API request was successful. True means the request was successful, and false means it failed." example: true GetFiltersOutputModel: type: object properties: message: type: string description: Message indicating the success or failure of retrieving filter details. example: Successfully retrieved filter details or Failed to retrieve filter details. data: type: array description: An array of filters applied to the devices. items: type: object properties: FilterName: type: string description: Name of the filter. example: "!GPS" FilterId: type: string description: ID of the filter allocated by SureMDM. example: "7790" FilterQuery: type: string description: Filter details, typically in JSON format. example: "{\"com.chartcross.gpstest\":\">1.6.2\"}" status: type: boolean description: Status of the operation, indicating whether filters were successfully retrieved. example: true example: message: Successfully retrieved filter details. data: - FilterName: "!GPS" FilterId: "7790" FilterQuery: "{\"com.chartcross.gpstest\":\">1.6.2\"}" - FilterName: "@111" FilterId: "2213" FilterQuery: "{\"Battery\":\"<70\"}" - FilterName: "@ankush" FilterId: "2196" FilterQuery: "{\"DeviceModelName\":\"windows\"}" status: true FilterEditResponseModel: type: object properties: Message: type: string description: Response message indicating the result of the filter edit operation. example: "Filter edited successfully." Data: type: string description: | 0: Filter edit failed
1: Filter edited successfully example: "1" Status: type: boolean description: Indicates if the operation was successful. example: true UpdateFilterResponseModel3: type: object properties: message: type: string description: Detailed status message describing the outcome. example: "Unsupported column in FilterQuery: DeviceName" data: type: string nullable: true description: Additional context or explanation for the response. Can be null for errors. example: "Filter query contains invalid columns." status: type: boolean description: Indicates success or failure of the operation. example: false example: message: "Unsupported column in FilterQuery: Battery" data: "Filter query contains invalid columns." status: false UpdateFilterResponseModel2: type: object properties: message: type: string description: Status message indicating the outcome of the filter update operation. example: "Invalid input parameters" data: type: string nullable: true description: Additional details or data about the response. Can be null for errors. example: "One or more input parameters are missing or invalid." status: type: boolean description: Overall status of the operation. example: false example: message: "Invalid input parameters" data: "One or more input parameters are missing or invalid." status: false UpdateFilterResponseModel1: type: object properties: message: type: string description: Detailed status message describing the operation's outcome. example: "Filter updated successfully" data: type: string description: Additional context or explanation for the response. example: "Updated 1 record(s)." status: type: boolean description: Indicates the success or failure of the operation. example: true FilterCreationResponseModel: type: object properties: Message: type: string description: Status message of the request example: "Filter created successfully." Data: type: array items: type: string description: ID of the filter which is created example: "11635" Status: type: boolean description: The success status of the request example: true FilterCreateModel: type: object required: - FilterName - FilterQuery properties: FilterName: type: string description: Name of the filter example: Test_Filter FilterQuery: type: object description: | Filter specifications.
Apart from given example, fields mentioned in [`Advance Search Fields`](./#tag/Advance-Search-Fields) can also be used for filters.
Note: For the filters applied on particular application, use it's package name as field as mentioned in example below.
{ "JobsFailed":"3", "searchOption":"0", "DeviceName":"69", "modelSearchOption":"2", "DeviceModelName":"android", "DeviceGroupPath":"Home/AE 20 devices", "com.newpreet.andr":"1.2" } allOf: - $ref: '#/components/schemas/FilterQueryExplain' example: "{\"JobsFailed\":\"3\",\"searchOption\":\"1\",\"DeviceName\":\"Client\",\"modelSearchOption\":\"1\",\"DeviceModelName\":\"SM\",\"DeviceGroupPath\":\"Home/group1\",\"com.android.chrome\":\">20.0\"}" FilterQueryExplain: type: object properties: JobsFailed: type: string description: | Status of jobs on device
0 - Failed
1 - Completed
2 - Pending
3 - In Progress
Sample: "1" FilterModifyModel: type: object required: - FilterName - FilterId - FilterQuery properties: FilterName: type: string description: New name of the filter example: "Test_Filter_New" FilterId: type: string description: | ID of the filter allocated by the SureMDM that has to be updated.
Filter ID can be retrieved using the [Get all the filters](#operation/getAllFilters) API. example: "11635" FilterQuery: type: object description: | Filter specifications.
Apart from given example, fields mentioned in [`Advance Search Fields`](./#tag/Advance-Search-Fields) can also be used for filters.
Note: For the filters applied on particular application, use it's package name as field as mentioned in example below.
{ "JobsFailed":"3", "searchOption":"0", "DeviceName":"69", "modelSearchOption":"2", "DeviceModelName":"android", "DeviceGroupPath":"Home/AE 20 devices", "com.newpreet.andr":"1.2" } allOf: - $ref: '#/components/schemas/FilterQueryExplain' example: "{\"JobsFailed\":\"2\",\"searchOption\":\"1\",\"DeviceName\":\"Client1\",\"modelSearchOption\":\"1\",\"DeviceModelName\":\"SM\",\"DeviceGroupPath\":\"Home/group1\",\"com.android.chrome\":\"<90.0\"}" FilterDeleteModel: type: object required: - FilterId properties: FilterId: type: string description: | ID of the filter allocated by the SureMDM that has to be deleted.
Filter ID can be retrieved using the [Get all the filters](#operation/getAllFilters) API. example: "11635" AdvanceQueryFilterDeleteModel: type: object required: - FilterId properties: FilterId: type: string description: | ID of the Advance Query filter allocated by the SureMDM that has to be deleted.
Filter ID can be retrieved using the [Get all the Advanced Query](#operation/getAllSmartFilters) API. example: "11635" CloneFilterRequestModel: type: object properties: FilterId: type: string description: | ID of the Advance Query filter allocated by the SureMDM that needs to be cloned.
Filter ID can be retrieved using the [Get all the Advanced Query](#operation/getAllSmartFilters) API. example: "e7856be1-b3eb-440d-8148-5112924d63ec" FilterName: type: string description: Name of the new cloned filter. example: "Cloned_Filter_With_Jobs1" cloneExistingJobs: type: boolean description: Specifies whether existing jobs should be cloned with the filter. example: true CloneFilterSuccessResponse: type: object properties: message: type: string description: Response message indicating the outcome of the operation. example: "Filter cloned successfully" data: type: string description: Additional details about the operation. example: "A new filter has been created." status: type: boolean description: Indicates whether the operation was successful. example: true CloneFilterInvalidInputResponseModel: type: object properties: message: type: string description: Response message indicating an invalid input. example: "Invalid input parameters" data: type: string description: Additional details about the error. example: "One or more input parameters are missing or invalid." status: type: boolean description: Indicates whether the operation was successful. example: false CloneFilterNotFoundResponse: type: object properties: message: type: string description: Response message indicating the filter was not found. example: "Filter not found" data: type: string description: Additional details about the error. example: "No filter found with the given filterId and customerId." status: type: boolean description: Indicates whether the operation was successful. example: false CloneFilterFailureResponse: type: object properties: message: type: string description: Response message indicating cloning failure. example: "Filter cloning failed" data: type: string description: Additional details about the error. example: "Failed to insert the cloned filter into the database." status: type: boolean description: Indicates whether the operation was successful. example: false AddJobsToAdvancedQuerySetPriorityRequestModel: type: array items: type: object properties: JobID: type: string description: Unique identifier of the job to be added to the filter. example: "e3bdcc42-99cb-46b7-9ba4-889000c4d485" Priority: type: integer description: Priority level of the job within the filter. example: 1 example: - JobID: "4b451afd-37ae-4e61-b383-668d204f6b90" Priority: 1 - JobID: "27c483b1-bd1b-444e-a61a-e5d25366342e" Priority: 2 - JobID: "f962c408-96f5-4f5a-81e6-ef7549607877" Priority: 3 - JobID: "0783c93f-4edd-4f80-b5b4-95861c4d9a92" Priority: 4 AddJobsSetPrioriytAdvancedQueryResponseModel: type: object properties: message: type: string description: Response message indicating the outcome of the operation. example: "Jobs added successfully." data: type: boolean description: Indicates whether the jobs were successfully added. example: true status: type: boolean description: Indicates whether the operation was successful. example: true DeleteDefaultJobFromAdvancedQueryResponseModel: type: object properties: message: type: string description: Response message indicating the outcome of the delete operation. example: "Jobs deleted successfully." data: type: boolean description: Indicates whether the job was successfully deleted. example: true status: type: boolean description: Indicates whether the operation was successful. example: true FilterAddJobPayload: type: array description: The payload for adding default jobs to a filter. items: type: object properties: JobID: type: string description: The unique identifier of the job to be added. example: "c0a19661-f808-4f9e-a268-a115d3a1e41f" DownloadType: type: integer description: | Network type for applying default job.
ValueDescription
0WiFi
1Mobile data
2Any
3Ethernet only
4Ethernet or WiFi only

Note: Only effective on jobs which have file attachments (e.g., File transfer/Install app job) example: 2 DeviceChargingState: description: Select the Charging state of the device for applying default job.
ValueDescription
"0"Don't Care
"1"Plugged in
type: string example: "0" ApplyOnExistingDevices: type: integer description: "Indicates whether the filter should be applied to existing devices. A value of 1 means 'Yes', and 0 means 'No'." example: 1 FilterAddJobResponse: type: object description: The response schema for adding default jobs to a filter. properties: message: type: string description: Response message indicating the result of the operation. example: "Jobs added successfully." data: type: boolean description: Indicates the success of the operation. example: true status: type: boolean description: Status of the operation. example: true GetJobsAppliedToFilterResponseModel: type: object properties: message: type: string description: Response message indicating the success or failure of the request. example: "Success" data: type: array items: type: object properties: JobID: type: string description: Unique identifier of the job applied to the filter. example: "27c483b1-bd1b-444e-a61a-e5d25366342e" JobName: type: string description: Name of the job. example: "AndroidTextMessage_Automation-1736163603440" JobSize: type: integer description: Size of the job (in bytes). example: 1279 JobPlatform: type: string description: Platform targeted by the job. example: "ANY" JobType: type: string description: Type of job. example: "TextMessage" DownloadType: type: integer description: | Network type for applying default job.
ValueDescription
0WiFi
1Mobile data
2Any
3Ethernet only
4Ethernet or WiFi only

Note: Only effective on jobs which have file attachments (e.g., File transfer/Install app job) example: 2 DeviceChargingState: description: Charging state of the device for applying default job.
ValueDescription
"0"Don't Care
"1"Plugged in
type: string example: "0" Priority: type: integer description: Priority level of the job. Higher values indicate higher priority. example: 0 FilterJobTime: type: string format: date-time description: Timestamp of when the job was applied. example: null status: type: boolean description: Indicates whether the request was successful. example: true example: message: "Success" data: - JobID: "27c483b1-bd1b-444e-a61a-e5d25366342e" JobName: "AndroidTextMessage_Automation-1736163603440" JobSize: 1279 JobPlatform: "ANY" JobType: "TextMessage" DownloadType: "2" DeviceChargingState: "0" Priority: 0 FilterJobTime: null status: true GetJobsAppliedToFilterResponseModelOld: type: array items: type: object properties: JobID: type: string description: Unique identifier of the job applied to the filter. example: "27c483b1-bd1b-444e-a61a-e5d25366342e" JobName: type: string description: Name of the job. example: "AndroidTextMessage_Automation-1736163603440" JobSize: type: integer description: Size of the job (in bytes). example: 1279 JobPlatform: type: string description: Platform targeted by the job. example: "ANY" JobType: type: string description: Type of job. example: "TextMessage" DownloadType: description: | Network type for applying default job.
ValueDescription
0WiFi
1Mobile data
2Any

Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) type: integer example: 2 DeviceChargingState: description: Charging state of the device for applying default job.
ValueDescription
"0"Don't Care
"1"Plugged in
type: string example: "0" ApplyOnExistingDevices: type: integer description: "Indicates whether the filter should be applied to existing devices. A value of 1 means 'Yes', and 0 means 'No'." example: 1 example: - JobID: "27c483b1-bd1b-444e-a61a-e5d25366342e" JobName: "AndroidTextMessage_Automation-1736163603440" JobSize: 1279 JobPlatform: "ANY" JobType: "TextMessage" DownloadType: "2" DeviceChargingState: "0" ApplyOnExistingDevices: 0 - JobID: "4b451afd-37ae-4e61-b383-668d204f6b90" JobName: "network job" JobSize: 1185 JobPlatform: "ANY" JobType: "TextMessage" DownloadType: "2" DeviceChargingState: "0" ApplyOnExistingDevices: 0 - JobID: "0783c93f-4edd-4f80-b5b4-95861c4d9a92" JobName: "String jobs" JobSize: 1184 JobPlatform: "ANY" JobType: "TextMessage" DownloadType: "2" DeviceChargingState: "0" ApplyOnExistingDevices: 0 - JobID: "f962c408-96f5-4f5a-81e6-ef7549607877" JobName: "FileTransfer-1736223050683" JobSize: 5246394 JobPlatform: "ANDROID" JobType: "File Transfer" DownloadType: "2" DeviceChargingState: "0" ApplyOnExistingDevices: 0 - JobID: "c0a19661-f808-4f9e-a268-a115d3a1e41f" JobName: "OS-version job" JobSize: 1037 JobPlatform: "ANY" JobType: "TextMessage" DownloadType: "2" DeviceChargingState: "0" ApplyOnExistingDevices: 0 - JobID: "ee62f962-72ca-42af-ba18-e409c522968d" JobName: "logo" JobSize: 2774 JobPlatform: "WINDOWS" JobType: "WINDOWS WORK PROFILE" DownloadType: "2" DeviceChargingState: "0" ApplyOnExistingDevices: 0 AdvancedQueryFilterEditRequestModel: type: object properties: FilterName: type: string description: Name of the filter to be updated. example: "agentVersionFilter34424" FilterQuery: type: string description: The advanced query string defining the filter conditions. example: > [{"name":"Agent Version","prop":"AgentVersion","condition":"=","type":"text","val":"27.45.54","valueLabel":"27.45.54"}, {"joinCondition":"Or"}, {"name":"Platform / Model","prop":"DeviceModelName","condition":"!=","type":"textWithFilters","val":"Android","valueLabel":"Android"}, {"joinCondition":"Or"}, {"name":"Phone Number","prop":"PhoneNumber","condition":"!=","type":"text","val":"21323213213213","valueLabel":"21323213213213"}] FilterId: type: string description: | ID of the Advance Query filter allocated by the SureMDM that has to be updated.
Filter ID can be retrieved using the [Get all the Advanced Query](#operation/getAllSmartFilters) API. example: "f8058543-de93-4d9e-9b6a-df931437e645" isQuerySearch: type: boolean description: Indicates whether the filter is for query-based searches. example: true AdvancedQueryFilterDeleteFailureResponseModel: type: object properties: message: type: string description: Response message indicating the failure of the advanced query filter deletion operation. example: "Failed to delete the Advanced Query filter. Please try again." data: type: boolean description: Indicates the result of the deletion operation. example: null status: type: boolean description: Indicates if the deletion operation was successful (false in this case). example: false AdvancedQueryFilterDeleteResponseModel: type: object properties: message: type: string description: Response message indicating the result of the advanced query filter deletion operation. example: "Advanced Query filter deleted successfully." data: type: boolean description: Indicates the result of the deletion operation. example: true status: type: boolean description: Indicates if the deletion operation was successful. example: true FilterDeleteResponseModel: type: object properties: message: type: string description: Response message indicating the result of the filter deletion operation. example: "Filter deleted successfully." data: type: boolean description: Indicates the result of the deletion operation. example: true status: type: boolean description: Indicates if the operation was successful. example: true JobApplyToTagResponseModel: type: object properties: message: type: string description: Response message indicating the result of applying the job on the tag. example: "Job applied successfully on tag." data: type: string description: Indicates the result of the job application operation. example: "true" status: type: boolean description: Indicates if the operation was successful. example: true DeleteJobFolderWithoutContentsResponseModel: type: object properties: message: type: string description: Response message indicating the result of deleting the job folder. example: "Job folder deleted successfully." data: type: string description: | true: Job folder deleted successfully.
false: Failed to delete Job folder.
null: Unauthorized user. example: true status: type: boolean description: Indicates if the operation was successful or not. example: true DeleteJobFolderResponseModel: type: object properties: Message: type: string description: Response message indicating the result of deleting the job folder. example: "Job folder deleted successfully." Data: type: boolean description: | true: Job folder deleted successfully.
false: Failed to delete Job folder. example: true Status: type: boolean description: Indicates if the operation was successful. example: true TagsDefaultJobResponseModel: type: object properties: Message: type: string description: Response message indicating the result of applying the default job. example: "Default Job applied successfully." Data: type: integer description: | 0: Default Job failed
1: Default Job applied successfully example: 1 Status: type: boolean description: Indicates if the operation was successful. example: true TagAssignmentErrorResponseModel: type: object properties: Message: type: string description: Error message explaining why validation failed. example: "TagName cannot be null, empty or whitespace at index 0" Data: type: string nullable: true description: Always null in error cases. example: null Result: type: boolean description: Indicates failure of the operation. example: false TagAssignmentResponseModel: type: object properties: Message: type: string description: Response message indicating the result of the tag assignment operation. example: "Tag successfully assigned." Data: type: string description: Indicates the result of the tag assignment operation. example: "true" Result: type: boolean description: Indicates if the operation was successful. example: true TagDeleteResponseModel: type: object properties: Message: type: string description: Response message indicating the result of the tag deletion operation. example: "Tag deleted successfully." Data: type: string description: Indicates the result of the tag deletion operation. example: "true" Status: type: boolean description: Indicates if the operation was successful. example: true JobApplyToFilterResponseModel: type: object properties: Message: type: string description: Response message indicating the result of applying the job on the filter. example: "Job applied successfully on filter." Data: type: string description: Indicates the result of the job application operation. example: "true" Status: type: boolean description: Indicates if the operation was successful. example: true Immediate_Filter: type: object required: - FilterID - JobId properties: FilterID: description: 'ID of the filter allocated by the SureMDM onto which the job is to be applied
For eg. "4"
Filter ID can be retrieved using the [Get all the filters](#operation/getAllFilters) API.' type: string example: "4" JobId: description: 'ID of the job which you want to apply.
For eg. a5a7ecd7-54a1-435b-9698-47d36adf45aa
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API.' type: string example: a5a7ecd7-54a1-435b-9698-47d36adf45aa DeviceChargingState: description: Select the Charging state of the device for applying default job.
ValueDescription
"0"Don't Care
"1"Plugged in
type: string example: "0" DownloadType: description: | Select network type for applying default job.
ValueDescription
0WiFi
1Mobile data
2Any

Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) type: integer example: 2 Periodically_Filter: allOf: - $ref: '#/components/schemas/Immediate_Filter' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on regular interval (specified in minutes)
Sample: "12"
Note: Minimum interval can be 5 minutes type: string example: '12' Days_Time_Filter: allOf: - $ref: '#/components/schemas/Immediate_Filter' - type: object properties: RecursiveScheduleTime: description: | Auto apply job on recursive schedule time and days { "Time":"10:41", "Days":["0","5","6"], "GMTTimeInterval":-330 } Note: Given object should be in escaped(Serialized) string form as presented in request sample.
Parameter
Description
Time
HH:MM (24 hour format)
Eg: 10:41
Days
Days to repeat
0 - Sunday
1 - Monday
2 - Tuesday
3 - Wednesday
4 - Thursday
5 - Friday
6 - Saturday
Eg: ["1","2","3","4","5"]
GMTTimeInterval
Time offset in minutes preceding with '-'
Eg: -330 for GMT"+05:30"
type: string example: | {"Time":"10:41","Days":["0","5","6"],"GMTTimeInterval":-330} Date_Time_Filter: allOf: - $ref: '#/components/schemas/Immediate_Filter' - type: object properties: ServerScheduleTime: description: | Schedule date and time(UTC time) to apply job
Format: YYYY/MM/DD HH:MM
Sample: 2019/4/10 5:11
type: string example: '2019/4/10 5:11' GetTagsOutputModel: type: object properties: message: type: string description: Message indicating the success or failure of retrieving tag details. example: Successfully retrieved tag details or Failed to retrieve tag details. data: type: array description: An array of tags associated with devices or jobs. items: type: object properties: TagName: type: string description: Name of the tag. example: Bihar TagID: type: string description: ID of the tag allocated by SureMDM. example: 357e6250-f1e5-4b41-affe-676711a5ceb9 DefaultJobsCount: type: string description: Number of default jobs applied to the tag. example: '0' status: type: boolean description: Status of the operation, indicating whether the tags were successfully retrieved. example: true example: message: Successfully retrieved tag details. data: - TagName: Bihar TagID: 357e6250-f1e5-4b41-affe-676711a5ceb9 DefaultJobsCount: '0' - TagName: Gujarat TagID: 0a10be77-eeef-4ad4-97f7-a6ee413bd2f7 DefaultJobsCount: '0' - TagName: Uttar Pradesh TagID: adc225b5-5897-4254-b661-fc1179d1be74 DefaultJobsCount: '0' status: true TagCreateModel: type: object required: - TagName properties: TagName: type: string description: Name of the tag example: Test_Tag TagCreateResponseModel: type: object properties: Message: type: string description: Response message indicating the result of the tag creation operation. example: "Tag created successfully." Data: type: string description: ID of the tag that was created. example: "6901d80f-4466-4efc-a8c1-30f9c0e2117b" Status: type: boolean description: Indicates if the operation was successful. example: true TagEditResponseModel: type: object properties: Message: type: string description: Response message indicating the result of the tag edit operation. example: "Tag edited successfully." Data: type: string description: | 0: Tag edit failed
1: Tag edited successfully example: "1" Status: type: boolean description: Indicates if the operation was successful. example: true TagModifyModel: type: object required: - TagName - TagID properties: TagName: type: string description: New name of the tag example: New_Tag TagID: type: string description: | ID of the tag allocated by the SureMDM that has to be updated.
Tag ID can be retrieved using the [Get all the tags](#operation/getAllTags) API. example: adc225b5-5897-4254-b661-fc1179d1be74 TagsAssignToDeviceModel: type: array items: type: object required: - DeviceId - TagId - TagName properties: DeviceId: type: string description: | ID of the device allocated by the SureMDM.
For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142**
Device ID can be retrieved using [Get device details](#operation/getDeviceDetails).
example: aa8b3b36-9684-42b6-996b-84c319df75ff TagId: type: string description: 'ID of the tag allocated by the SureMDM.
Tag ID can be retrieved using the [Get all the tags](#operation/getAllTags) API.' example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d TagName: type: string description: 'Name of the tag that you want to assign to the device.' example: GooglePlayEMMAPI DefaultTagModel: required: - JobId - GroupId type: array items: type: object properties: JobId: description: 'ID of the default job which you want to apply.
For eg. 89269aad-681f-4bad-9668-984cd79d7f43
Job ID can be retrieved using the [Get all jobs](#operation/getAllJobs) API.' type: string example: 89269aad-681f-4bad-9668-984cd79d7f43 GroupId: description: 'ID of the tag allocated by the SureMDM onto which default job is to be applied
For eg. daad5e79-d773-41bd-9029-e9ace0447f04
Tag ID can be retrieved using the [Get all the tags](#operation/getAllTags) API.' type: string example: daad5e79-d773-41bd-9029-e9ace0447f04 ForceApply: description: Select if the default job is to be applied forcefully or not type: boolean example: false DownloadType: description: | Select network type for applying default job.
ValueDescription
0WiFi
1Mobile data
2Any

Note: Only effective on jobs which have file attachments.(e.g, File transfer/Install app job) type: integer example: 2 DeviceChargingState: description: Select the Charging state of the device for applying default job.
ValueDescription
"0"Don't Care
"1"Plugged in
type: string example: "0" CustomPropertyCreationResponseModel: type: object properties: message: type: string description: The response message indicating the result of the custom property creation. example: Inserted data: type: string nullable: true description: Data field, which is `null` when no additional information is provided. example: null result: type: boolean description: Status of the request, which will be `true` if the custom property is successfully created. example: true EditCustomPropertyPayload: type: object description: Payload for editing a custom property in the system. properties: CustomPropertiesPlatformType: type: string description: | Specifies the platform type to which the custom property applies. The supported platform types are: **Android**, **Linux**, **Windows**, **macOS** and **All**. Ensure that the value matches one of these options to avoid validation errors.
**Note:** Editing custom property API does not support **AndroidWear**. example: "Android" CustomPropertiesKey: type: string description: The key of the custom property to uniquely identify it. example: "ffer" CustomPropertiesDataType: type: string description: | Specifies the data type of the custom property. The following data types are supported: - **String**: A sequence of characters. - **Number**: Numeric values. - **Date**: Date values. - **Boolean**: True or False values. - **Enum**: A predefined set of possible values. These options are available for selection when defining custom properties in the system. example: "String" CustomPropertiesValue: type: string description: The value assigned to the custom property. Leave blank if no value is needed. example: "" Mask: type: boolean description: | Indicates whether the value of the custom property should be masked. - Masking is **only supported for Linux**. - For other platforms (e.g., Windows, macOS), masking is not allowed. - When enabled (`true`), the masked value will not be visible in plain text and will follow the platform's masking rules. example: false RetrieveValueFromScript: type: boolean description: Determines if the value of the custom property is retrieved using a script. example: true CustomPropertyScript: type: string description: | Specifies the script used to retrieve the custom property value. - This value **must be provided in Base64 format**. - It cannot be supplied directly in JSON format. Ensure the script is properly encoded to Base64 before assigning it to this property. example: "tfd3rfds" ScriptExecutionContext: type: string description: | Specifies the execution context for PowerShell scripts. This field is applicable only when `RetrieveValueFromScript` is enabled. The execution context determines how and where the script will be executed. **Supported Platforms:** **Windows, Linux** **Supported Values:** - `1`: Executes the script in the **System Context**. - `2`: Executes the script in the **Currently Logged-in User's Account Context**. Ensure the appropriate execution context is selected based on the intended environment and user access requirements. example: "1" TimeInterval: type: integer description: | Specifies the frequency, in minutes, at which the custom property is retrieved. - The minimum allowed value is **15 minutes**. - Any value less than 15 minutes will not be accepted. Use this property to define how frequently the custom property is updated for the device. example: 75 EditCustomPropertyResponse: type: object description: Response object for the edit custom property API. properties: Message: type: string description: A message indicating the result of the operation. example: "Update Successful" Data: type: string description: Any additional data returned by the API. Often null for this endpoint. example: null Result: type: boolean description: Indicates if the operation was successful. example: true UpdateDeviceCustomPropertyPayload: type: object description: | Payload for updating a custom property for a single device.
**Note:** This payload includes additional parameters (`RetrieveValueFromScript`, `CustomPropertyScript`, `ScriptExecutionContext`, and `TimeInterval`) that must always be sent with specific values in the **Update Custom Property for a Single Device** API.
These fields are required but have fixed values as described below. properties: key: type: string description: The unique key for the custom property to update. example: "Test66" value: type: string description: The new value for the custom property. example: "1;1;1" dataType: type: string description: | Specifies the data type of the custom property. The following data types are supported: - **String**: A sequence of characters. - **Number**: Numeric values. - **Date**: Date values. - **Boolean**: True or False values. - **Enum**: A predefined set of possible values. These options are available for selection when defining custom properties in the system. example: "Enum" DeviceID: type: string description: The unique identifier of the device. example: "8b485d8e-5960-43ff-b55d-295a97040a17" DeviceName: type: string description: | The name of the device.
DeviceName can be retrieved using the [Get Device Name](#operation/getDeviceName) API.
To retrieve the device name, simply pass the device ID in the above API call. example: "6144" GroupPath: type: string description: | The path of the group to which the custom property is assigned.
GroupPath can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API. example: "Home/!!man_11" RetrieveValueFromScript: type: boolean description: | Indicates if the custom property value should be retrieved using a script. In the **Update Custom Property for a Single Device** API, this field will always be sent with the value **`false`**. example: false CustomPropertyScript: type: string description: | Specifies the script used to retrieve the custom property value. - This value **must be provided in Base64 format**. - It cannot be supplied directly in JSON format. In the **Update Custom Property for a Single Device** API, this field will always be sent with the value **`null`**. example: null ScriptExecutionContext: type: string description: | Specifies the execution context for PowerShell scripts. This field is applicable only when `RetrieveValueFromScript` is enabled. The execution context determines how and where the script will be executed. **Supported Platforms:** **Windows, Linux** **Supported Values:** - `1`: Executes the script in the **System Context**. - `2`: Executes the script in the **Currently Logged-in User's Account Context**. In the **Update Custom Property for a Single Device** API, this field will always be sent with the value **`null`**. example: null TimeInterval: type: integer description: | Specifies the frequency, in minutes, at which the custom property is retrieved. In the **Update Custom Property for a Single Device** API, this field will always be sent with the value **`0`**. example: 0 UpdateDeviceCustomPropertyResponse: type: object description: Response object for the update custom property API for a single device. properties: Message: type: string description: Message indicating the success of the operation. example: "Successful" Data: type: string description: Any additional data. Typically null for this endpoint. example: null Result: type: boolean description: Indicates whether the operation was successful. example: true EditGroupAttributePayload: type: object properties: CustomPropertiesKey: type: string description: The unique key for the custom property. example: "DF" CustomPropertiesValue: type: string description: | The value of the custom property. This field is only required when `CustomPropertiesDataType` is set to **Enum**. For other data types, this field will be optional and can be left blank. example: "6" CustomPropertiesDataType: type: string description: | Specifies the data type of the custom property. The following data types are supported: - **String**: A sequence of characters. - **Number**: Numeric values. - **Date**: Date values. - **Boolean**: True or False values. - **Enum**: A predefined set of possible values. These options are available for selection when defining custom properties in the system. example: "Numbers" Mask: type: boolean description: | Indicates whether the value of the custom property should be masked. - Masking is **only supported for Linux**. - For other platforms (e.g., Windows, macOS), masking is not allowed. - When enabled (`true`), the masked value will not be visible in plain text and will follow the platform's masking rules. example: false GroupID: type: string description: | The unique identifier for the group .
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API. example: "a399fc28-219e-4913-b106-f335ab8a8e1b" CustomPropertiesPlatformType: type: string description: | Specifies the platform type to which the custom property applies. The supported platform types are: **Android**, **Linux**, **Windows**, **macOS**, **AndroidWear** and **All**. Ensure that the value matches one of these options to avoid validation errors. example: "All" SendToDevice: type: string description: | Specifies whether the custom property should be sent to the device. - For custom properties, the value of `SendToDevice` will always be `true`. example: "true" GroupPath: type: string description: | The path of the group to which the custom property is assigned.
GroupPath can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API. example: "Home/!!man_11" RetrieveValueFromScript: type: boolean description: Indicates if the value is retrieved from a script. example: false CustomPropertyScript: type: string description: | Specifies the script used to retrieve the custom property value. - This value **must be provided in Base64 format**. - It cannot be supplied directly in JSON format. Ensure the script is properly encoded to Base64 before assigning it to this property. example: "" ScriptExecutionContext: type: string description: | Specifies the execution context for PowerShell scripts. This field is applicable only when `RetrieveValueFromScript` is enabled. The execution context determines how and where the script will be executed. **Supported Platforms:** **Windows, Linux** **Supported Values:** - `1`: Executes the script in the **System Context**. - `2`: Executes the script in the **Currently Logged-in User's Account Context**. Ensure the appropriate execution context is selected based on the intended environment and user access requirements. example: null TimeInterval: type: integer description: | Specifies the frequency, in minutes, at which the custom property is retrieved. - The minimum allowed value is **15 minutes**. - Any value less than 15 minutes will not be accepted. Use this property to define how frequently the custom property is updated for the device. example: 60 EditGroupAttributeResponse: type: object properties: Message: type: string example: Update Successful Data: type: object nullable: true description: Additional data, if any. example: null Result: type: boolean description: The result of the operation. example: true CustomPropertiesPayload: type: array items: type: object properties: CustomPropertiesPlatformType: type: string description: | Specifies the platform type to which the custom property applies. The supported platform types are: **Android**, **Linux**, **Windows**, **macOS**, **AndroidWear** and **All**. Ensure that the value matches one of these options to avoid validation errors. example: All CustomPropertiesKey: type: string description: Key for the custom property example: CustomProperties_New CustomPropertiesDataType: type: string description: | Specifies the data type of the custom property. The following data types are supported: - **String**: A sequence of characters. - **Number**: Numeric values. - **Date**: Date values. - **Boolean**: True or False values. - **Enum**: A predefined set of possible values. These options are available for selection when defining custom properties in the system. example: "String" CustomPropertiesValue: type: string description: | Specifies the value of the custom property, based on the selected data type (`CustomPropertiesDataType`): - **For Enum data type:** - This field is **mandatory** and must be provided. - If left blank, the custom property cannot be created, as it is a required field in the UI when `CustomPropertiesDataType` is set to `Enum`. - **For other data types (String, Numbers, Date, Boolean):** - This field is not required and will be set to `null` by default. Ensure to provide a value only when `CustomPropertiesDataType` is set to `Enum`. The behavior of this field directly depends on the selected data type. example: null Mask: type: boolean description: | Indicates whether the value of the custom property should be masked. - Masking is **only supported for Linux**. - For other platforms (e.g., Windows, macOS), masking is not allowed. - When enabled (`true`), the masked value will not be visible in plain text and will follow the platform's masking rules. example: false RetrieveValueFromScript: type: boolean description: | A flag indicating whether the custom property value should be retrieved from a script. - This must be set to **`true`** if a value is provided for `CustomPropertyScript`. - If no script is provided, this should remain **`false`**. - This field is supported for all platform types **except `ALL`**. Ensure consistency between `RetrieveValueFromScript` and `CustomPropertyScript` to avoid validation issues. example: false CustomPropertyScript: type: string description: | Specifies the script used to retrieve the custom property value. - This value **must be provided in Base64 format**. - It cannot be supplied directly in JSON format. Ensure the script is properly encoded to Base64 before assigning it to this property. example: "" ScriptExecutionContext: type: string description: | Specifies the execution context for PowerShell scripts. This field is applicable only when `RetrieveValueFromScript` is enabled. The execution context determines how and where the script will be executed. **Supported Platforms:** **Windows, Linux** **Supported Values:** - `1`: Executes the script in the **System Context**. - `2`: Executes the script in the **Currently Logged-in User's Account Context**. Ensure the appropriate execution context is selected based on the intended environment and user access requirements. example: "1" TimeInterval: type: integer description: | Specifies the frequency, in minutes, at which the custom property is retrieved. - The minimum allowed value is **15 minutes**. - Any value less than 15 minutes will not be accepted. Use this property to define how frequently the custom property is updated for the device. example: 60 RunScriptResponseModel: type: object properties: message: type: string description: Message indicating the success or failure of retrieving run script details. example: Successfully retrieved run script details or Failed to retrieve run script details. data: type: object description: Object containing run script details for different platforms. properties: retALL: type: array description: Run scripts applicable for all Android devices. items: type: object properties: scriptid: type: string description: ID of the run script. scripttype: type: string description: Run script type. title: type: string description: Title of the run script. script: type: string description: Run script. helptext: type: string description: Sample help text for run script. notes: type: string description: Notes for run script. inputplaceholder: type: string description: Sample values for placeholders in run script. inputClass: type: string description: null accordionGroup: type: string description: Category for the script in the UI accordion group. example: Accounts retKNOX: type: array description: Run scripts applicable for KNOX running devices. items: type: object properties: scriptid: type: string description: ID of the run script. scripttype: type: string description: Run script type. title: type: string description: Title of the run script. script: type: string description: Run script. helptext: type: string description: Sample help text for run script. notes: type: string description: Notes for run script. inputplaceholder: type: string description: Sample values for placeholders in run script. inputClass: type: string description: null retSHELL: type: array description: Run scripts for Shell. items: type: object properties: scriptid: type: string description: ID of the run script. scripttype: type: string description: Run script type. title: type: string description: Title of the run script. script: type: string description: Run script. helptext: type: string description: Sample help text for run script. notes: type: string description: Notes for run script. inputplaceholder: type: string description: Sample values for placeholders in run script. inputClass: type: string description: null retEA: type: array description: Run scripts for EA(Enterprise Agent). items: type: object properties: scriptid: type: string description: ID of the run script. scripttype: type: string description: Run script type. title: type: string description: Title of the run script. script: type: string description: Run script. helptext: type: string description: Sample help text for run script. notes: type: string description: Notes for run script. inputplaceholder: type: string description: Sample values for placeholders in run script. inputClass: type: string description: null retIOS: type: array description: Run scripts for IOS devices. items: type: object properties: scriptid: type: string description: ID of the run script. scripttype: type: string description: Run script type. title: type: string description: Title of the run script. script: type: string description: Run script. helptext: type: string description: Sample help text for run script. notes: type: string description: Notes for run script. inputplaceholder: type: string description: Sample values for placeholders in run script. inputClass: type: string description: null retWINDOWS: type: array description: Run scripts for Windows devices. items: type: object properties: scriptid: type: string description: ID of the run script. scripttype: type: string description: Run script type. title: type: string description: Title of the run script. script: type: string description: Run script. helptext: type: string description: Sample help text for run script. notes: type: string description: Notes for run script. inputplaceholder: type: string description: Sample values for placeholders in run script. inputClass: type: string description: null retANDROIDVR: type: array description: Run scripts for AndroidVR. items: type: object properties: scriptid: type: string description: ID of the run script. scripttype: type: string description: Run script type. title: type: string description: Title of the run script. script: type: string description: Run script. helptext: type: string description: Sample help text for run script. notes: type: string description: Notes for run script. inputplaceholder: type: string description: Sample values for placeholders in run script. inputClass: type: string description: null status: type: boolean description: Status of the operation, indicating whether the run scripts were successfully retrieved. example: true example: message: Successfully retrieved run script details. data: retALL: - scriptid: '1043' scripttype: ALLDEVICES title: Change Device’s Screen Brightness script: "!#suremdm\r\nSetScreenBrightness(%input~text%)" helptext: '' notes: Change Device Brightness inputplaceholder: '0 – 255' inputClass: '' retKNOX: - scriptid: '2010' scripttype: KNOX title: To deactivate nix admin on Device script: "!#suremdm\r\ndeactivateadmin(com.nix)" helptext: '' notes: To deactivate admin inputplaceholder: '' inputClass: '' retSHELL: - scriptid: '3004' scripttype: SHELL title: Clear App Data script: am broadcast -a com.nix.COMMUNICATOR -e command clearAppData -e packages %input~text% helptext: '' notes: Clears specific App Data mentioned in script inputplaceholder: 'package1,package2,...packageN' inputClass: '' retEA: - scriptid: '4019' scripttype: EA title: Added runscript to allow and deny runtime permissions script: |2- !#suremdm allowRuntimePermissions(%input~text%) helptext: '' notes: To Allow/Deny Runtime permissions inputplaceholder: 'true/false' inputClass: '' retIOS: - scriptid: '10000' scripttype: IOS title: Send Analytics Data Immediately script: pull_analytics_data helptext: '' notes: Commands the device to send its web browsing history to server immediately inputplaceholder: '' inputClass: '' retWINDOWS: - scriptid: '11005' scripttype: WINDOWS title: Disable USB for Windows device script: reg add "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR" /v "Start" /t REG_DWORD /d "4" /f helptext: '' notes: Disables the USB access on Windows Machine inputplaceholder: '' inputClass: '' retANDROIDVR: - scriptid: '20001' scripttype: ANDROIDVR title: Allow Applications on SureLock Home screen script: "!#suremdm\r\nallowedApps(%input~text%)" helptext: '' notes: '' inputplaceholder: 'package name' inputClass: '' status: true WhitelistPayload: type: array items: type: string description: Array of device ID(s) to be whitelisted. BlacklistOutput: type: object properties: message: type: string description: Message indicating the success or failure of retrieving blacklist details. example: Successfully retrieved blacklist details or Failed to retrieve blacklist details. data: type: object properties: total: type: integer description: Total number of blacklisted devices. example: 0 rows: type: array description: An array of devices that are blacklisted. items: type: object properties: DeviceID: type: string description: ID of the device allocated by SureMDM. example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d Name: type: string description: Name of the device. example: John Doe Model: type: string description: Model name of the device. example: Lenovo TB-8504X Platform: type: string description: Platform used by the device (e.g., Android, iOS). example: Android LastConnected: type: string description: Timestamp when the device last connected. example: '5/6/2019 4:58:28 AM' SerialNumber: type: string description: Serial number of the device. example: 12345ABC6789 IMEI: type: string description: International Mobile Equipment Identity (IMEI) number of the device. example: 358240051111110 status: type: boolean description: Status of the operation, indicating whether the blacklist details were successfully retrieved. example: true example: message: Successfully retrieved blacklist details. data: total: 2 rows: - DeviceID: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d Name: John Doe Model: Lenovo TB-8504X Platform: Android LastConnected: '5/6/2019 4:58:28 AM' SerialNumber: 12345ABC6789 IMEI: 358240051111110 - DeviceID: 3ddf21872-5a7b-49b3-b42e-6f73e4249bc3 Name: Jane Smith Model: Samsung Galaxy S10 Platform: Android LastConnected: '5/6/2019 5:30:15 AM' SerialNumber: 54321XYZ9876 IMEI: 358240051111111 status: true CustomPropertyGetApiResponse: type: object properties: message: type: string description: Message indicating the success or failure of retrieving custom property details. example: Data Fetched Successfully. data: type: object properties: total: type: integer description: Total number of custom properties retrieved. example: 10 rows: type: array description: An array of custom property entries. items: type: object properties: _id: type: string description: Unique identifier for the custom property. example: "a535eded-c45d-444e-b2ae-6028e08888a3" CustomPropertiesKey: type: string description: The key for the custom property. example: "sadd" CustomPropertiesDataType: type: string description: | Specifies the data type of the custom property. The following data types are supported: - **String**: A sequence of characters. - **Number**: Numeric values. - **Date**: Date values. - **Boolean**: True or False values. - **Enum**: A predefined set of possible values. These options are available for selection when defining custom properties in the system. example: "String" CustomPropertiesValue: type: string description: The value of the custom property. example: "" CustomerID: type: string description: Customer ID associated with the property (if any). example: null SendToDevice: type: boolean description: Flag to indicate if the property should be sent to the device. example: false GroupPath: type: string description: The group path associated with the device (if any). example: null Time: type: string description: Timestamp of the custom property. example: "0001-01-01T00:00:00" status: type: integer description: | Status of the custom property. - For custom properties, the value of this field will always be **`0`** in all cases. example: 0 isDerived: type: boolean description: | Flag indicating if the property is derived. - For custom properties, the value of this field will always be **`false`** in all cases. example: false propertyType: type: string description: | Defines the type of the property. - For custom properties, this field will always appear as **`null`** in the response. - It is included to help differentiate between various types of properties within the system. The value remains **`null`** for all custom properties in the GET API response. example: null CustomPropertiesPlatformType: type: string description: | Specifies the platform type to which the custom property applies. The supported platform types are: **Android**, **Linux**, **Windows**, **macOS**, **AndroidWear** and **All**. Ensure that the value matches one of these options to avoid validation errors. example: "All" Mask: type: boolean description: | Indicates whether the value of the custom property should be masked. - Masking is **only supported for Linux**. - For other platforms (e.g., Windows, macOS), masking is not allowed. - When enabled (`true`), the masked value will not be visible in plain text and will follow the platform's masking rules. example: false RetrieveValueFromScript: type: boolean description: Flag to indicate if the value should be retrieved from a script. example: false CustomPropertyScript: type: string description: | The script associated with the custom property, as returned in the API response. - This field refers to the **Base64-encoded script** used to retrieve the custom property value. - It will always contain the script in Base64 format and will never include the script in plain JSON format. If needed, decode the Base64 value to view the script in a readable format. example: "" ScriptExecutionContext: type: string description: | The execution context for PowerShell scripts associated with the custom property, applicable when `RetrieveValueFromScript` is true. Possible values: - `1`: System Context. - `2`: Currently Logged-in User's Account Context. example: "1" TimeInterval: type: integer description: | Specifies the frequency, in minutes, at which the custom property is retrieved. - The minimum allowed value is **15 minutes**. example: 60 status: type: boolean description: Status of the operation, indicating whether the custom property details were successfully retrieved. example: true example: message: Data Fetched Successfully. data: total: 10 rows: - _id: "a535eded-c45d-444e-b2ae-6028e08888a3" CustomPropertiesKey: "sadd" CustomPropertiesDataType: "String" CustomPropertiesValue: "" CustomerID: null SendToDevice: false GroupPath: null Time: "0001-01-01T00:00:00" status: 0 isDerived: false propertyType: null CustomPropertiesPlatformType: "All" Mask: false RetrieveValueFromScript: false CustomPropertyScript: "" ScriptExecutionContext: "1" TimeInterval: 60 - _id: "a9407204-bd51-4029-adc0-6bd3335710ef" CustomPropertiesKey: "ffer" CustomPropertiesDataType: "String" CustomPropertiesValue: "" CustomerID: null SendToDevice: false GroupPath: null Time: "0001-01-01T00:00:00" status: 0 isDerived: false propertyType: null CustomPropertiesPlatformType: "Android" Mask: false RetrieveValueFromScript: true CustomPropertyScript: "dGZkM3JmZHM=" ScriptExecutionContext: "1" TimeInterval: 75 - _id: "4e094c5c-b8d9-41f2-b947-559480617964" CustomPropertiesKey: "CustomProperties_New" CustomPropertiesDataType: "String" CustomPropertiesValue: "" CustomerID: null SendToDevice: false GroupPath: null Time: "0001-01-01T00:00:00" status: 0 isDerived: false propertyType: null CustomPropertiesPlatformType: "All" Mask: false RetrieveValueFromScript: false CustomPropertyScript: "" ScriptExecutionContext: "1" TimeInterval: 60 - _id: "a033033e-1512-428e-9cdb-5159dd575eed" CustomPropertiesKey: "NoScriptMasked" CustomPropertiesDataType: "String (Masked)" CustomPropertiesValue: "" CustomerID: null SendToDevice: false GroupPath: null Time: "0001-01-01T00:00:00" status: 0 isDerived: false propertyType: null CustomPropertiesPlatformType: "Linux" Mask: false RetrieveValueFromScript: false CustomPropertyScript: "" ScriptExecutionContext: "" TimeInterval: 0 - _id: "2843c78a-0566-4109-a2ca-a920bdc91f6f" CustomPropertiesKey: "Aditya" CustomPropertiesDataType: "String" CustomPropertiesValue: "" CustomerID: null SendToDevice: false GroupPath: null Time: "0001-01-01T00:00:00" status: 0 isDerived: false propertyType: null CustomPropertiesPlatformType: "Linux" Mask: false RetrieveValueFromScript: false CustomPropertyScript: "" ScriptExecutionContext: "" TimeInterval: 0 - _id: "37b5b05c-5484-4668-b8ff-321e101983d0" CustomPropertiesKey: "Prajwal" CustomPropertiesDataType: "String" CustomPropertiesValue: "" CustomerID: null SendToDevice: false GroupPath: null Time: "0001-01-01T00:00:00" status: 0 isDerived: false propertyType: null CustomPropertiesPlatformType: "Linux" Mask: false RetrieveValueFromScript: false CustomPropertyScript: "" ScriptExecutionContext: "" TimeInterval: 0 status: true CallLogOutput: type: object properties: message: type: string description: Message indicating the success or failure of retrieving call logs. example: Successfully retrieved call logs or Failed to retrieve call logs. data: type: array description: An array of call logs. items: type: object properties: ID: type: string description: ID of the call log. example: '5cd1328851c16280c0f6055a' CallType: type: string description: Type of call (Incoming, Outgoing, Missed, Rejected). example: 'Incoming' Name: type: string description: Contact name. example: 'Joe' PhoneNumber: type: string description: Phone number. example: '+919999999999' Date: type: string description: Date and time of the call. example: '2019-05-07T07:05:35Z' Duration: type: string description: Call duration in seconds. example: '167' status: type: boolean description: Status of the operation, indicating whether the call logs were successfully retrieved. example: true example: message: Successfully retrieved call logs. data: - ID: 5cd1328851c16280c0f6055a CallType: Incoming Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:05:35Z' Duration: '167' - ID: 5cd1328851c16280c0f6055b CallType: Outgoing Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:10:35Z' Duration: '18' - ID: 5cd12d9b51c16280c0f603a5 CallType: Rejected Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:10:35Z' Duration: '0' - ID: 5cd12d9b51c16280c0f603a6 CallType: Missed Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:10:35Z' Duration: '45' status: true DeviceLogOutput: type: object properties: message: type: string description: Message indicating the success or failure of retrieving device logs. example: Successfully retrieved device logs or Failed to retrieve device logs. data: type: array description: An array of device logs. items: type: object properties: Time: type: string description: Time stamp when the log record was created. example: '2019-04-03T04:50:10.818Z' Message: type: string description: Details of the log record. example: '"New device(Client0017) registered"' Type: type: string description: Type of log record. example: 'System Log' status: type: boolean description: Status of the operation, indicating whether the device logs were successfully retrieved. example: true example: message: Successfully retrieved device logs. data: - Time: '2019-04-03T04:50:10.818Z' Message: '"New device(Client0017) registered"' Type: 'System Log' - Time: '2019-04-04T05:10:12.345Z' Message: '"Device(Client0018) unregistered"' Type: 'Error Log' - Time: '2019-04-05T06:20:30.456Z' Message: '"Device(Client0019) updated firmware"' Type: 'Update Log' status: true SMSLogOutput: type: object properties: message: type: string description: Message indicating the success or failure of retrieving SMS logs. example: Successfully retrieved SMS logs or Failed to retrieve SMS logs. data: type: array description: An array of SMS logs. items: type: object properties: ID: type: string description: ID of the SMS log. example: '5cd1328851c16280c0f6055a' SmsType: type: string description: Type of the SMS. example: '1' enum: - '1' # Inbox - '2' # Sent - '3' # Draft - '4' # Outbox - '5' # Failed - '6' # Queued Name: type: string description: Contact name. example: 'Joe' PhoneNumber: type: string description: Phone number. example: '+919999999999' Date: type: string description: Date and time of the SMS. example: '2019-05-07T07:05:35Z' Message: type: string description: The content of the SMS message. example: '"Hello !"' status: type: boolean description: Status of the operation, indicating whether the SMS logs were successfully retrieved. example: true example: message: Successfully retrieved SMS logs. data: - ID: 5cd1328851c16280c0f6055a SmsType: '1' Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:05:35Z' Message: '"Hello !"' - ID: 5cd1328851c16280c0f6055b SmsType: '2' Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:10:35Z' Message: '"Hi !"' - ID: 5cd12d9b51c16280c0f603a5 SmsType: '5' Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:10:35Z' Message: '"Outbox message"' - ID: 5cd12d9b51c16280c0f603a6 SmsType: '5' Name: Joe PhoneNumber: '+919999999999' Date: '2019-05-07T07:10:35Z' Message: '"Hello !"' status: true DataUsageOutput: type: object properties: message: type: string description: Message indicating the success or failure of retrieving data usage information. example: Successfully retrieved data usage information or Failed to retrieve data usage information. data: type: object description: Data usage information for a specific device. properties: DeviceId: type: string description: 'ID of the target device.
For example, 22c245da-df91-4bd2-9ee9-75a9ccf61142' example: null DeviceName: type: string description: Name of the device. example: null DeviceTotalWifiDataUsage: type: integer description: Total WiFi data usage (in bytes). example: 0 DeviceTotalMobileDataUsage: type: integer description: Total mobile data usage (in bytes). example: 0 DeviceTotalRoamingDataUsage: type: integer description: Total roaming data usage (in bytes). example: 0 AppsDataUsage: type: array description: Data usage of apps on the device. items: type: object properties: {} DataUsage: type: array description: Data usage details for the device, if any. items: type: object properties: {} TagIds: type: array description: List of tag IDs associated with the device. items: type: string example: "01092024-30092024" CurrentTagId: type: string description: ID of the current tag associated with the device. example: "01092024-30092024" CurrentCycleStartDate: type: string description: Start date of the current data usage cycle. example: "0001-01-01T00:00:00" CurrentCycleEndDate: type: string description: End date of the current data usage cycle. example: "0001-01-01T00:00:00" PrevCycleStartDate: type: string description: Start date of the previous data usage cycle. example: "0001-01-01T00:00:00" PrevCycleEndDate: type: string description: End date of the previous data usage cycle. example: "0001-01-01T00:00:00" status: type: boolean description: Status of the operation, indicating whether the data usage information was successfully retrieved. example: true example: message: Successfully retrieved data usage information. data: DeviceId: null DeviceName: null DeviceTotalWifiDataUsage: 0 DeviceTotalMobileDataUsage: 0 DeviceTotalRoamingDataUsage: 0 AppsDataUsage: [] DataUsage: [] TagIds: [] CurrentTagId: "01092024-30092024" CurrentCycleStartDate: "0001-01-01T00:00:00" CurrentCycleEndDate: "0001-01-01T00:00:00" PrevCycleStartDate: "0001-01-01T00:00:00" PrevCycleEndDate: "0001-01-01T00:00:00" status: true BlacklistSuccessResponseModel: type: object properties: message: type: string description: A message indicating that the devices were blacklisted successfully. example: Devices blacklisted successfully. data: type: string nullable: true description: No data is returned in this case (null). example: null status: type: boolean description: Status of the operation. example: true BlacklistFailureResponseModel: type: object properties: message: type: string description: A message indicating that the device blacklist operation failed. example: Failed to blacklist devices. data: type: string nullable: true description: No data is returned in this case (null). example: null status: type: boolean description: Status of the operation. example: false WhitelistSuccessResponseModel: type: object properties: message: type: string description: A message indicating that the devices have been whitelisted successfully. example: Devices whitelisted successfully. data: type: string nullable: true description: No data is returned in this case (null). example: null status: type: boolean description: Status of the operation. example: true WhitelistFailureResponseModel: type: object properties: message: type: string description: A message indicating that the operation to whitelist devices has failed. example: Failed to whitelist devices. data: type: string nullable: true description: No data is returned in this case (null). example: null status: type: boolean description: Status of the operation. example: false ApprovedDeviceCountResponseModel: type: object properties: message: type: string description: A message indicating the approved device count. example: "Approved Device Count: 5" data: type: integer description: The count of approved devices. example: 5 status: type: boolean description: Status of the operation. example: true ApprovedDevicesResponseModel: type: object properties: message: type: string description: A message indicating that the operation was successful. example: Devices approved successfully. data: type: integer description: Number of devices approved. example: 2 status: type: boolean description: Status of the operation. example: true UnapprovedOutput: type: object properties: message: type: string description: Message indicating the success or failure of retrieving unapproved devices. example: Successfully retrieved unapproved devices or Failed to retrieve unapproved devices. data: type: array description: An array of unapproved devices. items: type: object properties: DeviceID: type: string description: ID of the device allocated by SureMDM. example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d DeviceName: type: string description: Name of the device. example: John Doe DeviceModel: type: string description: Model name of the device. example: Lenovo TB-8504X DevicePlatform: type: string description: Platform used by the device (e.g., Android, iOS). example: Android LastConnected: type: string description: Timestamp when the device last connected. example: '5/6/2019 4:58:28 AM' status: type: boolean description: Status of the operation, indicating whether the unapproved devices were successfully retrieved. example: true example: message: Successfully retrieved unapproved devices. data: - DeviceID: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d DeviceName: John Doe DeviceModel: Lenovo TB-8504X DevicePlatform: Android LastConnected: '5/6/2019 4:58:28 AM' - DeviceID: 3ddf21872-5a7b-49b3-b42e-6f73e4249bc3 DeviceName: Jane Smith1` DeviceModel: Samsung Galaxy S10 DevicePlatform: Android LastConnected: '5/6/2019 5:30:15 AM' status: true SuccessDeviceResponseModel: type: object properties: message: type: string description: A message indicating that the operation was successful. example: Success data: type: boolean description: Contains the result data, indicating if the operation returned valid data or not. example: true status: type: boolean description: Status of the operation, true indicates success. example: true NoDevicesResponseModel: type: object properties: message: type: string description: A message indicating no devices were available to assign. example: No devices to assign data: type: boolean description: Contains the result data, usually `false` in case of failure. example: false status: type: boolean description: Status of the operation. example: false DeviceDetailResponseModel: type: object properties: message: type: string description: Status message of the request. example: "Success" data: type: object properties: rows: type: array items: type: object properties: DeviceID: type: string description: Unique identifier for the device. example: "dadfedb6-e59e-4c86-9023-5de6169f636e" ConnectionStatus: type: string description: The current connection status of the device. example: "Online" CustomerID: type: string description: Identifier for the customer. example: "1" GroupID: type: string description: Group ID the device is part of, if any. example: "null" DeviceIPAddress: type: string description: The IP address of the device. example: "203.145.52.30" DeviceName: type: string description: The name assigned to the device. example: "Client0130" DeviceUserId: type: string description: Identifier for the user associated with the device. example: "N/A" LastTimeStamp: type: string format: date-time description: The timestamp of the last update. example: "2024-08-23T10:41:48.877Z" DeviceModelName: type: string description: The model name of the device. example: "Infinix X6816C" PlatformType: type: string description: The platform type of the device (e.g., Android). example: "Android" Operator: type: string description: The network operator for the device. example: "" Battery: type: integer description: The current battery percentage of the device. example: 23 PhoneSignal: type: integer description: The strength of the phone signal. example: 0 AgentVersion: type: number description: The version of the agent software running on the device. example: 27.39009 SureLockVersion: type: number description: The version of SureLock software on the device. example: -1 SureFoxVersion: type: number description: The version of SureFox software on the device. example: -1 SureVideoVersion: type: number description: The version of SureVideo software on the device. example: -1 AgentFormatVersion: type: string description: The formatted version of the agent software. example: "27.39.09" SureLockFormatVersion: type: string description: The formatted version of the SureLock software. example: "-1" SureFoxFormatVersion: type: string description: The formatted version of the SureFox software. example: "-1" SureVideoFormatVersion: type: string description: The formatted version of the SureVideo software. example: "-1" DefaultHome: type: string description: The package name of the default home application. example: "com.transsion.XOSLauncher" IMEI: type: string description: The IMEI number of the device. example: "N/A" IMEI2: type: string description: The second IMEI number (if dual SIM). example: "N/A" MEID: type: string description: The MEID of the device. example: "N/A" AndroidID: type: string description: The Android ID of the device. example: "ed2ed2003914fd3c" IMSI: type: string description: The IMSI of the device. example: "N/A" PhoneNumber: type: string description: The phone number associated with the device. example: "" SerialNumber: type: string description: The serial number of the device. example: "N/A" TrackingOn: type: integer description: Indicates if tracking is enabled on the device. example: 0 Protocol: type: string description: The communication protocol version used by the device. example: "1" RootStatus: type: string description: Indicates whether the device is rooted. example: "0" MacAddress: type: string description: The MAC address of the device. example: "N/A" DeviceTimeStamp: type: string format: date-time description: Timestamp of the device's last known status. example: "2024-08-23T16:11:47Z" WifiSignal: type: integer description: The strength of the WiFi signal. example: 96 WifiSSID: type: string description: The SSID of the WiFi network. example: "Lab-42G" DeviceLocalIPAddress: type: string description: The local IP address of the device. example: "172.16.107.129" TotalPhysicalMemory: type: integer description: Total physical memory in bytes. example: 3880710144 AvailablePhysicalMemory: type: integer description: Available physical memory in bytes. example: 1431228416 MemoryStorageAvailable: type: integer description: Available storage memory in bytes. example: 45677101056 AvailExtStorageMemory: type: integer description: Available external storage memory in bytes. example: 0 TotalExtStorageMemory: type: integer description: Total external storage memory in bytes. example: 0 StorageMemoryTotal: type: integer description: Total storage memory in bytes. example: 64000000000 KnoxStatus: type: string description: Knox security status of the device. example: "0" PhoneRoaming: type: string description: Indicates whether the phone is roaming. example: "" BatteryChemistry: type: string description: The type of battery chemistry (e.g., Li-ion). example: "Li-ion" BackupBatteryPercent: type: string description: The backup battery percentage. example: "N/A" BatteryHealth: type: string description: The current health of the device battery. example: "GOOD" OSVersion: type: string description: The operating system version of the device. example: "ANDROID 11" MediaPerformanceClass: type: string description: Media performance class. example: "" ReleaseVersion: type: string description: The release version of the operating system. example: "11" DeviceRegistered: type: string format: date-time description: The timestamp of when the device was registered. example: "2024-08-23T10:40:11.744Z" CpuUsage: type: integer description: CPU usage percentage. example: 92 GpuUsage: type: integer description: GPU usage percentage. example: -1 Temperature: type: integer description: Device temperature in degrees Celsius. example: 32 DataUsage: type: integer description: Data usage of the device in bytes. example: 0 AfwProfile: type: string description: Android for Work (AFW) profile status. example: "2" Isenrolled: type: string description: Indicates if the device is enrolled. example: "1" MobileDataUsageTrackingOn: type: integer description: Indicates if mobile data usage tracking is enabled. example: 1 batteryState: type: string description: The state of the device battery. example: "Normal" SureLockLicense: type: string description: SureLock license information. example: "N/A" SureFoxLicense: type: string description: SureFox license information. example: "N/A" SureVideoLicense: type: string description: SureVideo license information. example: "N/A" SureLockAdmin: type: string description: SureLock admin information. example: "N/A" SureFoxAdmin: type: string description: SureFox admin information. example: "N/A" SureVideoAdmin: type: string description: SureVideo admin information. example: "N/A" SureMDMNixAdmin: type: string description: SureMDM Nix admin information. example: "N/A" NixPollingType: type: integer description: Nix polling type. example: 6 NetworkType: type: string description: The type of network the device is using. example: "2" GPSEnabled: type: integer description: Indicates if GPS is enabled on the device. example: 1 AfwStatus: type: integer description: Android for Work (AFW) status of the device. example: 2 SimSerialNumber: type: string description: Serial number of the SIM card. example: "UNKNOWN" BluetoothEnabled: type: integer description: Indicates if Bluetooth is enabled on the device. example: 1 BSSID: type: string description: BSSID of the Wi-Fi network. example: "7e:a7:41:6f:e6:74" USBPluggedIn: type: integer description: Indicates if the device is connected via USB. example: 0 SureLockSettingsVersionCode: type: string description: Version code of SureLock settings. example: "" OsBuildNumber: type: string description: OS build number of the device. example: "X6816C-ST683SBCDS-R-GL-240314V21" RealDeviceName: type: string description: Actual name of the device. example: "Infinix HOT 12 Play" DeviceApprovedStatus: type: integer description: Approval status of the device. example: 1 DeviceUserName: type: string description: Name of the device user. example: "N/A" SecurityPatchDate: type: string format: date-time description: Security patch date of the device. example: "2024-02-04T18:30:00Z" DeviceGroupPath: type: string description: Device group path. example: "Home" SureLockPermissionData: type: string description: SureLock permission data. example: "N/A" MTPSystemScanThreatCount: type: integer description: Number of system scan threats detected by MTP. example: 0 IsMobileHotSpotEnabled: type: string description: Indicates if mobile hotspot is enabled on the device. example: "0" IsEncryptionEnabled: type: string description: Indicates if encryption is enabled on the device. example: "1" CtsProfileMatch: type: string description: CTS profile match status. example: "" BasicIntegrity: type: string description: Basic integrity status. example: "" VerifyAppEnable: type: string description: Indicates if Verify Apps is enabled. example: "0" ADBEnable: type: string description: Indicates if ADB is enabled. example: "0" AllowUnknownSource: type: string description: Indicates if installation from unknown sources is allowed. example: "1" DeviceTimeZone: type: string description: Timezone of the device. example: "Asia/Kolkata (GMT +05:30)" JobsFailed: type: integer description: Number of jobs that failed. example: 0 JobsInQueue: type: integer description: Number of jobs in the queue. example: 2 JobsDeployed: type: integer description: Number of jobs deployed. example: 2 GeoFence: type: integer description: Indicates if GeoFence is enabled. example: 0 NetworkFence: type: integer description: Indicates if NetworkFence is enabled. example: 0 TimeFence: type: integer description: Indicates if TimeFence is enabled. example: 0 DeviceBrand: type: string description: Brand of the device. example: "Infinix" DeviceManufacture: type: string description: Manufacturer of the device. example: "INFINIX MOBILITY LIMITED" PhysicalMemoryUsage: type: integer description: Percentage of physical memory usage. example: 36 StorageMemoryUsage: type: integer description: Percentage of storage memory usage. example: 71 LockedUsing: type: string description: Locking mechanism used. example: "-1" GoogleAdvertisingID: type: string description: Google Advertising ID of the device. example: "57e05e9d-523a-4c2e-85aa-2cc0c1d1bbfb" NetworkLoggingEnabled: type: string description: Indicates if network logging is enabled. example: "0" SecurityLoggingEnabled: type: string description: Indicates if security logging is enabled. example: "0" SystemUserCompliance: type: string description: Compliance status of the system user. example: "Unmonitored" ParentDeviceId: type: string description: Parent device ID. example: "N/A" JobsInProgress: type: integer description: Number of jobs in progress. example: 0 EnrollmentMode: type: integer description: Enrollment mode of the device. example: 0 HashCode: type: string description: Hash code of the device. example: "d52d2ab2" OSVersionSortVal: type: integer description: OS version sort value. example: 11000000000000000 IntelAMTStatus: type: string description: Intel AMT status. example: "N/A" IsUEMNix: type: string description: Indicates if the device is UEM Nix compliant. example: "1" SurelockStatus: type: string description: Surelock status. example: "11" Locale: type: string description: Locale setting of the device. example: "en-US" Hostname: type: string description: Hostname of the device. example: "" Processor: type: string description: Processor information. example: "AArch64 Processor rev 0 (aarch64)" PhoneSignalStrengthInDbm: type: integer description: Phone signal strength in dBm. example: 0 WifiSignalStrengthInDbm: type: integer description: Wi-Fi signal strength in dBm. example: -52 CPUTemperature: type: string description: CPU temperature. example: "N/A" SureDefenceVersion: type: string description: Version of SureDefence. example: "" OverallCompliance: type: string description: Overall compliance status. example: "Unmonitored" OSVersionCompliance: type: string description: Compliance status for the OS version of the device. example: "Unmonitored" RootedCompliance: type: string description: Compliance status for whether the device is rooted or not. example: "Unmonitored" OnlineDeviceConnectivityCompliance: type: string description: Compliance status for the device's online connectivity. example: "Unmonitored" SIMChangeCompliance: type: string description: Compliance status for SIM card changes on the device. example: "Unmonitored" PasswordPolicyCompliance: type: string description: Compliance status for the password policies on the device. example: "Unmonitored" BatteryCompliance: type: string description: Compliance status for the device's battery. example: "Unmonitored" BlacklistedApplicationsCompliance: type: string description: Compliance status for blacklisted applications on the device. example: "Unmonitored" WindowsHealthAttestationCompliance: type: string description: Compliance status for Windows Health Attestation. example: "Unmonitored" DeviceStorageCompliance: type: string description: Compliance status for the storage memory of the device. example: "Unmonitored" MobileNetworkConnectivityCompliance: type: string description: Compliance status for the mobile network connectivity. example: "Unmonitored" MobileStrengthCompliance: type: string description: Compliance status for the mobile signal strength. example: "Unmonitored" WifiStrengthCompliance: type: string description: Compliance status for the Wi-Fi signal strength. example: "Unmonitored" KioskEnabledCompliance: type: string description: Compliance status for kiosk mode enablement on the device. example: "Unmonitored" WindowsGenuineCompliance: type: string description: Compliance status for Windows genuine validation. example: "Unmonitored" WindowsUpdateCompliance: type: string description: Compliance status for Windows updates on the device. example: "Unmonitored" MobileThreatDefenceCompliance: type: string description: Compliance status for mobile threat defense on the device. example: "Unmonitored" SecurityPathLevelCompliance: type: string description: Compliance status for the security patch level of the device. example: "Unmonitored" LocationAccessCompliance: type: string description: Compliance status for location access on the device. example: "Unmonitored" AntivirusProtectionCompliance: type: string description: Compliance status for antivirus protection on the device. example: "Unmonitored" NetworkSecurityCompliance: type: string description: Compliance status for network security on the device. example: "Unmonitored" DeviceSecurityCompliance: type: string description: Compliance status for the device's overall security settings. example: "Unmonitored" AntivirusExpiryCompliance: type: string description: Compliance status for the antivirus expiry on the device. example: "Unmonitored" AntiPhishingProtectionCompliance: type: string description: Compliance status for anti-phishing protection. example: "Unmonitored" HardwareChangeCompliance: type: string description: Compliance status for hardware changes on the device. example: "Unmonitored" PfwProfile: type: integer description: Profile ID for the device's power management settings. example: 0 InstallerPackage: type: string description: Package name of the installer used on the device. example: "com.google.android.packageinstaller" DeviceUpTimeComplaince: type: string description: Compliance status for the device uptime. example: "Unmonitored" FirewallCompliance: type: string description: Compliance status for the firewall settings on the device. example: "Unmonitored" PatchProfileCount: type: integer description: The number of patch profiles applied to the device. example: 0 JobScheduled: type: integer description: The number of jobs scheduled for the device. example: 0 DeviceLicenseID: type: string description: License ID of the device. example: "100000" AADDeviceId: type: string description: Azure Active Directory device ID. example: "" AADEnrollmentStatus: type: integer description: Enrollment status in Azure Active Directory. example: 0 ApplistTimestamp: type: string format: date-time description: Timestamp of the last app list sync. example: "2024-08-23T10:40:41.501Z" AdditionalLocalIP: type: string description: Additional local IP information for the device. example: "172.16.107.129 Wireless LAN interface (Wi-Fi)" UseWebRTC: type: boolean description: Indicates if WebRTC is used on the device. example: false RemoteSupportVersion: type: string description: Version of the remote support software installed on the device. example: "1" MemSyncStatus: type: integer description: Status of memory synchronization on the device. example: 0 SimSerialNumberSim2: type: string description: Serial number of the second SIM card on the device. example: "UNKNOWN" IMSISim2: type: string description: IMSI of the second SIM card on the device. example: "N/A" PhoneSignalSim2: type: integer description: Signal strength for the second SIM card on the device. example: 0 PhoneSignalStrengthInDbmSim2: type: integer description: Signal strength in dBm for the second SIM card on the device. example: 0 PhoneNumberSim2: type: string description: Phone number associated with the second SIM card on the device. example: "" OperatorSim2: type: string description: Operator name for the second SIM card on the device. example: "" extraInfoDetails: type: object description: Contains extra information about the device. properties: appVersions: type: array description: List of app versions installed on the device. items: type: string example: [""] customColsHeaders: type: array description: List of custom column headers. items: type: string example: [] customColsIds: type: array description: List of custom column IDs. items: type: string example: [""] customProperties: type: array description: List of custom properties for the device. items: type: string example: [""] maskedCustomProperties: type: array description: List of masked custom properties for the device. items: type: string example: [] status: type: integer description: HTTP status code of the response. example: 200 DeviceDetailModelResponse: type: array items: type: object properties: message: type: string description: Message indicating the success or failure of retrieving device details. example: Success data: type: array description: An array of device details. properties: DeviceID: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d ConnectionStatus: type: string description: It states whether the device is Online or Offline enum: - Online - Offline example: Online GroupID: type: string description: ID of the group allocated by the SureMDM
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: null DeviceIPAddress: type: string description: IP Address of device example: 000.000.0.000 DeviceName: type: string description: Name of the device set by the administrator example: Client0003 UserID: type: string description: User ID example: 'null' LastTimeStamp: type: string description: | Time stamp when device was last connected.
format: MM-DD-YYYY HH:MM:SS AM/PM example: '7/12/2018 7:05:13 AM' DeviceModelName: type: string description: Model name of device example: Lenovo TB-8504X PlatformType: type: string description: Platform Type of device
OS Type
Android
iOS
Windows
Windows CE
Windows MDM
Windows Mobile
Android Wear
Things
Linux
Android VR
Mac OS
example: Android Operator: type: string description: Telecom operator used by the device example: airtel Battery: type: string description: Battery left in device in unit of percentage example: '37' PhoneSignal: type: string description: Phone signal strength in terms of percentage example: '69' AgentVersion: type: string description: Nix Agent version number example: '12.29' SureLockVersion: type: string description: SureLock version number example: '11.44' SureFoxVersion: type: string description: SureFox version number example: '7.83' SureVideoVersion: type: string description: SureVideo version number example: '3.30' DefaultHome: type: string description: Package name of default launcher example: com.lenovo.launcher Notes: type: string description: Custom notes made for device example: 'null' IMEI: type: string description: IMEI number of the device example: '123456789012345' IMSI: type: string description: IMSI number of the device example: '123456789012345' PhoneNumber: type: string description: Phone number used by the device example: 'null' SerialNumber: type: string description: Serial Number of device which is been assigned by manufacturer example: HGAFEZ0C TrackingOn: type: string description: It states that whether location tracking is enabled or disabled in device
Description Value
On 1
Off 0
N/A null
example: '0' TrackingInterval: type: string description: Tracking periodicity in minutes example: '10' CallLogTrackingOn: type: string description: It states that whether call log tracking is enabled or disabled
Description Value
On 1
Off 0
N/A null
example: '1' CallLogTrackingInterval: type: string description: Call log tracking periodicity in minutes example: '15' Protocol: type: string description: |- It states whether device uses HTTPS or HTTP protocol. Same can be configured under Nix Settings.
Description Value
Unsecured (HTTP) 0
Secured (HTTPS) 1
example: '0' JobsFailed: type: string description: |- It states that the searched job is in which state
Description Value
Failed 0
Success 1
Pending 2
In-Progress 3
example: 'null' RootStatus: type: string description: |- It states whether the device is rooted or unrooted
Description Value
Unrooted (Rootstatus = no) 0
Granted 1
Rooted (Rootstatus = yes) 3
Signed 4
Unknown Any value except above enum values
example: '1' MacAddress: type: string description: Wi-Fi MAC Address of device example: '1A:1B:1C:11:11:1D' SecurityPolicyPickedByDevice: type: string description: It states whether security policy is been picked up device example: 'null' SecurityPolicyEnablePassword: type: string description: 'If security policy is enabled, then this field states that password policy is enabled or not' example: 'null' SecurityPolicyMinPasswordLength: type: string description: 'Minimum password length, if password policy is enabled' example: 'null' SecurityPolicyPasswordQuality: type: string description: 'It is password strength, it could be alphabetic, numeric or alphanumeric' example: 'null' SecurityPolicyPasswordTimeout: type: string description: Time lapse before device auto-locks example: 'null' SecurityPolicyPasswordMaxAttempts: type: string description: Maximum failed password attempts before device wipes example: 'null' EnablePeripheralPolicy: type: string description: It is a security policy for peripherals. It returns true or false. example: 'true' DisableWifi: type: string description: 'If peripheral settings are enforced, it could disable Wi-Fi.' example: 'null' DisableBluetooth: type: string description: 'If peripheral settings are enforced, it could disable bluetooth.' example: 'null' DisableCamera: type: string description: 'If peripheral settings are enforced, it could disable camera.' example: 'null' EnforceEncrypyion: type: string description: Status of message example: 'null' DisableGPS: type: string description: 'If peripheral settings are enforced, it could disable GPS.' example: 'null' DisableMobileData: type: string description: 'If peripheral settings are enforced, it could disable mobile data.' example: 'null' JobsInQueue: type: string description: Count of jobs in queue example: 0 JobsDeployed: type: string description: Count of jobs deployed example: 2 DeviceTimeStamp: type: string description: 'Date and Time of device last connected in the format of MM-DD-YYYY HH:MM:SS AM/PM' example: '6/20/2019 2:46:28 PM' WifiSignal: type: string description: Strength of Wi-Fi in terms of percentage example: '6/20/2019 2:46:28 PM' WifiSSID: type: string description: Name of WiFi in which device is connected example: Home-Network DeviceLocalIPAddress: type: string description: Local IP Address of device example: 123.456.789.01 TotalPhysicalMemory: type: string description: Total Physical Memory(RAM) present in device. It's in units of Bytes example: 1969266688 AvailablePhysicalMemory: type: string description: Physical Memory available for use. It's in units of Bytes example: 973860864 TotalStorageMemory: type: string description: Total storage present in device. It's in units of Bytes example: 9720680448 AvailableStorageMemory: type: string description: Storage available for use. It's in units of Bytes example: 1407455232 KnoxStatus: type: string description: | It states that KnoxStatus is enabled or disabled in device
Description
Value
Yes 2
No 1
N/A Any value other than 1 and 2
example: 0 PhoneRoaming: type: string description: It states that whether phone is in roaming state or not example: 'No' BatteryChemistry: type: string description: Type of battery enum: - Li-ion - Li-poly - Ni-Cd example: Li-ion BackupBatteryPercent: type: string description: Backup battery percentage example: null OSVersion: type: string description: OS version of device example: NOUGAT DataUsage: type: string description: Data usage of device in Bytes example: 2397708393 SecurityPolicyPickedByDeviceApplied: type: string description: It states whether security policy is been picked up device example: 'null' SecurityPolicyEnablePasswordApplied: type: string description: 'If security policy is enabled, then this field states that password policy is enabled or not' example: 'null' SecurityPolicyMinPasswordLengthApplied: type: string description: 'Minimum password length, if password policy is enabled' example: 'null' SecurityPolicyPasswordQualityApplied: type: string description: 'It is password strength, it could be alphabetic, numeric or alphanumeric' example: 'null' SecurityPolicyPasswordTimeoutApplied: type: string description: Time lapse before device auto-locks example: 'null' SecurityPolicyPasswordMaxAttemptsApplied: type: string description: Maximum failed password attempts before device wipes example: 'null' EnablePeripheralPolicyApplied: type: string description: It is a security policy for peripherals. It returns true or false. example: 'true' DisableWifiApplied: type: string description: 'If peripheral settings are enforced, it could disable Wi-Fi.' example: 'null' DisableBluetoothApplied: type: string description: 'If peripheral settings are enforced, it could disable bluetooth.' example: 'null' DisableCameraApplied: type: string description: 'If peripheral settings are enforced, it could disable camera.' example: 'null' EnforceEncrypyionApplied: type: string description: Status of message example: 'null' DisableGPSApplied: type: string description: 'If peripheral settings are enforced, it could disable GPS.' example: 'null' DisableMobileDataApplied: type: string description: 'If peripheral settings are enforced, it could disable mobile data.' example: 'null' ReleaseVersion: type: string description: OS version of device example: 4.4.2 DeviceRegistered: type: string description: Date and Time of Device Registration example: '6/7/2019 4:26:37 AM' CpuUsage: type: string description: Usage of CPU in percentage example: '22' GpuUsage: type: string description: Usage of GPU example: '-1' Temperature: type: string description: Current Battery Temperature in (°C) or (F) based upon settings applied by user example: '28' SmsLogTrackingOn: type: string description: | It checks whether SMS Log Tracking is enabled or disabled:
Description Value
SMS Log Tracking Enabled
0
SMS Log Tracking Disabled

1
example: '0' SmsLogTrackingInterval: type: string description: If SMS Log Tracking is enabled the value indicates time period in minutes example: '15' AfwProfile: type: string description: |- Enabling a work profile allows organizations to manage the business data and apps they care about, but leave everything else on a device under the user’s control.
Description Value
Not Supported 1
Not Enrolled 2
Managed Device 3
Profile Owner 4
Device Owner 5
example: '1' Isenrolled: type: string description: | Whether IOS enrolled in the device.
Description Value
Yes
1,2 or null
No Any value other than specified above
example: 'null' IsSupervised: type: string description: |- The Supervised apple device (iPhone, iPad and iPod Touch) allows organizations (IT Admin) to gain extensive Remote supporting capability over the devices.
Description Value
1,2,null
Yes
Any value other than specified above No
example: 'null' CurrentWorkProfile: type: string description: Last profile applied on the device example: 'null' MobileDataUsageTrackingOn: type: string description: |- It states whether mobile data usage is being tracked or not:
Description
Value
On 1
Off 0
N/A null
example: '1' batteryState: type: string description: 'Current Battery of the device. It could be Charging, Normal and null (for offline devices)' example: Normal iOsVendorId: type: string description: Vendor ID of iOS Device example: Normal EnrollmentMode: type: string description: | Enrollment mode
DescriptionValue
Normal enrollment
Either "Nix enrollment" or "EMM enrollment"
0
Dual enrollment
"Nix enrollment" and "EMM enrollment" both
1
Note: "EMM enrollment" and "Dual enrollment" is applicable for windows OS only example: Normal AdditionalMAC: type: string description: MAC address of other network interfaces (for windows only) example: ' ' SureLockLicense: type: string description: |- It checks whether the device has an active license of SureLock
Description
Value
Yes 1
No 0
N/A null
example: '1' SureFoxLicense: type: string description: |- Whether the device has an active license of SureFox
Description
Value
Yes 1
No 0
N/A null
example: '1' SureVideoLicense: type: string description: |- Whether the device has an active license of SureVideo
Description
Value
Yes 1
No 0
N/A null
example: '1' SureLockAdmin: type: string description: |- Whether the device has administrator rights for Sure Lock
Description
Value
True (Yes) 1
False (No) 0
N/A null,2
example: '1' SureFoxAdmin: type: string description: |- Whether the device has administrator rights for Sure Fox
Description
Value
True (Yes) 1
False (No) 0
example: '1' SureVideoAdmin: type: string description: |- Whether the device has administrator rights for Sure Video
Description
Value
True (Yes) 1
False (No) 0
example: '1' SureMDMNixAdmin: type: string description: |
Description
Value
Is Admin (Yes) 1
Not an Admin (No) 0
example: '1' NixPollingType: type: string description: | whether the device is running on FCM or Normal Polling.
Description
Value
Periodic Polling 1
APNS 3
WNS 4
GCM 2
FCM 5
Normal Polling Values other than above enum values
example: '0' NetworkType: type: string description: | Type of network
Description
Value
Mobile Data 1
Wi-Fi 2
Ethernet 3
Bluetooth 4
VPN 5
Unknown Value except above enum values
example: '2' LocationTimeStamp: type: string description: 'Date and time of the last location available. Format is MM/DD/YYYY HR:MIN:SS AM/PM' example: '5/24/2019 6:28:41 AM' GeoFence: type: string description: | Geofencing allows administrators to create a virtual fence around a geographical location such as an office building or warehouse. You can apply geofencing policy to track devices as they move in or out of the fence. An administrator can limit what corporate resources (apps or data) are available on a device as it enters or leaves the virtual boundary. It checks whether GeoFence is applied to device or not.
Description
Value
Off 0
On 1
example: '0' TimeFence: type: string description: | Time fencing offers a convenient way for enterprises to apply restriction based-profiles on mobile devices at a scheduled time. For example, businesses can use time fencing to disable social media during working hours and enable it back post working hours. In another instance, this feature can also be used to disable employee smartphone camera as soon as they enter the office and keep it disabled for a specific/specified time frame. It checks whether TimeFence is applied to device or not.
Description
Value
Off 0
On 1
example: '0' NetworkFence: type: string description: | This feature allows an IT Admin to specify device behavior when it enters or exits a certain Wi-Fi network.It checks whether NetworkFence is applied to device or not.
Description
Value
Off 0
On 1
example: '0' ApplicationVersionList: type: string description: | Contains versions of applications that are selected in grid column, Application package name and version will be bundled together example: null CustomColumnsList: type: string description: List of custom columns selected example: null GPSEnabled: type: string description: | It states that whether GPS is enabled in device or not
Description
Value
Enabled 1
Disabled 0
N/A null
example: '1' BluetoothEnabled: type: string description: |- It states that whether Bluetooth is enabled in device or not
Description
Value
On 1
Off 0
N/A null
example: '1' USBPluggedIn: type: string description: |- It states whether USB is been plugged in to device
Description
Value
Plugged In 1
Plugged Out 0
N/A null
example: '1' SureLockSettingsVersionCode: type: string description: SureLock settings identifier example: null OsBuildNumber: type: string description: Device's OS Build Number example: PPR1.180610.011.G611FDDU1CSD8 MemoryStorageAvailable: type: string description: Free Storage Available in the device example: '' PhysicalMemoryAvailable: type: string description: Available RAM memory in device example: '' RealDeviceName: type: string description: Bluetooth name of the device. example: Galaxy On7 Prime BSSID: type: string description: Gives SSID address of the device example: '' SimSerialNumber: type: string description: Sim Serial Number or ICCID is a Sim Card Unique Identity Number which is generally found on the packet of Sim or on the back side of Sim Card example: '0000000000000000000' DeviceUserName: type: string description: Device name set by the device owner example: ABC's Phone DeviceApprovedStatus: type: string description: |- It states whether Device is Approved or not
Description
Value
Approved 1
Unapproved 0
example: '1' SecurityPatchDate: type: string description: Date of last received security patch example: '5/1/2019 12:00:00 AM' DeviceGroupPath: type: string description: Path of folder in which device is registered.Note For home group devices it will show null example: Home/test_rjt OrganizationUnit: type: string description: Name of the Organization example: '' AssetId: type: string description: Asset Id provided by GSuite to chrome OS devices enrolled in GSuite. (for Chrome OS only) example: '' LocationInfo: type: string description: null example: '' deprecated: true ActivationLockBypassCode: type: string description: 'Code which can be used to bypass Activation lock on iOS devices. Read more about activation lock [here](https://support.apple.com/en-in/HT201365)' example: '' SureLockPermissionData: type: string description: Permissions granted to SureLock example: '"isSurelockDefaultLauncher":false,"sureLockAdmin":true,"surelockKnox":"true","isSureLockUsageAccessEnabled":"true","isUsbDebuggingDisabled":true' MTPSystemScanTimeStamp: type: string description: Time Stamp of last MTP System Scan example: '' MTPSystemScanThreatCount: type: string description: Number of threats found during last system scan example: '' IsMobileHotSpotEnabled: type: string description: |- It states that whether the mobile hotspot is enabled or not
Description
Value
Off 0
On 1
N/A null
example: '0' IsEncryptionEnabled: type: string description: |- It states that whether data encryption is enabled or not
Description
Value
Yes 1
No 0
N/A null
example: '0' IMEI2: type: string description: Second IMEI Number of device example: '000000000000000' CtsProfileMatch: type: string description: | A stricter verdict of device integrity.
If the value of ctsProfileMatch is true, then the profile of the device running your app matches the profile of a device that has passed Android compatibility testing.
Description
Value
No 0
Yes Value except " " , null and n/a (Any numeric value)
N/A Value except numerical value
example: '0' BasicIntegrity: type: string description: | A more lenient verdict of device integrity.
If only the value of basicIntegrity is true, then the device running your app likely wasn't tampered with.
However, the device hasn't necessarily passed Android compatibility testing.
Description
Value
Fail 0
Pass Value except " " , null and n/a (Any numeric value)
N/A Value except numerical value
example: '0' VerifyAppEnable: type: string description: |- It states that whether apps should be checked for threats at the time of installation
Description
Value
Disabled 0
Enabled Value except " " , null and n/a (Any numeric value)
N/A Values except numerical value
example: '0' ADBEnable: type: string description: |- Android Debug Bridge (ADB) is a versatile command-line tool that lets you communicate with a device. The adb command facilitates a variety of device actions, such as installing and debugging apps, and it provides access to a Unix shell that you can use to run a variety of commands on a device
Description
Value
Enabled 1
Disabled 0
N/A null
example: '1' AllowUnknownSource: type: string description: |- Whether applications with unknown source should be blocked or allowed
Description
Value
Blocked 0
Allowed 1
N/A Value except numerical value
example: '1' DeviceTimeZone: type: string description: Time zone of place where device is located example: 'Asia/Kolkata (GMT +05:30)' ThingsData: type: string description: | Contains JSON data of connected things devices to it
(Things device includes printers, scanners etc) example: null JobsInProgress: type: string description: Count of in progress jobs example: '0' AndroidID: type: string description: 'Unique ID given to each device. It is used to identify your device for market downloads, specific gaming applications etc.' example: hc5dq94hyt3vv98 HashCode: type: string description: Unique alphanumeric value which helps in identification of an device example: b378e95c EfotaRegistrationStatus: type: string description: | Gives the status of device registration with Efota Server for Samsung Devices
DescriptionValue
Failed0
Success1
Pending2
DefaultAny value other than above value
example: 2 CurrentFirmwareVersion: type: string description: | Once device is registered with Efota server, Samsung devices will send the current firmware available in the device
DescriptionValue
Application ProcessorG920FXXU3DPDO
Consumer Software CustomizationG920FXXU3DPA1
Cellular ProcessorG920FOXA3DPD2
example: G920FXXU3DPDO CurrentUserWorkProfile: type: string description: User's work profile example: null IsLostModeEnable: type: string description: If lost mode is enabled on the device.
Lost Mode is a security feature aimed at protecting valuable information on your corporate devices in case of device theft. It lets you remotely lock down or wipe your misplaced or stolen Android devices.(for Samsung knox devices only) example: false status: type: boolean description: Status of the operation, indicating whether the device details were successfully retrieved. example: true DeviceAssignment: type: array items: type: object required: - DeviceId - GroupId properties: DeviceId: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). example: aa8b3b36-9684-42b6-996b-84c319df75ff GroupId: type: string description: 'ID of the destination group in which the user wants to move the device. This is allocated by the SureMDM
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API.' example: 1234f195-69a3-4f7d-9c94-957d27573987 SourceGroupId: type: string description: | ID of the source group from which the device is being moved. This represents the current group ID in which the device is presently present. **Key Points:** - This parameter is **optional** - For faster device movement and enhanced logging (which includes both source and destination group paths), it is **recommended** to include the SourceGroupId - For home group, the value should be **"null"** as a string Group ID can be retrieved using the [Get details of all groups](#operation/getDetailsOfAllGroups) API. example: "null" example: - DeviceId: aa8b3b36-9684-42b6-996b-84c319df75ff GroupId: 1234f195-69a3-4f7d-9c94-957d27573987 SourceGroupId: "null" SetDeviceName: type: object required: - DeviceId - DeviceName properties: DeviceId: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails). example: 1111111111111111111 DeviceName: type: string description: Name of the device which you want to change it to. example: John Doe - Device 101 PendingDeleteDevice: type: object required: - DeviceId - Action properties: DeviceId: type: string description: | ID of the device allocated by the SureMDM Or CSV string of DeviceIds to delete multiple devices
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API.
Note: Use CSV format to send multiple device IDs. example: 22c245da-df91-4bd2-9ee9-75a9ccf61142 Action: type: string description: Action to be performed enum: - SEND_TO_DELETED_LIST example: SEND_TO_DELETED_LIST example: DeviceId: 22c245da-df91-4bd2-9ee9-75a9ccf61142 Action: SEND_TO_DELETED_LIST DeleteDevice: type: object required: - DeviceId - Action properties: DeviceId: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API.
Note: Use [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) format to send multiple device IDs. example: 22c245da-df91-4bd2-9ee9-75a9ccf61142 Action: type: string description: Action to be performed enum: - DELETE_DEVICE example: DELETE_DEVICE example: DeviceId: 22c245da-df91-4bd2-9ee9-75a9ccf61142 Action: DELETE_DEVICE ForceDeleteFromPendingDelete: type: object required: - DeviceId - VerificationMsg - Action properties: DeviceId: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API.
Note: Use [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) format to send multiple device IDs. example: 22c245da-df91-4bd2-9ee9-75a9ccf61142 VerificationMsg: type: string description: Verification Code based on number of devices you want to permanently delete. example: “delete-3” if you want to delete 3 devices Action: type: string description: Action to be performed enum: - FORCEDELETE_DEVICE example: FORCEDELETE_DEVICE example: DeviceId: 22c245da-df91-4bd2-9ee9-75a9ccf61142 VerificationMsg: delete-3 Action: FORCEDELETE_DEVICE PostDeviceResponseModelForExternal: type: object properties: message: type: string description: Status message for the device registration or operation example: "Device registered successfully." data: type: object properties: rows: type: array description: List of registered device details items: type: object properties: DeviceID: type: string description: Unique identifier for the device example: "41bbf3b3-e32e-4d5b-9a62-936d0afdfa00" ConnectionStatus: type: string description: Connection status of the device example: "Online" DeviceIPAddress: type: string description: IP address of the device example: "49.249.31.18" DeviceName: type: string description: Name assigned to the device example: "Abhi547" LastTimeStamp: type: string format: date-time description: Last connection timestamp of the device example: "2025-02-24T07:01:51.234Z" DeviceModelName: type: string description: Model name of the device example: "SM-M156B" Battery: type: integer description: Battery level percentage example: 47 MemoryStorageAvailable: type: integer description: Available internal memory in bytes example: 110300274688 TotalExtStorageMemory: type: integer description: Total external storage memory in bytes example: 0 DeviceRegistered: type: string format: date-time description: Timestamp when the device was registered example: "2025-02-24T09:16:12.081Z" DeviceGroupPath: type: string description: Group path to which the device belongs example: "Home" LicenseExpiryDate: type: string format: date-time nullable: true description: License expiry date, if any example: null LicenseStartDate: type: string format: date-time nullable: true description: License start date, if any example: null LicenseStatus: type: string nullable: true description: Status of the license example: null ApplicationDetails: type: string nullable: true description: Reserved for future application detail fields example: null DeviceApplistDetails: type: array description: List of applications installed on the device items: type: object properties: AppID: type: string description: Unique identifier of the application example: "com.google.android.youtube" AppName: type: string description: Name of the application example: "YouTube" AppVersion: type: string description: Version of the application example: "20.05.35 (1552670144)" total: type: integer description: Total number of devices returned example: 1 extraInfoDetails: type: string nullable: true description: Any additional information details example: null status: type: boolean description: Indicates if the operation was successful. example: true PostDeviceResponseModel: type: object properties: message: type: string description: Status message for the device registration or operation example: "Device registered successfully." data: type: object properties: DeviceID: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d EnrollmentMode: type: string description: | Enrollment mode
DescriptionValue
Normal enrollment
Either "Nix enrollment" or "EMM enrollment"
0
Dual enrollment
"Nix enrollment" and "EMM enrollment" both
1
Note: "EMM enrollment" and "Dual enrollment" is applicable for windows OS only example: Normal LocationTimeStamp: type: string description: 'Date and time of the last location available. Format is MM/DD/YYYY HR:MIN:SS AM/PM' example: '5/24/2019 6:28:41 AM' DeviceName: type: string description: Name of the device set by the administrator example: Client0003 DeviceModelName: type: string description: Model name of device example: Lenovo TB-8504X PlatformType: type: string description: Platform Type of device
OS Type
Android
iOS
Windows
Windows CE
Windows MDM
Windows Mobile
Android Wear
Things
Linux
Android VR
Mac OS
example: Android LastTimeStamp: type: string description: | Time stamp when device was last connected.
format: MM-DD-YYYY HH:MM:SS AM/PM example: '7/12/2018 7:05:13 AM' AgentVersion: type: string description: Nix Agent version number example: '12.29' battery: type: string description: Battery left in device in units of percentage (%) example: 65 PhoneSignal: type: string description: Phone signal strength in terms of percentage example: '69' Operator: type: string description: Telecom operator used by the device example: airtel DeviceIPAddress: type: string description: IP Address of device example: 000.000.0.000 DeviceTimeStamp: type: string description: 'Date and Time of device last connected in the format of MM-DD-YYYY HH:MM:SS AM/PM' example: '6/20/2019 2:46:28 PM' PhoneRoaming: type: string description: It states that whether phone is in roaming state or not example: 'No' SureLockVersion: type: string description: SureLock version number example: '11.44' SureVideoVersion: type: string description: SureVideo version number example: '3.30' SureFoxVersion: type: string description: SureFox version number example: '7.83' RootStatus: type: string description: |- It states whether the device is rooted or unrooted
Description Value
Unrooted (Rootstatus = no) 0
Granted 1
Rooted (Rootstatus = yes) 3
Signed 4
Unknown Any value except above enum values
example: '1' KnoxStatus: type: string description: | It states that KnoxStatus is enabled or disabled in device
Description
Value
Yes 2
No 1
N/A Any value other than 1 and 2
example: 0 ReleaseVersion: type: string description: OS version of device example: 4.4.2 IMEI: type: string description: IMEI number of the device example: '123456789012345' DeviceRegistered: type: string description: Date and Time of Device Registration example: '6/7/2019 4:26:37 AM' DataUsage: type: string description: Data usage of device in Bytes example: 2397708393 CpuUsage: type: string description: CPU usage (in %) example: '22' GpuUsage: type: string description: Usage of GPU example: '-1' Temperature: type: string description: Current Battery Temperature in (°C) or (F) based upon settings applied by user example: '28' IsSupervised: type: string description: | The Supervised apple device (iPhone, iPad and iPod Touch) allows organizations (IT Admin) to gain extensive Remote supporting capability over the devices.
Description Value
1,2,null
Yes
Any value other than specified above No
example: 'null' Isenrolled: type: string description: | Refer the table below:
Description Value
Yes
1,2 or null
No Any value other than specified above
example: 'null' Notes: type: string description: Custom notes made for device example: 'null' NixPollingType: type: string description: | whether the device is running on FCM or Normal Polling.
Description
Value
Periodic Polling 1
APNS 3
WNS 4
GCM 2
FCM 5
Normal Polling Values other than above enum values
example: '0' NetworkType: type: string description: | Type of network
Description
Value
Mobile Data 1
Wi-Fi 2
Ethernet 3
Bluetooth 4
VPN 5
Unknown Value except above enum values
example: '2' SerialNumber: type: string description: Serial Number of device which is been assigned by manufacturer example: HGAFEZ0C PhoneNumber: type: string description: Phone number used by the device example: 'null' DeviceUserName: type: string description: Device name set by the device owner example: ABC's Phone GPSEnabled: type: string description: | It states that whether GPS is enabled in device or not
Description
Value
Enabled 1
Disabled 0
N/A null
example: '1' SimSerialNumber: type: string description: Sim Serial Number or ICCID is a Sim Card Unique Identity Number which is generally found on the packet of Sim or on the back side of Sim Card example: '0000000000000000000' BluetoothEnabled: type: string description: |- It states that whether Bluetooth is enabled in device or not
Description
Value
On 1
Off 0
N/A null
example: '1' USBPluggedIn: type: string description: |- It states whether USB is been plugged in to device
Description
Value
Plugged In 1
Plugged Out 0
N/A null
example: '1' BSSID: type: string description: Gives SSID address of the device example: '' SureLockSettingsVersionCode: type: string description: SureLock settings identifier example: null OsBuildNumber: type: string description: Device's OS Build Number example: PPR1.180610.011.G611FDDU1CSD8 MemoryStorageAvailable: type: string description: Free Storage Available in the device example: '' PhysicalMemoryAvailable: type: string description: Available RAM memory in device example: '' RealDeviceName: type: string description: Bluetooth name of the device. example: Galaxy On7 Prime SecurityPatchDate: type: string description: Date of last received security patch example: '5/1/2019 12:00:00 AM' AfwProfile: type: string description: |- Enabling a work profile allows organizations to manage the business data and apps they care about, but leave everything else on a device under the user’s control.
Description Value
Not Supported 1
Not Enrolled 2
Managed Device 3
Profile Owner 4
Device Owner 5
example: '1' DeviceGroupPath: type: string description: Path of folder in which device is registered.Note For home group devices it will show null example: Home/test_rjt MTPSystemScanTimeStamp: type: string description: Time Stamp of last MTP System Scan example: '' MTPSystemScanThreatCount: type: string description: Gives the count of threats after system scan example: '' IsMobileHotSpotEnabled: type: string description: |- It states that whether the mobile hotspot is enabled or not
Description
Value
Off 0
On 1
N/A null
example: '0' IsEncryptionEnabled: type: string description: |- It states that whether data encryption is enabled or not
Description
Value
Yes 1
No 0
N/A null
example: '0' IMEI2: type: string description: Second IMEI Number of device example: '000000000000000' CtsProfileMatch: type: string description: | A stricter verdict of device integrity.
If the value of ctsProfileMatch is true, then the profile of the device running your app matches the profile of a device that has passed Android compatibility testing.
Description
Value
No 0
Yes Value except " " , null and n/a (Any numeric value)
N/A Value except numerical value
example: '0' BasicIntegrity: type: string description: | A more lenient verdict of device integrity.
If only the value of basicIntegrity is true, then the device running your app likely wasn't tampered with.
However, the device hasn't necessarily passed Android compatibility testing.
Description
Value
Fail 0
Pass Value except " " , null and n/a (Any numeric value)
N/A Value except numerical value
example: '0' VerifyAppEnable: type: string description: |- It states that whether apps should be checked for threats at the time of installation
Description
Value
Disabled 0
Enabled Value except " " , null and n/a (Any numeric value)
N/A Values except numerical value
example: '0' ADBEnable: type: string description: |- Android Debug Bridge (ADB) is a versatile command-line tool that lets you communicate with a device. The adb command facilitates a variety of device actions, such as installing and debugging apps, and it provides access to a Unix shell that you can use to run a variety of commands on a device
Description
Value
Enabled 1
Disabled 0
N/A null
example: '1' AllowUnknownSource: type: string description: |- Whether applications with unknown source should be blocked or allowed
Description
Value
Blocked 0
Allowed 1
N/A Value except numerical value
example: '1' DeviceTimeZone: type: string description: Time zone of place where device is located example: 'Asia/Kolkata (GMT +05:30)' DeviceLocalIPAddress: type: string description: Local IP Address of device example: 123.456.789.01 WifiSSID: type: string description: Name of WiFi in which device is connected example: Home-Network AndroidID: type: string description: Unique identification of Android device until reboot is performed example: b2d27bbfaa979b7d HashCode: type: string description: Unique alphanumeric value which helps in identification of an device example: b378e95c EfotaRegistrationStatus: type: string description: | Gives the status of device registration with Efota Server for Samsung Devices
DescriptionValue
Failed0
Success1
Pending2
DefaultAny value other than above value
example: 2 CurrentFirmwareVersion: type: string description: | Once device is registered with Efota server, Samsung devices will send the current firmware available in the device
DescriptionValue
Application ProcessorG920FXXU3DPDO
Consumer Software CustomizationG920FXXU3DPA1
Cellular ProcessorG920FOXA3DPD2
example: G920FXXU3DPDO GroupID: type: string description: Group Id example: 'null' Protocol: type: string description: |- It states whether device uses HTTPS or HTTP protocol. Same can be configured under Nix Settings.
Description Value
Unsecured (HTTP) 0
Secured (HTTPS) 1
example: '0' TrackingOn: type: string description: It states that whether location tracking is enabled or disabled in device
Description Value
On 1
Off 0
N/A null
example: '0' DefaultHome: type: string description: Package name of default launcher example: com.lenovo.launcher SureLockLicense: type: string description: |- It checks whether the device has an active license of SureLock
Description
Value
Yes 1
No 0
N/A null
example: '1' SureFoxLicense: type: string description: |- Whether the device has an active license of SureFox
Description
Value
Yes 1
No 0
N/A null
example: '1' SureVideoLicense: type: string description: |- Whether the device has an active license of SureVideo
Description
Value
Yes 1
No 0
N/A null
example: '1' batteryState: type: string description: 'Current Battery of the device. It could be Charging, Normal and null (for offline devices)' example: Normal StorageMemoryTotal: type: string description: Total storage memory (in bytes). example: '12386881536' PhysicalMemoryTotal: type: string description: Total physical memory(in bytes). example: '2046173184' DeviceApprovedStatus: type: string description: |- It states whether Device is Approved or not
Description
Value
Approved 1
Unapproved 0
example: '1' ThingsData: type: string description: Contains JSON data of connected things devices to it example: null TrackingInterval: type: string description: Tracking periodicity in minutes example: '10' JobsFailed: type: string description: |- It states that the searched job is in which state
Description Value
Failed 0
Success 1
Pending 2
In-Progress 3
example: 'null' DJobsFailed: type: string description: Dynamic jobs failed count. example: '0' JobsDeployed: type: string description: Count of jobs deployed example: 2 JobsInQueue: type: string description: Count of jobs in queue example: 0 JobsInProgress: type: string description: Count of in progress jobs example: '0' ConnectionStatus: type: string description: It states whether the device is Online or Offline enum: - Online - Offline example: Online status: type: boolean description: Indicates if the operation was successful. example: true GetAllDevices: type: object required: - ID - IsTag - SortColumn - SortOrder - Limit - IsIncludedBlackListed - AdanceSearch - EnableDeviceGlobalSearch - IsSearch - Offset - SearchValue properties: ID: type: string description: | ID of the group or the tag.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
or
Note: ID of the all devices value 'AllDevices' example: AllDevices IsTag: type: boolean description: | `true` if tag ID is provided in `ID` parameter. example: false SortColumn: type: string description: Column name to apply sorting on. enum: - LastTimeStamp - DeviceName - DeviceModelName - PlatformType - Battery - AgentVersion - DeviceTimeZone - DeviceRegistered - DataUsage example: LastTimeStamp SortOrder: type: string description: | Sorting order.
asc: Ascending order
desc: Descending order example: desc Limit: type: integer description: Result limit. example: 10 Offset: type: integer description: Result offset value. example: 0 IsSearch: type: boolean description: To enable search(It should be kept true to get all devices of your SureMDM account) example: true IsIncludedBlackListed: type: boolean description: To include blocklisted devices on search. example: true AdanceSearch: type: boolean description: To enable advance search. example: false EnableDeviceGlobalSearch: type: boolean description: when get all devices at time enable device global search 'true'. example: true SearchValue: type: string description: Search string (For getting all devices under your SureMDM account search string should be %) example: '%' GetHomeGroupDevices: type: object required: - ID - IsTag - SortColumn - SortOrder - Limit - IsIncludedBlackListed - AdanceSearch - EnableDeviceGlobalSearch - IsSearch - Offset - SearchValue properties: ID: type: string description: | ID of the group or the tag.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
or
Note: ID of the home group is 'null' example: null IsTag: type: boolean description: | `true` if tag ID is provided in `ID` parameter. example: false SortColumn: type: string description: Column name to apply sorting on. enum: - LastTimeStamp - DeviceName - DeviceModelName - PlatformType - Battery - AgentVersion - DeviceTimeZone - DeviceRegistered - DataUsage example: LastTimeStamp SortOrder: type: string description: | Sorting order.
asc: Ascending order
desc: Descending order example: desc Limit: type: integer description: Result limit. example: 10 Offset: type: integer description: Result offset value. example: 0 IsSearch: type: boolean description: To enable search. example: false IsIncludedBlackListed: type: boolean description: To include blocklisted devices on search. example: true AdanceSearch: type: boolean description: To enable advance search. example: false EnableDeviceGlobalSearch: type: boolean description: when get home group devices at time enable device global search 'false'. example: false SearchValue: type: string description: Search string example: null GetDevicesOfParticularGroup: type: object required: - ID - IsTag - SortColumn - SortOrder - Limit - IsIncludedBlackListed - AdanceSearch - EnableDeviceGlobalSearch - IsSearch - Offset properties: ID: type: string description: | ID of the group or the tag.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
or
Note: ID of the Group id example: 22c245da-df91-4bd2-9ee9-75a9ccf61142 IsTag: type: boolean description: | `true` if tag ID is provided in `ID` parameter. example: false SortColumn: type: string description: Column name to apply sorting on. enum: - LastTimeStamp - DeviceName - DeviceModelName - PlatformType - Battery - AgentVersion - DeviceTimeZone - DeviceRegistered - DataUsage example: LastTimeStamp SortOrder: type: string description: | Sorting order.
asc: Ascending order
desc: Descending order example: desc Limit: type: integer description: Result limit. example: 10 IsSearch: type: boolean description: To enable search. example: false IsIncludedBlackListed: type: boolean description: To include blocklisted devices on search. example: true AdanceSearch: type: boolean description: To enable advance search. example: false EnableDeviceGlobalSearch: type: boolean description: when get devices of particular group at time enable device global search 'false'. example: false Offset: type: string description: Offset value. example: 0 SearchDevice: type: object required: - ID - IsTag - SortColumn - SortOrder - Limit - IsIncludedBlackListed - AdanceSearch - EnableDeviceGlobalSearch - IsSearch - Offset - SearchValue properties: ID: type: string description: | ID of the group or the tag.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
or
Note: ID of the home group is 'null' example: null IsTag: type: boolean description: | `true` if tag ID is provided in `ID` parameter. example: false SortColumn: type: string description: Column name to apply sorting on. enum: - LastTimeStamp - DeviceName - DeviceModelName - PlatformType - Battery - AgentVersion - DeviceTimeZone - DeviceRegistered - DataUsage - ConnectionStatus example: LastTimeStamp SortOrder: type: string description: | Sorting order.
asc: Ascending order
desc: Descending order example: desc Limit: type: integer description: Result limit. example: 10 Offset: type: integer description: Result offset value. example: 0 IsSearch: type: boolean description: To enable search. example: true IsIncludedBlackListed: type: boolean description: To include blocklisted devices in the search. example: true AdanceSearch: type: boolean description: To enable advanced search. example: false EnableDeviceGlobalSearch: type: boolean description: When searching for devices, set to 'true' to enable global search or 'false' to search a particular group. example: true SearchValue: type: string description: Search string. example: "John's iPad" AdvSearchJobID: type: string description: ID of the advanced search job (if applicable). example: "" AdvSearchValue: type: array items: type: string description: List of values for advanced search. example: [] SearchColumns: type: array items: type: string description: List of columns to search. example: - DeviceName - DeviceModelName - PlatformType - Operator - IMEI - Notes - DeviceUserName - DeviceID Source: type: string description: | Specifies the origin of the search request and determines the level of detail returned in the response. example: Internal ApplicationList: type: array description: List of application package names to filter devices by the installed applications. items: type: string example: - "com.google.android.apps.subscriptions.red" - "com.google.android.googlequicksearchbox" SearchPayload: type: array items: type: object description: Payload for search. example: [] SubgroupDevicesEnable: type: boolean description: Enable searching of subgroup devices. example: false AdvSearchDevice: type: object required: - ID - IsTag - SortColumn - SortOrder - Limit - IsIncludedBlackListed - AdanceSearch - EnableDeviceGlobalSearch - IsSearch - Offset - SearchValue properties: AdanceSearch: type: boolean description: To enable advance search. example: true AdvSearchJobID: type: string description: ID for advanced search job. example: "" AdvSearchValue: type: array description: Values corresponding to columns mentioned in `SearchColumns`. items: type: string example: - 'android' SearchColumns: type: array description: Columns to apply search on. More info on use of columns [`Advance Search Fields`](./#tag/Advance-Search-Fields). items: type: string example: - 'DeviceModelName' EnableDeviceGlobalSearch: type: boolean description: When searching devices, set to 'true' to enable device global search or 'false' to search a particular group. example: false ID: type: string description: | ID of the group or the tag.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142
or
Note: ID of the home group is 'null' example: null IsTag: type: boolean description: | `true` if tag ID is provided in `ID` parameter. example: false Limit: type: integer description: Result limit. example: 1000 Offset: type: integer description: Result offset value. example: 0 SearchValue: type: string description: Search string. example: "" SortColumn: type: string description: Column name to apply sorting on. enum: - LastTimeStamp - DeviceName - DeviceModelName - PlatformType - Battery - AgentVersion - DeviceTimeZone - DeviceRegistered - DataUsage - ConnectionStatus example: ConnectionStatus SortOrder: type: string description: | Sorting order.
asc: Ascending order
desc: Descending order example: desc Source: type: string description: | Specifies the origin of the search request and determines the level of detail returned in the response.
Internal: Indicates that the request is generated from within the system. Returns complete device information with all available data fields.
External: Indicates that the request is from an external system (e.g., third-party apps or customer integrations). Returns only the explicitly permitted (whitelisted) fields as specified in the request payload.
Note: External is only valid when used with advanced search requests. For other types, only Internal is allowed. example: External ApplicationList: type: array description: List of application package names to filter devices by the installed applications. items: type: string example: - "com.google.android.apps.subscriptions.red" - "com.google.android.googlequicksearchbox" SearchPayload: type: array items: type: object description: Payload for search. example: [] SubgroupDevicesEnable: type: boolean description: Enable searching of subgroup devices. example: false IsIncludedBlackListed: type: boolean description: To include blocklisted devices on search. example: false NameSearchOption: type: string description: | Option applied for DeviceName column, if it is used in `SearchColumns`.
0 - Contains
1 - Starts with
2 - Ends with
Sample: "0" example: "0" ModelSearchOption: type: string description: | Option applied for DeviceModelName column, if it is used in `SearchColumns`.
0 - Platform
1 - Model
2 - All
Sample: "0" example: "0" DataUsageSearchOption: type: string description: Option applied for the Data Usage search column if it is used in `SearchColumns`. example: "" Columns: type: array description: List of available columns to retrieve device information. items: type: string example: - DeviceName - DeviceModelName - ConnectionStatus - LastTimeStamp - AgentVersion - Battery - BatteryHealth - KnoxStatus - ReleaseVersion - DeviceRegistered - Temperature - NixPollingType - PhoneNumber - DeviceUserName - BSSID - OsBuildNumber - AfwProfile - DeviceGroupPath - BasicIntegrity - EfotaRegistrationStatus - DeviceID - Hostname - MacAddress - DeviceManufacture - AADDeviceId - AADEnrollmentStatus - ManagementType DeleteDeviceResponse: type: object properties: message: type: string description: Message indicating the outcome of the delete operation. example: Device deleted successfully or Failed to delete device. data: type: boolean description: Indicates whether the device was deleted successfully. example: true status: type: boolean description: Status of the operation. example: true example: message: Device deleted successfully. data: true status: true PendingDeleteDeviceResponse: type: object properties: Message: type: string description: Response message indicating the status of the delete request. example: 'Success' Data: type: string description: Data returned by the delete request, if any. In most cases, this will be empty. example: '' Result: type: boolean description: Boolean value indicating whether the delete operation was successful. example: true example: Message: 'Success' Data: '' Result: true ForceDeleteFromPendingDeleteResponse: type: object properties: Message: type: string description: Response message indicating the status of the force delete request. example: 'Success' Data: type: string description: Data returned by the force delete request, if any. In most cases, this will be empty. example: '' Result: type: boolean description: Boolean value indicating whether the force delete operation was successful. example: true example: Message: 'Success' Data: '' Result: true SignupUrlResponseModel: type: object properties: message: type: string description: Status message of the request. example: Success data: type: object properties: name: type: string description: Name or identifier of the signup URL. example: signupUrls/Caaebb11520275541 url: type: string description: The URL for the signup process. example: "https://enterprise.google.com/signup/android/email?origin=android&thirdPartyToken=BAFD7FF85D75DE3EE" ETag: type: string nullable: true description: The ETag of the resource, or null if not available. example: null status: type: boolean description: Indicates whether the request was successful. example: true AfwResponseModel: type: object properties: message: type: string description: A message indicating the result of the operation. example: "Unenrolled from AFW successfully." data: type: string description: Additional data related to the operation. Can be null if no specific data is returned. nullable: true example: null status: type: boolean description: The status of the operation, indicating whether it was successful or not. example: true WebhookDetailsResponseModel: type: object properties: message: type: string description: Response message providing the status of the operation. example: Webhook details retrieved successfully. data: type: array description: List of webhook details. items: type: object properties: endpointId: type: integer description: ID of the endpoint example: 51 timesTried: type: integer description: Times tried example: 0 url: type: string description: Webhook endpoint URL example: "https://webhook.site/f7860795-9d15-45d9-a2bc-d8947bce94a4" status: type: integer description: Status of endpoint
Possible values:
ValueDescription
0Inactive
1Active
2Triggered
example: 2 lastUpdated: type: string description: Time-stamp when webhook was last updated example: '0001-01-01T00:00:00' customerId: type: string description: ID of the customer example: null endpointName: type: string description: Name of the endpoint webhook example: "google" DeviceWipe: type: string description: Webhook Subscription status for Device Wipe example: "0" DeviceDelete: type: string description: Webhook Subscription status for Device Delete example: "0" DeviceMove: type: string description: Webhook Subscription status for Device Move example: "0" DeviceEnrollment: type: string description: Webhook Subscription status for Device Enrollment example: "0" ServiceNowUrl: type: string description: URL for ServiceNow integration if applicable example: null userName: type: string description: User name associated with the webhook example: null webHookSource: type: string description: Source of the webhook example: null password: type: string description: Password for webhook authentication if required example: null status: type: boolean description: Indicates the status of the operation, either `true` for success or `false` for failure. example: true ThingsResponseModel: type: object properties: message: type: string description: Message indicating the success of the operation. example: Successfully retrieved Things model data. data: type: string description: JSON string containing the Things model data. example: | "2201117TI": "{\"InfoArray\":{\"propertiesOrder\":[\"parentName\",\"connectorVersion\",\"thingInContact\",\"blockcamera\",\"networktype\",\"devicetimezone\",\"devicedatetime\",\"notes\",\"camlockagentuninstallation\",\"enableaccessibilitysettings\",\"disablemultiuser\",\"locationservices\",\"enablebackgroundlocation\",\"displayoverotherapps\",\"configureruntimepermissions\",\"enablenotificationaccess\",\"scheduleexactalarm\",\"employeevisitorname\",\"employeevisitorid\",\"timefence\",\"geofence\"],\"Actions\":{},\"Events\":{},\"name\":\"chai/0890\",\"property\":{\"employeevisitorname\":\"chai\",\"notes\":\"0890\",\"devicedatetime\":\"09/11/24\"}}" status: type: boolean description: Status of the operation. example: true GetJobFolderOutPutModel: type: object properties: message: type: string description: Status message related to retrieving job folders. example: Job folders retrieved successfully. data: type: array description: Array of job folders. items: type: object properties: FolderID: type: string description: ID of the job folder. example: a435a679-b9f9-47b8-86a5-ccb45370b66a FolderName: type: string description: Name of the job folder. example: Test folder ParentFolderID: type: string description: ID of the parent job folder (null if none). example: null LastModified: type: string description: Last modified timestamp of the job folder. example: '2/15/2019 8:09:38 AM' Type: type: integer description: | Type of the job folder.
ValueDescription
0Job folder
1Profile folder
example: 0 status: type: boolean description: Indicates whether retrieving job folders was successful. example: true CreateJobFolder: type: object required: - ParentFolderID - FolderName properties: ParentFolderID: type: string description: ID of the Parent folder example: null FolderName: type: string description: Name of the folder you want create example: test_folder EditJobFolderResponseModel: type: object properties: message: type: string description: A message indicating the result of the operation. example: "Job folder updated successfully." data: type: boolean description: The result of the operation . example: true status: type: boolean description: Indicates whether the operation was successful. example: true EditJobFolder: type: object required: - ParentFolderID - FolderName - FolderID properties: FolderName: type: string description: New name of the folder example: test_folder FolderID: type: string description: Id of the job folder which you want to edit example: a435a679-b9f9-47b8-86a5-ccb45370b66a ParentFolderID: type: string description: ID of the Parent folder example: null CreateJobFolderOutPutModel: type: object properties: message: type: string description: Status message related to the creation of the job folder. example: Job folder created successfully. data: type: object properties: FolderID: type: string description: ID of the job folder that was created. example: a435a679-b9f9-47b8-86a5-ccb45370b66a ParentFolderID: type: string description: ID of the parent job folder (null if none). example: null FolderName: type: string description: Name of the newly created job folder. example: test_folder FolderType: type: string description: Type of the job folder (e.g., Job folder or Profile folder). example: null IsSticky: type: boolean description: | Indicates whether the folder is **sticky**. Sticky folders must be added first, regardless of their order. - This property is **true** for folders required for **ISO compliance** or for **automatically created profile folders** during registration. - For all other folders, this will typically be **false**. example: false status: type: boolean description: Indicates whether the job folder creation was successful. example: true AllMessageModel: type: object properties: message: type: string description: Response message indicating the result of the operation example: Success data: type: object properties: total: type: string description: Total number of messages example: '5' rows: type: array items: type: object properties: MessageId: type: string description: ID of the message example: 1 DeviceId: type: string description: ID of the device allocated by SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d DeviceName: type: string description: Name of the device example: Client0001 Subject: type: string description: Subject of the message example: Re- Test Message TimeStamp: type: string description: Timestamp of the message example: '7/12/2018 7:07:15 AM' Status: type: string description: Status of the message example: Unread PlatformType: type: string description: Platform used by the device example: Android status: type: boolean description: Status of the request example: true LostModeStatusResponseModel: type: object description: Response model containing Lost Mode status and device details. properties: DeviceID: type: string description: Unique identifier of the device. example: 11111111111111111111 DeviceName: type: string description: Name of the device. example: pxellll LostModeStatus: type: string nullable: true description: | Indicates the current Lost Mode state of the device. - `null` – Lost Mode status not found - Possible values : Enabled, Disabled, N/A example: null MessageModel: type: object properties: message: type: string description: Response message indicating the result of the operation example: Message retrieved successfully data: type: object properties: MessageId: type: string description: ID of the message example: 1 DeviceId: type: string description: | ID of the device allocated by the SureMDM. For example: **22c245da-df91-4bd2-9ee9-75a9ccf61142** Device ID can be retrieved using [Get device details](#operation/getDeviceDetails) API. example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d DeviceName: type: string description: Name of the device example: Client0001 Subject: type: string description: Subject of the message example: Re- Test Message TimeStamp: type: string description: Timestamp of the message example: '7/12/2018 7:07:15 AM' Status: type: string description: Status of the message example: Unread PlatformType: type: string description: Platform used by the device example: Android status: type: boolean description: Status of the request example: true MessageIdModel: type: object properties: message: type: string description: Response message indicating the result of the operation example: Message details retrieved successfully data: type: object properties: Subject: type: string description: Subject of the message example: test Body: type: string description: Body of the message example: test Date: type: string description: Date of the message example: 12/07/2018 Time: type: string description: Time of the message example: '07:07 AM' SentTimeOnDevice: type: string description: Sent time on the device of the message example: '7/12/2018 7:07:15 AM' SentBy: type: string description: Sent by example: John Doe DeviceID: type: string description: Device ID of the device allocated by SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d Status: type: string description: Status of the message example: Read status: type: boolean description: Status of the request example: true CustomDeleteMessageModel: type: object properties: message: type: string description: Response message indicating the result of the delete operation. example: Messages older than 4 days deleted successfully. data: type: boolean description: Indicates whether the delete operation was successful or not. example: true status: type: boolean description: Status of the request. example: true DeleteMessageModel: type: object properties: message: type: string description: Response message indicating the result of the delete operation. example: Message deleted successfully. data: type: boolean description: Indicates whether the delete operation was successful or not. example: true status: type: boolean description: Status of the request. example: true IncompletedJobQueueModel: type: object properties: JobID: type: string description: "Unique identifier of the job." example: "e58209c4-5c14-4792-a551-1d1f5042c07d" JobName: type: string description: "Name of the job." example: "ForceAddAFWAccount" Time: type: string format: date-time description: "The time the job was created or scheduled." example: "2024-10-15T16:40:33" Size: type: integer description: "The size of the job in bytes." example: 1043 Type: type: string description: "The type of the job." example: "RunScript" Status: type: string description: "The status of the job." example: "SCHEDULED" RowId: type: string description: "Unique row identifier." example: "3be3696e-0aac-48e2-90ee-481352b881b1" Success: type: string description: "The success status of the job (0 means pending)." example: "0" JobComments: type: string description: "Comments regarding the job status." example: "[10/15/2024 16:40:33 (UTC)] Job pending to be applied." JobPlatform: type: string description: "The platform for which the job is intended." example: "android" NetworkType: type: string description: "The type of network used." example: "2" DeviceIdJobQueue: type: string description: "The ID of the device associated with the job." example: "5ce030f4-bddf-4095-b9b3-e7dbc8a77c25" IsCompositeProfile: type: string description: "Whether the profile is composite (1 for yes, 0 for no)." example: "0" DeviceChargingState: type: string description: "The charging state of the device (0 for not charging)." example: "0" FromSql: type: boolean description: "Indicates whether the job data comes from SQL." example: false JobHistoryVersion: type: string description: "The version of the job history." example: "1" DownloadedSource: type: string nullable: true description: "The source from which the job was downloaded, if applicable." example: null MaintenanceWindow: type: boolean description: "Whether the job was scheduled during a maintenance window." example: false Compliance: type: integer description: "Compliance status for the job." example: 1 IncompletedJobQueueResponse: type: object properties: message: type: string description: "Response message." example: "Incompleted Job history retrieved successfully." data: type: object properties: total: type: integer description: "Total number of jobs." example: 4 rows: type: array items: $ref: '#/components/schemas/IncompletedJobQueueModel' description: "Contains the list of job details." success: type: boolean description: "Indicates whether the request was successful." example: true IncompletedPayloadModel: type: object properties: DeviceQuery: type: object properties: AdanceSearch: type: boolean description: "Indicates whether advanced search is enabled." example: false AdvSearchJobID: type: string description: "Job ID for advanced search if applicable." example: "" AdvSearchValue: type: array items: type: string description: "Values for advanced search." example: [] SearchColumns: type: array items: type: string description: "Columns to be searched." example: [] EnableDeviceGlobalSearch: type: boolean description: "Indicates if the global search for devices is enabled." example: true ID: type: string description: "ID of the search query, such as 'AllDevices'." example: "AllDevices" IsSearch: type: boolean description: "Indicates if search is enabled." example: true IsTag: type: boolean description: "Indicates if tagging is enabled." example: false Limit: type: string description: "Limit on the number of records to retrieve." example: "-1" Offset: type: integer description: "Offset for pagination." example: 0 SearchValue: type: string description: "The search value or keyword." example: "%" SortColumn: type: string description: "Column to sort the results." example: "ConnectionStatus" SortOrder: type: string description: "Order of sorting (asc/desc)." example: "desc" Columns: type: array items: type: string description: "Columns to be returned in the response." example: - "DeviceName" - "DeviceModelName" - "ConnectionStatus" - "LastTimeStamp" - "AgentVersion" Source: type: string description: "Source of the search query." example: "Internal" SearchPayload: type: array items: type: string description: "Payload to be used for advanced search." example: [] SubgroupDevicesEnable: type: boolean description: "Enable subgroup devices in the search." example: false IsIncludedBlackListed: type: boolean description: "Whether blacklisted devices are included." example: false DeviceIds: type: string description: "Comma-separated string of device IDs." example: "5ce030f4-bddf-4095-b9b3-e7dbc8a77c25" bShowAll: type: boolean description: "Indicates if all devices should be shown." example: false JobqueueStatus: type: string description: "Status of the job queue." example: "SHOWALL" AllDevicesSelected: type: boolean description: "Indicates if all devices are selected." example: false ShowHistory: type: boolean description: "Indicates if history should be shown." example: false AFWEnrollmentModel: type: object properties: message: type: string description: Response message example: Success data: type: object description: Response data properties: UseAndroidManagement: type: boolean description: Whether to use AndroidManagement or not example: '1' Domain: type: string description: Domain name example: AFW_ACCOUNT_1 EnableAndroidManagement: type: boolean description: Enable or disable AndroidManagement example: '0' UseAndroidEnterprise: type: boolean description: Whether to use Android Enterprise or not example: '1' IsNixLessEnrollment: type: boolean description: Whether it is a Nixless enrollment example: '0' Email: type: string description: Email associated with the enrollment example: jgvjh@blondmail.com ManagementDomain: type: string description: Domain used for management example: EMM-managed_enterprises_1 ManagementEmail: type: string description: Management email associated with the enrollment example: jgvjh@blondmail.com Status: type: string description: Request status example: true DeleteDeviceModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: Id of Device example: 4151ad0a-05e9-4c8f-9d91-2f3f69a6e1dd Status: type: string description: Request status example: true CountAllJobsResponse: type: object properties: message: type: string description: Response message example: "Job status counts retrieved successfully." data: type: array description: Response data items: type: object properties: deployed_jobs: type: string description: Number of deployed jobs example: "2" failed_jobs: type: string description: Number of failed jobs example: "1" inprogress: type: string description: Number of jobs in progress example: "1" scheduled: type: string description: Number of scheduled jobs example: "1" configured_scheduled_jobs: type: string description: Number of configured scheduled jobs example: "0" status: type: boolean description: Request status example: true LatestDeployedJobsResponse: type: object properties: message: type: string description: Response message example: "Failed/Completed Jobs data retrieved successfully." data: type: object properties: total: type: integer description: Total number of jobs example: 1 rows: type: array description: List of jobs items: type: object properties: JobID: type: string description: Job ID example: "6b15c606-f08f-4f60-a302-0fc078de0ff4" customerId: type: string description: Customer ID example: null RowId: type: string description: Row ID example: "01b5bbca-e5ea-458c-b77d-a8872dcd8369" JobName: type: string description: Job name example: "kiosk exit" Time: type: string format: date-time description: Job execution time example: "2024-10-09T10:09:56.808Z" Size: type: integer description: Size of the job example: 5518 Type: type: string description: Job type example: "ANDROID WORK PROFILE" Status: type: string description: Job status example: "Error" Success: type: integer description: Success count example: 0 JobComments: type: string description: Comments related to the job example: "[10/09/2024 10:18:14 (UTC)] AFW account creation get failed : Error creating Play for Work Account Max retry exceeded\n[10/09/2024 10:10:07 (UTC)] Job has been picked up by the device but yet to be deployed.\n[10/09/2024 10:09:56 (UTC)] Job pending to be applied." JobPlatform: type: string description: Platform on which the job runs example: "android" NetworkType: type: string description: Type of network used example: "2" DeviceIdJobQueue: type: string description: Device ID for the job queue example: "620022ea-08a4-4489-b736-2930f6859e3b" IsCompositeProfile: type: integer description: Indicates if it is a composite profile example: 0 DeviceChargingState: type: string description: Device charging state example: "0" FromSql: type: boolean description: Indicates if data is from SQL example: false SubJobStatuses: type: string description: Sub-job statuses example: "" DownloadedSource: type: string description: Source of the download example: "N/A" JobHistoryVersion: type: integer description: Version of the job history example: 1 JobDetails: type: array description: Details about the job items: {} MaintenanceWindow: type: boolean description: Indicates if it is in a maintenance window example: false Compliance: type: integer description: Compliance status example: 1 status: type: boolean description: Request status example: true QuickActionsResponse: type: object properties: message: type: string description: Response message example: "Dynamic job queue data retrieved successfully." data: type: object properties: total: type: integer description: Total number of quick actions example: 1 rows: type: array description: List of quick actions items: type: object properties: JobID: type: string description: Job ID example: "68a7434a-4c13-4827-abac-15e9a74690ae" DateTime: type: string format: date-time description: Date and time of the action example: "2024-10-17T12:11:35.814Z" Type: type: string description: Type of action example: "GetAppRestrictions" Status: type: integer description: Status of the action example: 1 DynamicJobComments: type: string description: Comments related to the dynamic job example: "[10/17/2024 12:11:35(UTC)] Dynamic job to be applied has been added in the queue." TimeOut: type: string format: date-time description: Timeout for the action example: "2024-10-17T12:12:45.814Z" DeviceIdDynamicJobQueue: type: string description: Device ID for the dynamic job queue example: "620022ea-08a4-4489-b736-2930f6859e3b" status: type: boolean description: Request status example: true ScheduledJobsResponse: type: object properties: message: type: string description: Response message example: "Scheduled jobs retrieved successfully." data: type: object properties: total: type: integer description: Total number of scheduled jobs example: 0 rows: type: array description: List of scheduled jobs items: {} status: type: boolean description: Request status example: true GetProfileModel: type: object properties: message: type: string description: Response message example: '' data: type: array description: Response data items: type: object properties: JobID: type: string description: Job Id example: 68157a43-3bf3-45df-aa48-a103ccbc1846 JobName: type: string description: Job name example: Test LastModified: type: string description: Last Modified Time of Profile example: '5/15/2019 12:40:31 PM' DefaultPolicy: type: string description: Default policy example: '0' Status: type: string description: Request status example: true GetProfileByIdModel: type: object properties: message: type: string description: Response message example: '' data: type: array description: Response data items: type: object properties: JobID: type: string description: Job Id example: 68157a43-3bf3-45df-aa48-a103ccbc1846 JobName: type: string description: Job name example: Test LastModified: type: string description: Last modified time of profile example: '5/15/2019 12:40:31 PM' DefaultPolicy: type: string description: Default policy example: '0' Profile: type: string description: Default policy example: '{"applicationPolicy":null,"passwordPolicy":{"quality":null,"expirationTimeout":14400000,"historyLength":"4","maximumFailedAttempts":"4","minimumLength":"4","maximumTimeToLock":10000},"systemSettings":null,"globalProxy":null,"vpnConfig":null,"enterpriseAppStore":null,"caCertificatePolicy":null,"mailConfigurationPolicy":null,"wifiConfigurationPolicy":null,"fileSharingPolicy":null,"mobileThreatPrevention":null,"astromailconfigurationPolicy":null,"UseAFW":false}' IsAndroidMangementPolicy: type: string description: Whether it android management policy example: '0' Status: type: string description: Request status example: true DeleteProfileByIdModel: type: object properties: message: type: string description: Response message example: Profile deleted successfully data: type: string description: ID of the profile which is deleted. example: 10234f3f-4796-4dbf-9861-386e64dd477a Status: type: string description: Request status example: true ProfileResponseModel: type: object properties: message: type: string description: Response message example: Profile Creation Done. data: type: string description: Response data example: '' Status: type: string description: Request status example: true JobResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: ID of the job created example: 2751ab8a-b3e1-4dcb-bf15-44ef4f86323b Status: type: string description: Request status example: true DeleteJobResponseModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: Response data example: null Status: type: string description: Request status example: true DeviceModel: type: object properties: SortColumn: type: string description: Sort column name example: DeviceName SortOrder: type: string description: Sorting order example: asc Limit: type: string description: Number of device example: 20 Offset: type: string description: Offset example: 0 GetPreapprovedDevicePayLoad: type: object required: - Limit - Offset - IsSearch properties: Limit: type: string description: Number of device example: 20 Offset: type: string description: Result offset value example: 0 IsSearch: type: boolean description: Whether search parameter is applied or not example: true SearchValue: type: string description: | Value to be searched
Note: only applicable when `IsSearch` is true example: '' SortOrder: type: string description: Sorting order
ascAscending order
descDescending order
example: asc SortColumn: type: string description: Sort column name example: DeviceName enum: - DeviceName - IDType - GroupPath - DeviceNotes - TagName - EnableEnroll - PhoneNumber - EmailId PreapprovedDeviceResponseModel: type: object properties: message: type: string description: Message indicating the result of the operation. example: Device list retrieved successfully. data: type: object properties: total: type: string description: Number of results. example: '1' rows: type: array description: Array of preapproved device details. items: type: object properties: DeviceID: type: string description: ID of the device allocated by SureMDM. example: 5M:51:17:8C:28:B2 DeviceName: type: string description: Name of the device. example: johnsoe ID: type: string description: Device ID. example: 5M:51:17:8C:28:B2 IDType: type: integer description: Type of ID (e.g., 2 for MAC address). example: 2 GroupID: type: string description: ID of the group associated with the device. example: null GroupPath: type: string description: Path of the group the device belongs to. example: Home/! personal device TagName: type: string description: Name of the tag associated with the device. example: Android DeviceNotes: type: string description: Notes or comments related to the device. example: Company device SerialNumber: type: string description: Serial number of the device. example: null EnableEnroll: type: string description: Indicates if enrollment is enabled for the device. example: '1' PhoneNumber: type: string description: Phone number associated with the device. example: +919987622333 EmailId: type: string description: Email address associated with the device. example: john.dssoe@example.com ObjectGUID: type: string description: GUID of the device object. example: null DeviceIDS: type: array description: Array of additional device IDs associated with the device. example: null InsertedTime: type: string description: Time when the device was inserted. example: null CustomerId: type: string description: Customer ID associated with the device. example: null status: type: boolean description: Status of the request. example: true DeviceResponseModel: type: object properties: total: type: string description: Number of devices example: '2' rows: type: array description: Response data items: type: object properties: DeviceID: type: string description: Device ID example: af79c695 DeviceName: type: string description: Device name example: E come ID: type: string description: Device ID example: af79c695 IDType: type: string description: ID type example: '2' GroupID: type: string description: Group Id example: 'null' GroupPath: type: string description: Group path example: Home TagName: type: string description: Tag name example: Tag DeviceNotes: type: string description: Device notes example: '' SerialNumber: type: string description: Serial number example: 'null' EnableEnroll: type: string description: Enable enrollment example: '0' PhoneNumber: type: string description: Phone number example: '+911111111111' EmailId: type: string description: Email address example: test@test.com DeviceIDS: type: array description: Device IDs example: '[]' LastLocationModel: type: object properties: message: type: string description: Status message related to the operation. example: Location details retrieved successfully. data: type: array description: List of location data for the specified device. items: type: object properties: DeviceId: type: string description: ID of the device allocated by SureMDM. example: 1111111111111111111 Location: type: array description: Location data for the device. items: type: object properties: Longitude: type: number description: Longitude of the location example: 77.7381445 Latitude: type: number description: Latitude of the location example: 14.4277771 Time: type: string description: Time stamp of the location entry
Date-Time format- UTC(https://en.wikipedia.org/wiki/Coordinated_Universal_Time) example: '2024-10-11T09:33:13Z' LocationName: type: string description: Location information (address, area, etc.) example: '123, Example Street, Sample Area, Demo City, State 000000, India' LocationAccuracy: type: number description: Accuracy of the location in meters example: 12.0 LocationMode: type: number description: Mode used to determine the location (e.g., GPS, network-based) example: 3.0 FloorNo: type: string description: Floor number, if indoor location is available example: '' BuildingId: type: string description: ID of the building in case of indoor location tracking example: '' IsIndoorTracking: type: boolean description: Indicates whether indoor location tracking is enabled for the device example: false ILTDeviceBatteryPercent: type: string description: Indoor location tracking device battery percentage, if available example: '' ILTWifiSignalStrength: type: string description: Wi-Fi signal strength for indoor location tracking, if available example: '' IndoorLocationSource: type: string description: Source of the indoor location information (e.g., Wi-Fi, BLE) example: '' ILTWifiSSID: type: string description: Wi-Fi SSID used for indoor location tracking, if available example: '' Speed: type: number format: float description: | Represents the device's movement speed at the time the location data was recorded.
**Unit:** meters per second (m/s)
**Note:** A value of -1.0 indicates speed data is not available example: "-1.0" Bearing: type: number format: float description: | Represents the direction of the device's movement at the time the location data was recorded, expressed as a bearing relative to true north.
**Unit:** degrees (°)
**Note:** A value of -1.0 indicates bearing data is not available example: "-1.0" status: type: boolean description: Indicates the status of the operation. example: true LocationModel: type: object properties: DeviceId: type: string description: ID of the device allocated by the SureMDM.
For eg. 22c245da-df91-4bd2-9ee9-75a9ccf61142 example: 2ff21872-6e9f-43fe-a90e-3e9fe4203e8d Location: type: array description: Locations data example: - Longitude: '70.7955399' Latitude: '22.2975679' Time: '2019-04-09T09:30:05Z' LocationName: '123, Example Street, Sample Area, Demo City, State 000000, India' - Longitude: '70.7955399' Latitude: '22.2975679' Time: '2019-04-09T09:29:05Z' LocationName: '123, Example Street, Sample Area, Demo City, State 000000, India' - Longitude: '70.7955399' Latitude: '22.2975679' Time: '2019-04-09T09:28:05Z' LocationName: '123, Example Street, Sample Area, Demo City, State 000000, India' items: type: object properties: Longitude: type: string description: Longitude Latitude: type: string description: Latitude Time: type: string description: | Time stamp of the location entry
Date-Time format: [UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time) LocationName: type: string description: Location information AddDevicePreapprovedModel: type: object properties: DeviceID: type: string description: Sort column name example: DeviceName DeviceName: type: string description: Sorting order example: Test ID: type: string description: Number of device example: "5C:51:88:8C:28:B1" IDType: type: string description: Id Type example: '1' GroupID: type: string description: Group Id example: eb13a1f4-7e0c-4091-b4ee-561739c0fae4 GroupPath: type: string description: Group Path example: Home TagName: type: string description: Tag Name example: Tag DeviceNotes: type: string description: Device notes example: Add notes here SerialNumber: type: string description: Serial number example: "null" PhoneNumber: type: string description: Phone number example: "+911111111111" EmailId: type: string description: Email address example: test@test.com example: - DeviceID: "DeviceName1" DeviceName: "john doe" ID: "5C:51:88:8C:28:B2" IDType: "2" GroupID: "eb13a1f4-7e0c-4091-b4ee-561739c0fae5" GroupPath: "Office" TagName: "Work" DeviceNotes: "Company device" SerialNumber: "null" PhoneNumber: "+919987654321" EmailId: "john.doe@example.com" - DeviceID: "DeviceName2" DeviceName: "jane smith" ID: "5C:51:88:8C:28:B3" IDType: "1" GroupID: "eb13a1f4-7e0c-4091-b4ee-561739c0fae6" GroupPath: "Home" TagName: "Personal" DeviceNotes: "Personal device" SerialNumber: "null" PhoneNumber: "+919876543210" EmailId: "jane.smith@example.com" - DeviceID: "DeviceName3" DeviceName: "alice brown" ID: "5C:51:88:8C:28:B4" IDType: "0" GroupID: "eb13a1f4-7e0c-4091-b4ee-561739c0fae7" GroupPath: "Garden" TagName: "Outdoor" DeviceNotes: "Garden device" SerialNumber: "null" PhoneNumber: "+919888888888" EmailId: "alice.brown@example.com" ApplyJobResponsModel: type: object properties: message: type: string description: Response message example: Success data: type: string description: Response data example: null Status: type: string description: Request status example: true WithAppUrl: type: object properties: message: type: string description: Response message example: Success data: type: object description: Response data properties: AppSize: type: string description: Application size in terms of Bytes example: null AppCategory: type: string description: Category of an application example: null AppDescription: type: string description: Description of an application example: null AppIcon: type: string description: URL of the icon or icon in base64 format example: null AppPackage: type: string description: Package name of an application example: com.nix AppTitle: type: string description: Title of an application example: Incredible India AppURL: type: string description: URL of an application that is uploaded in your SureMDM account example: 582347891/EAM/Android/9f3c2b71-6a4d-4c8e-91fa-7d2e5b6c1a90 AppVersion: type: string description: 'A string value that represents the release version of an application code, as it should be shown to users.' example: 14.2 AppVersionCode: type: string description: 'An integer value that represents the version of an application code, relative to other versions.' example: 10 GUID: type: string description: Unique identification of an application example: eb90dd4a-93f5-4718-b0bf-10586d84050b PlatformType: type: string description: It states that application is made for which platform example: Android status: type: string description: Request status example: true WithoutAppUrl: type: object properties: message: type: string description: Response message example: Success data: type: object description: Response data properties: SignedURL: type: string description: AWS signed URL of an application example: 'https://xyzabc9jobs.s3.amazonaws.com/071900004/EAM/android/609831bf-d8f3-4f27-8a60-05c118599497?X-Amz-Expires=18000&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=1111111AAAA/20190703/us-east-1/s3/aws4_request&X-Amz-Date=20190703T113451Z&X-Amz-SignedHeaders=host&X-Amz-Signature=2bb643bb2c2ca958cbef93088a4ec86d8ff7498f946568c115a3c468b8a82d33' GUID: type: string description: Unique identification of an application example: eb90dd4a-93f5-4718-b0bf-10586d84050b AppURL: type: string description: URL of an application that is uploaded in your SureMDM account example: 582347891/EAM/Android/9f3c2b71-6a4d-4c8e-91fa-7d2e5b6c1a90 status: type: string description: Request status example: true AFWQRcodeModel: type: object properties: WifiSSID: type: string description: WiFi SSID example: My WiFi WifiPassword: type: string description: WiFi password example: '0000' IsSkipEncryption: type: boolean description: Whether to skip encryption of the information example: false GroupPath: type: string description: Path of the goup where device resides example: home DeviceNameType: type: string description: | Device name type (Use IMEI number,Mac Address, Serial number etc. This is effective for android only)
ValueDescription
UseSystemGeneratedUse system generated device name
UseIMEIUse IMEI number as device name
UseMacUse WiFi MAC address as device name
UseSerialNumberUse device's serial number as device name
UsePhoneNumberUse phone number used by the device as device name
SetManuallySet device name manually
example: SystemGenerated EAMGetAppDetailsNewResponseModel: type: object properties: message: type: string description: Response message indicating the result of the request. example: Success data: type: object properties: GUID: type: string description: Unique identifier of the app. example: c191f79c-56f8-45dd-a4b7-a4dd7e6201d4 AppPackage: type: string description: Package name of the app (if available). example: null AppTitle: type: string description: Title of the app (if available). example: null AppVersion: type: string description: Version of the app (if available). example: null AppVersionCode: type: string description: Version code of the app (if available). example: null AppURL: type: string description: URL to the app file. example: x/EAM/Android/34aa5259-a93b-4991-9398-9c022c30f9xx AppDescription: type: string description: Description of the app (if available). example: null AppSize: type: string description: Size of the app (if available). example: null AppCategory: type: string description: Category of the app (if available). example: null AppIcon: type: string description: URL to the app icon (if available). example: null IsS3Storage: type: boolean description: Whether the app is stored in SureMDM's app store. example: true PlatformType: type: string description: Platform type (e.g., Android, iOS, macOS, Windows). example: Android AppType: type: string description: Type of the app (if available). example: null Background: type: string description: Background image or color for the app (if available). example: null ProductID: type: string description: Product ID of the app (if applicable). example: null MD5Checksum: type: string description: MD5 checksum for the app file (if available). example: null iTunesStoreID: type: string description: iTunes Store ID for the app (if applicable). example: null IsB2BApp: type: boolean description: Indicates whether the app is a Business-to-Business (B2B) app. example: false AppIdentifier: type: string description: App identifier (bundle ID or package name). example: null AppConfigData: type: string description: Configuration data for the app (if applicable). example: null CanAppBeManaged: type: boolean description: Indicates whether the app can be managed by SureMDM. example: false AppRestrictions: type: string description: App restrictions (if applicable). example: null AppSource: type: string description: Source of the app example: "0" AppWingetId: type: string description: Winget ID for the app (if applicable). example: null CmdArgs: type: string description: Command-line arguments for the app (if applicable). example: null isPkgContainsPkg: type: boolean description: Indicates if the package contains another package. example: false IsEXE: type: string description: Indicates if the app is an executable (if applicable). example: null status: type: boolean description: Indicates whether the request was successful. example: true EAMAppDetailsSuccessModel: type: object properties: message: type: string description: Response message indicating the result of the operation. example: Success data: type: description: Response Data example: null status: type: boolean description: Indicates whether the request was successful. example: true EAMGetAppDetailsResponseModel: allOf: - $ref: '#/components/schemas/EAMSaveAppDetailsRequestModel' - type: object properties: AppType: type: string description: Type of app example: null Background: type: string description: "" example: null ProductID: type: string description: "" example: null MD5Checksum: type: string description: example: null iTunesStoreID: type: string description: ID of the app in iTunes store (applicable only for iOs/macOS) example: null IsB2BApp: type: boolean description: Whether the app is an B2B app example: false DeleteWebAppResponseModel: type: object description: Response model returned after deleting one or more Web Apps from the App Store. properties: message: type: string description: Indicates the result of the delete operation. example: Apps removed successfully. data: type: object nullable: true description: | This field is always null for delete operations. No additional data is returned after successful deletion. example: null status: type: boolean description: Indicates whether the delete operation was successful. example: true EAMDeleteWebAppRequestModel: description: List of Web Apps to be removed from the App Store. required: - GUID - AppURL - PlatformType - AppPackage properties: GUID: type: string description: Unique identifier of the Web App to be deleted. example: de21ed34-82a5-4845-a9de-d474270ed030 AppURL: type: string description: | URL of the Web App. Used for validation and identification of the app being removed. example: https://codesandbox.io IsS3Storage: type: boolean description: | Indicates whether the app is stored in S3. - `false` for Web Apps (since they are URL-based) - `true` for uploaded APK/IPA apps example: false PlatformType: type: string description: Target platform of the app. example: Android AppPackage: type: string description: | Package identifier of the app. For Web Apps, this may be same as GUID or a logical identifier. example: de21ed34-82a5-4845-a9de-d474270ed030 AppVersionCode: type: integer nullable: true description: | Internal version code of the app. Can be `null` for Web Apps. example: null WebAppSearchResponseModel: type: object description: Response model returned when searching for a Web App using GUID. properties: message: type: string description: Indicates the result of the API operation. example: Success data: type: object description: Contains the details of the requested Web App. properties: GUID: type: string description: Unique identifier of the Web App in the App Store. example: "033" AppPackage: type: string description: | Identifies the type/package of the application. For Web Apps, this is always set to `WebApp`. example: WebApp AppTitle: type: string description: Display name of the Web App as shown in the App Store. example: Online Code Editor AppVersion: type: string description: Version of the Web App provided by the user. example: "3.06" AppVersionCode: type: string description: Internal version code used for version tracking. example: "511" AppURL: type: string description: | Public URL of the Web App. This is the link that will be opened when the app is launched on the device. example: https://codesandbox.io/ AppDescription: type: string description: Short description explaining the purpose and functionality of the Web App. example: A powerful online code editor. AppCategory: type: string description: Category under which the Web App is classified in the App Store. example: Developer Tools PlatformType: type: string description: Target platform for which the app is intended. example: Android AppType: type: string description: | Specifies the type of application. - `0` – Native App (APK/IPA) - `1` – Web App example: "1" status: type: boolean description: Indicates whether the API request was successful. example: true EAMEditWebAppDetailsRequestModel: type: object properties: GUID: type: string description: | Unique identifier of the web application. **Note:** While editing a Web App, the `GUID` must match the existing app's GUID and should correspond to the same application as `AppPackage`. example: "34aa5259-a93b-4991-9398-9c022c30f923" AppPackage: type: string description: | Package name of the application. **Note:** While editing a Web App, the `AppPackage` must remain the same as the original value associated with the provided `GUID`. Both `GUID` and `AppPackage` should refer to the same existing application. example: "34aa5259-a93b-4991-9398-9c022c30f923" AppTitle: type: string description: Name of the web app in the app store example: "Online Code Editor" required: true AppDescription: type: string description: App Description example: "" required: true AppCategory: type: string description: Category of app example: "Developer Tools" required: true AppIcon: type: string required: true description: | App Icon
Note: It should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64)
example: | "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAPOElEQVRo3p1aa6wd1XX+1t57zvvcc66NMfEL7BbsxLhQGwXVxaU0DgpJKVTUUGgaEtSqTUmTijSAaGWpf4is/EgqJRKlLkLtDSVJCQpqKQEDRkWJQcY8jA0G21xjG+61r6993vPcqz9m7332OTYqzUijmTszZ/Z6fGutb625BG+79557Sgzc0e/3byXgChAViQhCCAghQERn7R95nQggAgEAEcCcH72NADAAZnbn/sbsroQ6y14RUj4ihHho69atkf8OAMDd3/rWdd1e77F+v1+WUkIIwcIK6AkpiEBCuCMB+d/neCaXndyRrdBGMGYeKsY8qoB3XefPEzNDSjkAcOP999//tFPgm3fddV2r3X5Sa81WkHGrCyOsyJUbeWbcC8761gNGSc+iI4JqXyFzzSl5bo9QlmXXbtu27Rm68847S6z1fBhFJV8Yew4AQggYrwAAlJQjVvcVsc9bZXwvWCGIyFmfveusdX4cFdb9RmvtroVhGJ48ebKplFJ3tNvtspSSP8qy/rlSasQbUsrR31jLj3nFCkRAbnFPUNY6V0QIaGN9pyAz2BhASgmtNYQQSOK4HATBl1Qcx7cJIhbG3XIc80Yw6wFBNDz3r4/tIx7wYsAJZRRhrZ0CrDWIGTrL8ntm/cFggFKpBGZGEATo9/sgIVhK+WUF5g3CWFEqhXa7DWksq6SEUgpSKQcFMvdGdiFcbIwoYbDvcG0tbqyrtUaWptBCQGsNFgLIMgThANnsLPT0NMqtU9QpVzB36eW8aNEiEBGSJAHnntig/FQ5OzuL48ePk7VerVaD1jp/uVnQYjLLMgBw9yz2fa9Y5aSUkErlxjD3lFKopAnKcYSFYR+FuTlUOi006jWE8/NYfdMWXLx1K7ozH+DBv/oqwl9fAyUlOt1uDielGElSVIIIbGBTLBRARMiyDKtXr8by5cuhtXaLkodF/9ylPaOEb2nOMtCgD9VpI317PwqdNhpJApkmWPQblyOJU8wdfAer/+hm/O63v4Njv/wFHvnMJqz6/O9j6W9txNuP/RhghpISSZpCa23XJiklFAkBYeBRKpcdVAaDQe4qz/JWEfsSG1T2XhCGCPo9xG/tRy3so9BuYfKCxYhbLZw5fBhfeHgKslTC4zfdgE/d9ifY/L0f4I2H/wWze17F4MwZTD//LN569BE0li/HM1+/E1HrDFhrFGpV9JmRpqlL02xQomyuJiKUPQXCMIRSykHED1Zr6cqRw6DX9qAuCCWlMLF8OY69+D/44589if3//kNM7/g5bv6vZ7Dzvrtxcu8bWLDmkzj05H8iqJTxwcsv4SfXfw6t9w6jMFHH+zuexsGf/RRBpQpVLgOZRqE+kQd/t480TcHMLIQgA10WQpASpsAIIggvWAeDAaSUyLLsLOGllGBmVJ79Oe48MoOH1l+KT3/zblTOW4RDT/03wlYLZ6bfg840tq9bjSyOMXHRSjy8fh1UuYTi5AJErRbC+dMQgYJmhiwWUS4WhwFPDMJo8ZNS+gWFhh6w9MAEV5qmCMPQwWRceIt/VW/gx5//LLIkxs777kEWhmiu+jU8ecefIqjWcoMwQwQBdJah+olP5GvrLE/VQoAIIA2QoLMqtQZDIE+/Nim4LDas+qMkrFQqAQDiOD6rIiul3HNSSgginD50EGBAlYooTjbBWYZis2m8SaguWYqN923Fvm4P73b7eYCPEDoCyOWAc5C9nOip3HDsZTjOFTCQEUJACuEUYGZEUeQsrjx42ZcwASII8oV0bklLYKxAtQsuwNrbvojvvncM9Ztvwz+//yFmomSE4OXnPCK4icxcOVNPlJTkFcr8nLzyL4RAtVp1CvhesAtaLzjC6AQAmHwJjBYeUfv7bdvw4sk5zH76t/HQ8RmcimIf0sNzEMgROwxrjC24PqEcp8D1et2Zwgayfcb3Qi7nEBD5esNF8ypMzhOWjCml8P2pKTzx9rt4qljFvx6fRS/NxloFRo6NYQthLM+OixGxUwAe+bIQklKi0+kgCAKHf194W7DIqGFqCxzphxGehozSWo2ZsWjxYqxYuRLvD0K82u6awLSYH7JVPVrlyYvBYRYSXrBWKhX3g263m3Oicwjvd1RDX5OBDhkK7AWkqfBWiSsuXIG5Eydww+KFuLRWde+yBrH4tx2Fnw3Heo9R6juugJ95fL4jhPD6uaH12S4sKF+cRz0wfegQVlbKOHPyJL62YgnW1Wu5wmPtZv6m4RoWQl5mHM1C/m63KIpcM+EylRdAfuBZvNIwiYMxjHIiwn9M/RuuWXcpVpSKuHfVcjSDvE7Y35nO0chPZ3lQCEGeB3IIgfKI9xWoVqvo9/uIosjxHr+Bdy81i+fw5ZFczmTeKRWYGf/4N9/A9x58EJsmG7h6QcMZxschEZsEQGAaNvvjXZ5PfxSNNeAiz0To93P+kabpWS2l67AI6M/NobzofCTdHmSpmPe+2ggPwtzrr+JHn/s9HD3wLm5bcj5Wlcs5PEwNEDZgiZz12YspHvUCOyfnWYgEeS6y1q1WKs5CvV4PQRDAciY/FtIsww2PPobo9Bmsuu46VBdfkGeyZjPnM1mK3okT6Bw7hk/Vq7ig20HcbhklNZJeF1mSAIZGsOZhQiDhjODJR543iJlhyMgolmumFlgFrMV9SqGUwqlBiH969Ed4an4ez8kiXq81sI8UlvzDt/Fhxqhd9pv42vGTKDYaiDpt3L77dVx5798harVQmlyAtV+8HY2LLgKnad7pBQHSMAQJgXQwQO/kLKLTpzE0cx5oPmcS45MDIsLExIQ773Q6ZzX1FmrnfeNvsbhWxx/82V9g+cwHWJFEWBpI7Lrrr9GJIjz3y5fwl1dfhSeOHMWz7T6+s20bnnxjL97s9jBTLGH5V/4cn/zq1xG1W7hw87X4yqv7cONPHkfn+DFc/Ic34faXX8O1D2xH2ulY77OHFBZCQPnakIlIW8yEEOh0OlBKIY7jkQkEAFCxiGDVKmghUFi7LoefKXzLmKH7PVAUgbod0OwMBgcPIO60ULjwIsy9dxjfvfYaDDKNdgq88NPH8cThaVQLBcxqAh89hiW9PpZsvApvdPv4TKMBZiZ/NsTMeRC7IZLWgFIjCrTbbSilkGWZ4yEjjNTrgy20XM9cLhtuT4guXIl4zVoMBgN0Oh2kgwF0rwe0W6idnofqtBG9tR+lOMRFS5dg7hcv4vtXXYluoYh1i89Hs9kcmei5LIRzbJZvaK0xPz/vUqvWGlEUuT2OYwwGA/T7fXS7XXcMwxBpmiKOY5fJ7DzHBeQQwyAhsHTZMlx5/Y2o1+tcLpdRLBaRxTHSfo85KJAmQhRFbC3PJk0pnGOgaltIu+j27dshpbRt3fiYz7We/hDLtqLjE7bxa/Y3F198Ma6//nru9Xro9XrOMGGgKIpi6HxtByGtdQ6hkQXsIgCuvvpqPnDgADWbTdRqNW5MTGDBwoVYMDmJiYkJVKpVBEGAUqmEBx54gHbv3j1aI8bOP86WJAmSJEGWZd64hkbGN+OGcR5grQHTsoEZjWYTmzZt4kApFItFFIpFlEollEolFAoFVI0CWmvGGCv6ONu4cszMcRRZBThNU8qyDFmWsdaajODMQ/6S9znSFCgeczFrPbSEsUCSJEjT1FnLpLb/t/A+nBx10ppi8/44jsnGTpZlZOXQWhOGXiCtNZT+iCmwwxozwjB0VouiaKRm2Iz1q3hgpIHXGnEUuQRghHe7tgY1ClgZlR+U7LWAWZpioDUXCwVSSrkMIIRAHMcshCAy85lfBUJnTSC05tBAKIoijuP4nBCy5xZCyqfTWmsMwtDldCklxUOLjVBZL/DJn9t/3M2Ob9asWYMDBw7kEIpjjuMYaZJQlmU2HshaH95aNiOpTGvEcZy7w+T/8S7KMtIkSSCEQBiGzmPWlf9X9pmYmECn08GKFSvQbDYxMzODK664Ajt27HAx1e12XREch5G9Pj5oVqbYsBCCjJZsB6dpmjIR5daIYzaOyEd8hg1at47n+2KxiEKhACklli1bBq01ms2mM0YQBIiiCGvXrsVrr72GI0eOYHp6mm655RZO05QT4wULIZNU2KsFzMwktNbAWIEAYIsWuUDSmmyeTpKEQlOJoygaEX7BggW45JJLsH79ejQaDVSrVUxOTmL//v1gZpw6dQrMjFarheeeew779+93RLHX62Hfvn1IkoQ865PWGmnuBeJhABs6DSAzVdS6ykZ5ZiiAc2eaIkkSxHGMJEkQhuFI22mxfdlll2Hv3r2oVCruufXr12PXrl348MMP8dJLL6HT6Ti4LV261EFu165dvvDD7KP18MuN2bMsM1mImbMsIzN7ZK01ERG0uW6yEhMRcZrCVBQydIOTJHFemJycxAsvvIDLL78cr7zyCuI4xokTJwAAhUIBhUIBExMTeUNkBD1z5syQ3wuBnTt30saNG9kYL888ufAOQjb7KWaONHORhoXFjq9BAGVeFkrTFDIPcnp+507s27ePut0ubdiwwQnwzjvvOBJYLpdRr9dRKBTyDGe+OfR6vZEZkR2blEolVKtVlEol/9sE6SyzxZS8Ykta60hprV8GsMkK7ZO4TGtIk17TNHVfY5IwRBzHCMPQBerChQvBzCiXywiCwLHSVqvlyKHdrTd8gf3iVi6X0e12US6XHWxGiuuQD+1WURRNKaV+R2vNUkpkacpKKdJaQwrB2kDIZidmxqFDh1AsFskKYmOk3+/j1KlTrlfw90qlgnK5jEqlMlK9pZSoVquo1WpcqVRsGj8nbABwmqZ2OkeDweAhunnLlmKj2TxdKBRK/vhipHERAhhrYPbs2UMnTpzA/Px8/nkpCNz9IAhQq9VQrVZRrVZRMN/erHWtwLVaLa/6Xp73qYzN9fZv+2GR889N4ZtvvtkkALj11ls/22g0npZSMpjdZ1XbafkTOavc0aNHqdvtYu/evajVaqjX65iYmECtVhuZI5l7XKvVcsuPfZ0/1xdQX3B7tP2GuUbHjh27ZmpqaqejBFu2bNncbDafKJVKZWa2IzwmgJRSbg5jr7PW9O7Bg+TPiyzNrtdqXK3VOAgCcnVfCFf4LBRtMfLPLS+y51mWsaUQQgiK43gwMzPzhampqecxTsI2b95cOO+8875UrVa/LKXcAKDof7C2ULLWbbVaAEDlcpn9map//Mgmx/v3G9+6PiP2PBAx8+5+v//Q9PT0D3fs2OE+LPwv2A8vO0RkWPMAAAAASUVORK5CYII=" AppURL: type: string required: true description: Add Web Link example: "https://codesandbox.io/" PlatformType: type: string required: true description: | Platform Example
Values: Android, iOS, macOS, Windows example: "Android" AppType: type: integer description: | Type of enterprise app
DescriptionValue
Enterprise application
0
Enterprise web app
1
example: 1 AppSource: type: integer description: "Source identifier for the app." example: 0 required: - GUID - AppPackage - AppTitle - AppDescription - AppCategory - AppIcon - AppURL - PlatformType - AppType - AppSource EAMSaveWebAppDetailsRequestModel: type: object properties: AppTitle: type: string description: Name of the web app in the app store example: "Online Code Editor" required: true AppDescription: type: string description: App Description example: "" required: true AppCategory: type: string description: Category of app example: "Developer Tools" required: true AppIcon: type: string required: true description: | App Icon
Note: It should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64)
example: | "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" AppURL: type: string required: true description: Add Web Link example: "https://codesandbox.io/" PlatformType: type: string required: true description: | Platform Example
Values: Android, iOS, macOS, Windows example: "Android" AppType: type: integer description: | Type of enterprise app
DescriptionValue
Enterprise application
0
Enterprise web app
1
example: 1 AppSource: type: integer description: "Source identifier for the app." example: 0 required: - AppTitle - AppDescription - AppCategory - AppIcon - AppURL - PlatformType - AppType - AppSource EAMSaveAppDetailsRequestModel: type: object properties: GUID: required: true type: string description: Unique identifier of web application example: "34aa5259-a93b-4991-9398-9c022c30f923" # required: true AppPackage: type: string description: Package name of app example: "com.abcd.surelock" required: true AppTitle: type: string description: Name of the app in the app store example: "Surelock" required: true AppVersion: type: string description: App Version example: "3.06" required: true AppDescription: type: string description: App Description example: "" required: true AppCategory: type: string description: Category of app example: "App Description" required: true AppIcon: type: string required: true description: | App Icon
Note: It should be encoded in [Base64](https://en.wikipedia.org/wiki/Base64)
example: | "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAPOElEQVRo3p1aa6wd1XX+1t57zvvcc66NMfEL7BbsxLhQGwXVxaU0DgpJKVTUUGgaEtSqTUmTijSAaGWpf4is/EgqJRKlLkLtDSVJCQpqKQEDRkWJQcY8jA0G21xjG+61r6993vPcqz9m7332OTYqzUijmTszZ/Z6fGutb625BG+79557Sgzc0e/3byXgChAViQhCCAghQERn7R95nQggAgEAEcCcH72NADAAZnbn/sbsroQ6y14RUj4ihHho69atkf8OAMDd3/rWdd1e77F+v1+WUkIIwcIK6AkpiEBCuCMB+d/neCaXndyRrdBGMGYeKsY8qoB3XefPEzNDSjkAcOP999//tFPgm3fddV2r3X5Sa81WkHGrCyOsyJUbeWbcC8761gNGSc+iI4JqXyFzzSl5bo9QlmXXbtu27Rm68847S6z1fBhFJV8Yew4AQggYrwAAlJQjVvcVsc9bZXwvWCGIyFmfveusdX4cFdb9RmvtroVhGJ48ebKplFJ3tNvtspSSP8qy/rlSasQbUsrR31jLj3nFCkRAbnFPUNY6V0QIaGN9pyAz2BhASgmtNYQQSOK4HATBl1Qcx7cJIhbG3XIc80Yw6wFBNDz3r4/tIx7wYsAJZRRhrZ0CrDWIGTrL8ntm/cFggFKpBGZGEATo9/sgIVhK+WUF5g3CWFEqhXa7DWksq6SEUgpSKQcFMvdGdiFcbIwoYbDvcG0tbqyrtUaWptBCQGsNFgLIMgThANnsLPT0NMqtU9QpVzB36eW8aNEiEBGSJAHnntig/FQ5OzuL48ePk7VerVaD1jp/uVnQYjLLMgBw9yz2fa9Y5aSUkErlxjD3lFKopAnKcYSFYR+FuTlUOi006jWE8/NYfdMWXLx1K7ozH+DBv/oqwl9fAyUlOt1uDielGElSVIIIbGBTLBRARMiyDKtXr8by5cuhtXaLkodF/9ylPaOEb2nOMtCgD9VpI317PwqdNhpJApkmWPQblyOJU8wdfAer/+hm/O63v4Njv/wFHvnMJqz6/O9j6W9txNuP/RhghpISSZpCa23XJiklFAkBYeBRKpcdVAaDQe4qz/JWEfsSG1T2XhCGCPo9xG/tRy3so9BuYfKCxYhbLZw5fBhfeHgKslTC4zfdgE/d9ifY/L0f4I2H/wWze17F4MwZTD//LN569BE0li/HM1+/E1HrDFhrFGpV9JmRpqlL02xQomyuJiKUPQXCMIRSykHED1Zr6cqRw6DX9qAuCCWlMLF8OY69+D/44589if3//kNM7/g5bv6vZ7Dzvrtxcu8bWLDmkzj05H8iqJTxwcsv4SfXfw6t9w6jMFHH+zuexsGf/RRBpQpVLgOZRqE+kQd/t480TcHMLIQgA10WQpASpsAIIggvWAeDAaSUyLLsLOGllGBmVJ79Oe48MoOH1l+KT3/zblTOW4RDT/03wlYLZ6bfg840tq9bjSyOMXHRSjy8fh1UuYTi5AJErRbC+dMQgYJmhiwWUS4WhwFPDMJo8ZNS+gWFhh6w9MAEV5qmCMPQwWRceIt/VW/gx5//LLIkxs777kEWhmiu+jU8ecefIqjWcoMwQwQBdJah+olP5GvrLE/VQoAIIA2QoLMqtQZDIE+/Nim4LDas+qMkrFQqAQDiOD6rIiul3HNSSgginD50EGBAlYooTjbBWYZis2m8SaguWYqN923Fvm4P73b7eYCPEDoCyOWAc5C9nOip3HDsZTjOFTCQEUJACuEUYGZEUeQsrjx42ZcwASII8oV0bklLYKxAtQsuwNrbvojvvncM9Ztvwz+//yFmomSE4OXnPCK4icxcOVNPlJTkFcr8nLzyL4RAtVp1CvhesAtaLzjC6AQAmHwJjBYeUfv7bdvw4sk5zH76t/HQ8RmcimIf0sNzEMgROwxrjC24PqEcp8D1et2Zwgayfcb3Qi7nEBD5esNF8ypMzhOWjCml8P2pKTzx9rt4qljFvx6fRS/NxloFRo6NYQthLM+OixGxUwAe+bIQklKi0+kgCAKHf194W7DIqGFqCxzphxGehozSWo2ZsWjxYqxYuRLvD0K82u6awLSYH7JVPVrlyYvBYRYSXrBWKhX3g263m3Oicwjvd1RDX5OBDhkK7AWkqfBWiSsuXIG5Eydww+KFuLRWde+yBrH4tx2Fnw3Heo9R6juugJ95fL4jhPD6uaH12S4sKF+cRz0wfegQVlbKOHPyJL62YgnW1Wu5wmPtZv6m4RoWQl5mHM1C/m63KIpcM+EylRdAfuBZvNIwiYMxjHIiwn9M/RuuWXcpVpSKuHfVcjSDvE7Y35nO0chPZ3lQCEGeB3IIgfKI9xWoVqvo9/uIosjxHr+Bdy81i+fw5ZFczmTeKRWYGf/4N9/A9x58EJsmG7h6QcMZxschEZsEQGAaNvvjXZ5PfxSNNeAiz0To93P+kabpWS2l67AI6M/NobzofCTdHmSpmPe+2ggPwtzrr+JHn/s9HD3wLm5bcj5Wlcs5PEwNEDZgiZz12YspHvUCOyfnWYgEeS6y1q1WKs5CvV4PQRDAciY/FtIsww2PPobo9Bmsuu46VBdfkGeyZjPnM1mK3okT6Bw7hk/Vq7ig20HcbhklNZJeF1mSAIZGsOZhQiDhjODJR543iJlhyMgolmumFlgFrMV9SqGUwqlBiH969Ed4an4ez8kiXq81sI8UlvzDt/Fhxqhd9pv42vGTKDYaiDpt3L77dVx5798harVQmlyAtV+8HY2LLgKnad7pBQHSMAQJgXQwQO/kLKLTpzE0cx5oPmcS45MDIsLExIQ773Q6ZzX1FmrnfeNvsbhWxx/82V9g+cwHWJFEWBpI7Lrrr9GJIjz3y5fwl1dfhSeOHMWz7T6+s20bnnxjL97s9jBTLGH5V/4cn/zq1xG1W7hw87X4yqv7cONPHkfn+DFc/Ic34faXX8O1D2xH2ulY77OHFBZCQPnakIlIW8yEEOh0OlBKIY7jkQkEAFCxiGDVKmghUFi7LoefKXzLmKH7PVAUgbod0OwMBgcPIO60ULjwIsy9dxjfvfYaDDKNdgq88NPH8cThaVQLBcxqAh89hiW9PpZsvApvdPv4TKMBZiZ/NsTMeRC7IZLWgFIjCrTbbSilkGWZ4yEjjNTrgy20XM9cLhtuT4guXIl4zVoMBgN0Oh2kgwF0rwe0W6idnofqtBG9tR+lOMRFS5dg7hcv4vtXXYluoYh1i89Hs9kcmei5LIRzbJZvaK0xPz/vUqvWGlEUuT2OYwwGA/T7fXS7XXcMwxBpmiKOY5fJ7DzHBeQQwyAhsHTZMlx5/Y2o1+tcLpdRLBaRxTHSfo85KJAmQhRFbC3PJk0pnGOgaltIu+j27dshpbRt3fiYz7We/hDLtqLjE7bxa/Y3F198Ma6//nru9Xro9XrOMGGgKIpi6HxtByGtdQ6hkQXsIgCuvvpqPnDgADWbTdRqNW5MTGDBwoVYMDmJiYkJVKpVBEGAUqmEBx54gHbv3j1aI8bOP86WJAmSJEGWZd64hkbGN+OGcR5grQHTsoEZjWYTmzZt4kApFItFFIpFlEollEolFAoFVI0CWmvGGCv6ONu4cszMcRRZBThNU8qyDFmWsdaajODMQ/6S9znSFCgeczFrPbSEsUCSJEjT1FnLpLb/t/A+nBx10ppi8/44jsnGTpZlZOXQWhOGXiCtNZT+iCmwwxozwjB0VouiaKRm2Iz1q3hgpIHXGnEUuQRghHe7tgY1ClgZlR+U7LWAWZpioDUXCwVSSrkMIIRAHMcshCAy85lfBUJnTSC05tBAKIoijuP4nBCy5xZCyqfTWmsMwtDldCklxUOLjVBZL/DJn9t/3M2Ob9asWYMDBw7kEIpjjuMYaZJQlmU2HshaH95aNiOpTGvEcZy7w+T/8S7KMtIkSSCEQBiGzmPWlf9X9pmYmECn08GKFSvQbDYxMzODK664Ajt27HAx1e12XREch5G9Pj5oVqbYsBCCjJZsB6dpmjIR5daIYzaOyEd8hg1at47n+2KxiEKhACklli1bBq01ms2mM0YQBIiiCGvXrsVrr72GI0eOYHp6mm655RZO05QT4wULIZNU2KsFzMwktNbAWIEAYIsWuUDSmmyeTpKEQlOJoygaEX7BggW45JJLsH79ejQaDVSrVUxOTmL//v1gZpw6dQrMjFarheeeew779+93RLHX62Hfvn1IkoQ865PWGmnuBeJhABs6DSAzVdS6ykZ5ZiiAc2eaIkkSxHGMJEkQhuFI22mxfdlll2Hv3r2oVCruufXr12PXrl348MMP8dJLL6HT6Ti4LV261EFu165dvvDD7KP18MuN2bMsM1mImbMsIzN7ZK01ERG0uW6yEhMRcZrCVBQydIOTJHFemJycxAsvvIDLL78cr7zyCuI4xokTJwAAhUIBhUIBExMTeUNkBD1z5syQ3wuBnTt30saNG9kYL888ufAOQjb7KWaONHORhoXFjq9BAGVeFkrTFDIPcnp+507s27ePut0ubdiwwQnwzjvvOBJYLpdRr9dRKBTyDGe+OfR6vZEZkR2blEolVKtVlEol/9sE6SyzxZS8Ykta60hprV8GsMkK7ZO4TGtIk17TNHVfY5IwRBzHCMPQBerChQvBzCiXywiCwLHSVqvlyKHdrTd8gf3iVi6X0e12US6XHWxGiuuQD+1WURRNKaV+R2vNUkpkacpKKdJaQwrB2kDIZidmxqFDh1AsFskKYmOk3+/j1KlTrlfw90qlgnK5jEqlMlK9pZSoVquo1WpcqVRsGj8nbABwmqZ2OkeDweAhunnLlmKj2TxdKBRK/vhipHERAhhrYPbs2UMnTpzA/Px8/nkpCNz9IAhQq9VQrVZRrVZRMN/erHWtwLVaLa/6Xp73qYzN9fZv+2GR889N4ZtvvtkkALj11ls/22g0npZSMpjdZ1XbafkTOavc0aNHqdvtYu/evajVaqjX65iYmECtVhuZI5l7XKvVcsuPfZ0/1xdQX3B7tP2GuUbHjh27ZmpqaqejBFu2bNncbDafKJVKZWa2IzwmgJRSbg5jr7PW9O7Bg+TPiyzNrtdqXK3VOAgCcnVfCFf4LBRtMfLPLS+y51mWsaUQQgiK43gwMzPzhampqecxTsI2b95cOO+8875UrVa/LKXcAKDof7C2ULLWbbVaAEDlcpn9map//Mgmx/v3G9+6PiP2PBAx8+5+v//Q9PT0D3fs2OE+LPwv2A8vO0RkWPMAAAAASUVORK5CYII=" AppURL: type: string required: true description: Relative path of the apk in S3 bucket. example: "x/EAM/Android/34aa5259-a93b-4991-9398-9c022c30f9xx" AppSize: type: string required: true description: Size of the app in bytes (B) example: "808624" IsS3Storage: type: boolean required: true description: Whether the app is stored in SureMDM's appstore example: true PlatformType: type: string required: true description: | Platform Example
Values: Android, iOS, macOS, Windows example: "Android" AppVersionCode: type: string required: true description: Version code of an application example: "511" required: - GUID - AppPackage - AppTitle - AppVersion - AppDescription - AppCategory - AppIcon - AppURL - AppSize - IsS3Storage - PlatformType - AppVersionCode AppNewDetailsModel: type: object properties: GUID: type: string description: "Globally Unique Identifier for the app." example: "2dc8ef9b-72b7-4b29-80b4-eae519096758" AppPackage: type: string description: "Package name of the app." example: "net.jolivier.cert.Importer" AppTitle: type: string description: "Title of the app, including any escaped characters." example: "username<h2>Root<h2>" AppVersion: type: string description: "Version of the app." example: "1.0.1" AppDescription: type: string description: "Description of the app." example: "ms" AppCategory: type: string description: "Category under which the app is classified." example: "dsx" AppIcon: type: string description: "Base64-encoded string representation of the application icon." example: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." AppURL: type: string description: "URL path to the app in the system." example: "111111111/EAM/Android/2dc8ef9b-72b7-4b29-80b4-eae519096758" AppSize: type: string description: "Size of the app in bytes." example: "2526965" IsS3Storage: type: boolean description: "Indicates if the app is stored in S3." example: true PlatformType: type: string description: "Platform type for the app (e.g., Android, iOS)." example: "Android" AppVersionCode: type: string description: "Version code of the app." example: "2" AppType: type: string description: "Type of the app." example: "0" Background: type: string nullable: true description: "Background URL or identifier if applicable." example: null ProductID: type: string nullable: true description: "Product ID associated with the app, if any." example: null MD5Checksum: type: string nullable: true description: "MD5 checksum for the app's integrity verification." example: null iTunesStoreID: type: string nullable: true description: "iTunes Store ID if applicable." example: null IsB2BApp: type: boolean description: "Indicates if the app is a B2B application." example: false AppIdentifier: type: string nullable: true description: "Identifier for the app." example: null AppConfigData: type: object nullable: true description: "Configuration data for the app." example: null CanAppBeManaged: type: boolean description: "Indicates if the app can be managed." example: false AppRestrictions: type: object nullable: true description: "Restrictions applied to the app." example: null AppSource: type: integer description: "Source identifier for the app." example: 0 AppWingetId: type: string nullable: true description: "Windows Package Manager ID if applicable." example: null CmdArgs: type: string nullable: true description: "Command-line arguments for the app." example: null isPkgContainsPkg: type: boolean description: "Indicates if the package contains another package." example: false IsEXE: type: boolean nullable: true description: "Indicates if the app is an executable." example: null InstallerManifestUrl: type: string nullable: true description: "URL for the installer manifest if available." example: null EAMEditAppResponseModel: type: object properties: message: type: string description: "A message indicating the result of the operation." example: "EAM App details updated successfully." data: type: object properties: SignedURL: type: string nullable: true description: "Signed URL for the app if available, otherwise null." example: null AppURL: type: string description: "URL path to the app in the system." example: "111111111/EAM/Android/2dc8ef9b-72b7-4b29-80b4-eae519096758" AppName: type: string description: "Name of the app, including any escaped characters." example: "username<h2>Root<h2>" status: type: boolean description: "Indicates whether the operation was successful." example: true EAMEditApkResponseModel: type: object properties: SignedURL: type: string description: Signed S3 URL to upload app example: "/abc/def" AppURL: type: string description: Relative path of the apk in S3 bucket. example: /abc/def EAMGetAppDetailsRequestModel: type: object properties: AppURL: type: string description: Relative path of the apk in S3 bucket. example: "x/EAM/Android/34aa5259-a93b-4991-9398-9c022c30f9xx" GUID: type: string description: Unique identifier of web application example: "" PlatformType: type: string description: | Platform (e.g: Android)
Values: Android, iOS, macOS, Windows example: "Android" IsS3Storage: type: boolean description: Whether the app is stored in SureMDM's appstore example: true EAMRequestModel: type: object properties: AppTitle: type: string description: Title of the apk file example: aurelock.apk AppSize: type: string description: Size of the app in bytes (B) example: 885802 IsS3Storage: type: boolean description: | Whether the app is stored in SureMDM's appstore example: true PlatformType: type: string description: | Platform (e.g: Android)
Values: Android, iOS example: Android EAMResponseModel: allOf: - $ref: '#/components/schemas/EAMEditAppResponseModel' - type: object properties: GUID: type: string description: Unique identifier of web application example: "" example: SignedURL: "app store S3 bucket link" GUID: "abc-def" AppURL: "/abc/def" EAMAppDetailsS3ResponseModel: type: object properties: message: type: string description: Message indicating the result of the operation. example: "App details processed successfully." data: type: object properties: SignedURL: type: string description: URL signed for uploading the app file. example: "https://suremdmjobs-stage.s3.amazonaws.com/1/EAM/Android/e99f5fa9-2467-44b5-80e7-3cf9e3d4521e?X-Amz-Expires=3600&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA44GZHHIVJ4ZYXERT/20241013/us-east-1/s3/aws4_request&X-Amz-Date=20241013T143947Z&X-Amz-SignedHeaders=host&X-Amz-Signature=c41561dc37bb947a7bb038507fcbba0896337c1752bad94ba2311c7563e15e14" GUID: type: string description: Unique identifier for the app. example: "e99f5fa9-2467-44b5-80e7-3cf9e3d4521e" AppURL: type: string description: Relative path of the app in S3. example: "1/EAM/Android/e99f5fa9-2467-44b5-80e7-3cf9e3d4521e" status: type: boolean description: Status of the request. example: true EAMRequestApkNewModel: type: object properties: GUID: type: string description: Unique identifier of the application example: "40aeddfc-1c1b-47ad-ad78-ec2965fca20c" AppURL: type: string description: | The URL or relative path of the app in S3 bucket.
Note: The AppURL should be an empty string when uploading a new APK. example: "" AppPackage: type: string description: The package name of the app example: "com.abcd.surevideo" IsS3Storage: type: boolean description: Indicates whether the app is stored in SureMDM's appstore example: true PlatformType: type: string description: The platform type of the app (e.g., Android, iOS) example: "Android" AppDescription: type: string description: Description of the application example: "xyz" AppCategory: type: string description: The category of the application example: "xyz" isModifyApp: type: boolean description: Specifies if the app is being modified example: true example: GUID: "40aeddfc-1c1b-47ad-ad78-ec2965fca20c" AppURL: "" AppPackage: "com.abcd.surevideo" IsS3Storage: true PlatformType: "Android" AppDescription: "xyz" AppCategory: "xyz" isModifyApp: true EAMRequestEditNewApkModel: type: object properties: GUID: type: string description: Unique identifier of the application example: "7c5f96dc-ac64-4143-972b-432df0d8f9da" AppPackage: type: string description: Package name of the app example: "com.gamefun.apk2u" AppTitle: type: string description: Title of the application example: "9Appsusername" AppVersion: type: string description: Version of the application example: "4.1.6.18" AppDescription: type: string description: Description of the application example: "pppsadfs" AppCategory: type: string description: Category of the application example: "hhhh" AppIcon: type: string description: Base64 encoded image of the application icon example: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAAGVn0euAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnE" AppURL: type: string description: Relative path of the APK in S3 bucket example: "111111111/EAM/Android/7c5f96dc-ac64-4143-972b-432df0d8f9da" AppSize: type: string description: Size of the application in bytes example: "8085437" IsS3Storage: type: boolean description: Whether the app is stored in SureMDM's appstore example: true PlatformType: type: string description: | Platform (e.g: Android)
Values: Android, iOS example: "Android" AppVersionCode: type: string description: Version code of the application example: "40106018" AppType: type: string description: Type of the application example: "0" Background: type: string description: Background information (if any) example: null ProductID: type: string description: ID of the product associated with the app example: null MD5Checksum: type: string description: MD5 checksum of the APK file example: null iTunesStoreID: type: string description: iTunes Store ID for the application (if applicable) example: null IsB2BApp: type: boolean description: Whether the application is a B2B app example: false AppIdentifier: type: string description: Identifier for the application example: null AppConfigData: type: string description: Configuration data for the application example: null CanAppBeManaged: type: boolean description: Whether the application can be managed by the system example: true AppRestrictions: type: string description: Any restrictions applied to the application example: null AppSource: type: integer description: Source of the application example: 0 AppWingetId: type: string description: Winget ID for the application (if applicable) example: null CmdArgs: type: string description: Command-line arguments for the application example: null isPkgContainsPkg: type: boolean description: Whether the package contains another package example: false IsEXE: type: boolean description: Whether the application is an executable example: null InstallerManifestUrl: type: string description: URL to the installer manifest (if applicable) example: null example: GUID: "7c5f96dc-ac64-4143-972b-432df0d8f9da" AppPackage: "com.gamefun.apk2u" AppTitle: "9Appsusername" AppVersion: "4.1.6.18" AppDescription: "pppsadfs" AppCategory: "hhhh" AppIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAAGVn0euAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnE" AppURL: "111111111/EAM/Android/7c5f96dc-ac64-4143-972b-432df0d8f9da" AppSize: "8085437" IsS3Storage: true PlatformType: "Android" AppVersionCode: "40106018" AppType: "0" Background: null ProductID: null MD5Checksum: null iTunesStoreID: null IsB2BApp: false AppIdentifier: null AppConfigData: null CanAppBeManaged: true AppRestrictions: null AppSource: 0 AppWingetId: null CmdArgs: null isPkgContainsPkg: false IsEXE: null InstallerManifestUrl: null EAMAppUpdateNewResponseModel: type: object properties: message: type: string description: Message indicating the result of the update operation example: "EAM App details updated successfully." data: type: object properties: SignedURL: type: string description: URL to the signed application, if applicable example: null AppURL: type: string description: Relative path of the updated APK in S3 bucket example: "111111111/EAM/Android/7c5f96dc-ac64-4143-972b-432df0d8f9da" AppName: type: string description: Name of the application example: "9Appsusername" status: type: boolean description: Indicates whether the update operation was successful example: true example: message: "EAM App details updated successfully." data: SignedURL: null AppURL: "111111111/EAM/Android/7c5f96dc-ac64-4143-972b-432df0d8f9da" AppName: "9Appsusername" status: true EAMAppUpdateWithSignedUrlResponseModel: type: object properties: message: type: string description: Message indicating the result of the update operation example: "EAM App details updated successfully." data: type: object properties: SignedURL: type: string description: URL to the signed application, if applicable example: "https://example.s3.amazonaws.com/1111111/EAM/Android/40aeddfc-1c1b-47ad-ad78-ec2965fca20c?X-Amz-Expires=7200&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAUUQR77F3DPY4ZRWX/20241021/us-east-1/s3/aws4_request&X-Amz-Date=20241021T064340Z&X-Amz-SignedHeaders=host&X-Amz-Signature=a40145c72af700f4ffb9849e26f0ecb7c106fffaf95c6766e5aa730dee0cbc38" AppURL: type: string description: Relative path of the updated APK in S3 bucket example: "1111111/EAM/Android/40aeddfc-1c1b-47ad-ad78-ec2965fca20c" AppName: type: string description: Name of the application example: null status: type: boolean description: Indicates whether the update operation was successful example: true example: message: "EAM App details updated successfully." data: SignedURL: "https://example.s3.amazonaws.com/1111111/EAM/Android/40aeddfc-1c1b-47ad-ad78-ec2965fca20c?X-Amz-Expires=7200&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAUUQR77F3DPY4ZRWX/20241021/us-east-1/s3/aws4_request&X-Amz-Date=20241021T064340Z&X-Amz-SignedHeaders=host&X-Amz-Signature=a40145c72af700f4ffb9849e26f0ecb7c106fffaf95c6766e5aa730dee0cbc38" AppURL: "1111111/EAM/Android/40aeddfc-1c1b-47ad-ad78-ec2965fca20c" AppName: null status: true EAMRequestEditAppDetailsModel: allOf: - $ref: '#/components/schemas/EAMSaveAppDetailsRequestModel' example: GUID=da4a3406-45e2-4bd0-810d-53ea10f4f6f3&AppURL=&AppPackage=com.abcd.surevideo&IsS3Storage=true&PlatformType=Android EAMRequestEditApkModel: type: object properties: GUID: type: string description: Unique identifier of web application example: 6944e61e-1f3f-4648-a3f9-3a55a98b3ad4 AppURL: type: string description: | Relative path of the apk in S3 bucket.
Note: The AppURL should be an empty string when uploading APK. example: "" AppPackage: type: string description: Package name of app example: "com.abcd.surevideo" IsS3Storage: type: boolean description: | Whether the app is stored in SureMDM's appstore example: true PlatformType: type: string description: | Platform (e.g: Android)
Values: Android, iOS example: Android example: GUID=da4a3406-45e2-4bd0-810d-53ea10f4f6f3&AppURL=&AppPackage=com.abcd.surevideo&IsS3Storage=true&PlatformType=Android DeleteScheduleReportPayload: type: object required: - OfflineReportId - ReportType - MarkDelete properties: OfflineReportId: type: string description: 'ID of the offline report to be deleted.' example: "367647" ReportType: type: string description: 'Type of the report to be deleted.' example: "200" MarkDelete: type: integer description: 'Flag to mark the report for deletion (1 for true, 0 for false).' example: 1 UploadAppModel: type: object required: - AppPackage - AppTitle - PlatformType properties: AppPackage: type: string description: Package name of an application example: com.nix AppTitle: type: string description: Title of an application example: SureMDM Nix Agent PlatformType: type: string description: It states that application is made for which platform example: Android AppURL: type: string description: URL of the hosted application example: 'https://play.google.com/store/apps/details?id=com.nix&hl=en_IN' AppVersion: type: string description: 'A string value that represents the release version of an application code, as it should be shown to users.' example: 14.2 AppVersionCode: type: string description: 'An integer value that represents the version of an application code, relative to other versions.' example: 10 AppDescription: type: string description: Description of an application example: null AppSize: type: string description: Application size in terms of Bytes example: null AppCategory: type: string description: Category of an application example: null AppIcon: type: string description: URL of the icon or icon in base64 format example: null