Sending MDM Commands
What
One of the powerful additional features of FileWave Anywhere, is the ability to send MDM commands to devices. As such, the FileWave Anywhere API also has this incredible ability.
From, the Swagger Documentation, the following can be seen:
Note the reference to the device(s) is now by 'ids'. This refers to the Client ID, as oppose to the Device ID, and is always an Integer.
Example data could look like:
{
"ids": [
737581
],
"command": "DeviceInformation"
}
'ids' is a list of devices, so multiple devices could be targeted in one RESTful API command.
HOW
This is an example of a RESTful API request that is only available through the FileWave Anywhere API.
Running the command from the Swagger Documentation will show the URL path required to send a command. For example, to restart devices:
macOS and Linux:
mdm_command='{"ids": [737581, 562620],"command": "RestartDevice"}'
curl -H "Authorization: $auth" \
-X POST https://${server_dns}/api/devices/v1/devices/mdm-command \
-d "$mdm_command" \
-H "Content-Type: application/json"
Windows Powershell:
$mdm_command = '{"ids": [737581, 562620],"command": "RestartDevice"}'
$header = @{Authorization=“$auth"}
Invoke-RestMethod -Method POST \
-Headers $header \
-ContentType application/json \
-Uri https://${server_dns}/api/devices/v1/devices/mdm-command \
-Body $mdm_command
What commands are available
From the Swagger, there is the following text:
Command options can be specified in 'options' field of the request for the following commands: DeviceLock,
EraseDevice, SetFirmwarePassword, VerifyFirmwarePassword, UnlockUserAccount, RestartDevice.
Acceptable options for each command are listed in Apple documentation: https://developer.apple.com/documentation/devicemanagement/commands_and_queries
Some commands have been listed, but the link to Apple's documentation shows all possible commands:
If a new command is released by Apple before it appears in FileWave, the API should be able to trigger that command
To use Apple's documentation, navigate through the pages for the chosen command to locate the 'RequestType'. For example, the following shows the command to shut a device down is: ShutDownDevice