Plugin controller spec: Plugin routes are not drawn

If you are creating a sub-path for your plugin, I recommend an engine. All our major plugins do so. If you are wanting to change existing routes, an engine is not required.

I don’t see anything immediately wrong with your example. My suggestion would be to start with one of the official plugins and update it to match what you are doing until it works, and go from there.