API Working Group/Current Design/Actions

= Analysis =

The most consistent thing is that all actions use POST.

Nova and Trove use /action while Heat uses /actions

Parameterless actions in Nova are very inconsistent on how no parameters are represented.

There is one case where Server actions (os-instance-actions) have actions as an actual resource.

= Current Design =

Nova
Server actions

Extensions

POST /v2/​{tenant_id}​/servers/​{server_id}​/action {   "some_action": { "param1": "value1", "param2": "value2" } } or { "some_action": null } or { "some_action": {} } or { "some_action": "None" }

Server actions (os-instance-actions)

GET /v2/​{tenant_id}​/servers/​{server_id}​/os-instance-actions GET /v2/​{tenant_id}​/servers/​{server_id}​/os-instance-actions/​{action_id}​

Trove
Database instance actions (action)

POST /v1.0/​{accountId}​/instances/​{instanceId}​/action {   "some_action": { "param1": "value1", "param2": "value2" } } or { "some_action": {} }

Heat
Stack actions

POST /v1/​{tenant_id}​/stacks/​{stack_name}​/​{stack_id}​/actions {   "some_action": null }