Hi,
you are mixing HTTP method verbs with your functional requirements too much. If you have one system (as a resource), lets talk to it on /system. Your proposals state, that your /system is taking commands and the format looks like json. So lets stick to a slight variation of 2) and post exactly that command to your system:
/systemOrAnyThingYouOrFrameworkCameUpWith { "command": "reboot", "message": "system going down", "delay":"now" } (of application/vnd.syscommand+json)
Your system also may have a shutdown script (or binary) and the command can be less explicit, because the recipient at /system/shutdown knows what is up:
/system/shutdownOrAnyThingYouOrFrameworkCameUpWith { reboot: true, "message": "system going down", "delay":"now" } (of application/vnd.shutdown+json)
In both cases, you ask for a change of state. So at least a POST is required.
A DELETE on those resource should result in a graceful shutdown (of course ;) ). But you will not be able to call that resource again.
Best,
Robert