Just in case it benefits anyone else, I have a solution.
If you look at the schema, via https://<ipaddress>:<port>/api/ then you'll see that some items have a type of "Inline Model <n>" and some have a type of "object". The former tend to be of the format "param_name": { "param-name": value } as you have discovered (note dashes and underscores), whilst the latter are what ssid_enable and hide_ssid are.
Every object and sub-object of this type "object" can optionally contain another field called "_action" which indicates what should be done with the object.
The various values it can take is:
- "add" - add this new object and if already present, it will replace the old object with new.
- "delete" - delete the instance of a multi-instance object or delete the full object for a single instance object.
- "noop" - No action is required for this object. This value should ideally never be used.
Not specifying anything appears to behave as adding it if was previously absent, or setting it to default if already present (or possibly leaving it unchanged, I'm not sure).
Thus, to enable the ssid, you use
"ssid_enable": {} or, if you want to be explicit, "ssid_enable": {"_action": "add"}
And to disable the ssid you use "ssid_enable": {"_action": "delete"}
Likewise to hide an ssid you use "hide_ssid": {} or "hide_ssid": {"_action": "add"}
And to show the ssid you use "hide_ssid": {"_action": "delete"}