Files
micromdm/tools/api/commands/schedule_os_update
2022-07-15 10:14:14 -07:00

98 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
source $MICROMDM_ENV_PATH
endpoint="v1/commands"
function help
{
cat >&2 <<-eof
Usage: $0 udid key action
$0 udid action [option] ...
The first invication (using three positional arguments) is provided for compatibility
with an earlier version of this script.
Positional arguments:
udid device udid
action InstallAction parameter of the UpdatesItem record
key ProductKey parameter of the UpdatesItem record
Options:
-h, --help show this help message and exit
--version VER set VER as ProductVersion parameter of the UpdatesItem record
--key KEY set KEY as ProductKey parameter of the UpdatesItem record
--deferrals NUM set NUM as MaxUserDeferrals parameter of the UpdatesItem record
--priority PRI set PRI as Priority parameter of the UpdatesItem record
--uuid UUID use UUID as the command uuid for this request
The ScheduleOSUpdate command is documented as part of Apple's Commands and Queries API
within the Mobile Device Management (MDM) protocol documentation. This documentaion if available
using this link:
https://developer.apple.com/documentation/devicemanagement/scheduleosupdatecommand/
and the documentation for the UpdatesItem record is available here:
https://developer.apple.com/documentation/devicemanagement/scheduleosupdatecommand/command/updatesitem.
Parameters with limited possible values:
InstallAction Default, DownloadOnly, InstallASAP, NotifyOnly, InstallLater, InstallForceRestart
Priority Low, High
eof
exit
}
udid=$1
unset version deferrals priority uuid key
case $# in
0|1) help ;;
3)
key=$2
action=$3
shift 3
;;
*)
action=$2
shift 2
;;
esac
while (($# > 0)); do
case $1 in
-h|-help) help ;;
--version) version=$2 ;;
--deferrals) deferrals=$2 ;;
--priority) priority=$2 ;;
--uuid) uuid=$2 ;;
--key) key=$2 ;;
*) echo "$0: unknown option \`$1'." >&2
echo >&2
help ;;
esac
if (($# > 1)); then
shift 2
else
echo "$0: missing parameter for option \`$1'." >&2
echo >&2
help
fi
done
jq -n \
--arg request_type "ScheduleOSUpdate" \
--arg udid "$udid" \
--arg product_key "$key" \
--arg product_version "$version" \
--arg install_action "$action" \
--arg priority "$priority" \
--argjson max_user_deferrals "${deferrals--1}" \
--arg command_uuid "$uuid" \
'.udid = $udid
| if $command_uuid != "" then .command_uuid = $command_uuid else . end
| .request_type = $request_type
| .updates = [
.install_action = $install_action
| if $max_user_deferrals != -1 then .max_user_deferrals = $max_user_deferrals else . end
| if $product_key != "" then .product_key = $product_key else . end
| if $product_version != "" then .product_version = $product_version else . end
| if $priority != "" then .priority = $priority else . end
]
'|\
curl $CURL_OPTS -K <(cat <<< "-u micromdm:$API_TOKEN") "$SERVER_URL/$endpoint" -d@-