I succeeded in adding a watcher to an issue in JIRA 7.0. To get it to work, I used HTTPie to submit the request, which failed with a 400 BAD REQUEST, as yours did, and then I edited the request in my debugging proxy (Charles) so that the body contains only a string. The raw content of the successful request was as follows:
Wow.
It appears, like you’ve suggested and actually like the documentation example, that the request body needs the username with double quotes surrounding it.
But the request must also have the application/json header…
Yeah, I don’t believe that “admin” is valid JSON. HTTPie wouldn’t even let me create a request like that. It can be done pretty easily with AP.Request though.