@rod It's nothing special, it's just a habit that I have trained myself into.
If there's even a chance the parent object is not defined, I make a check for it first (though app is always defined in NodeBB, so I skip that).
The proper way to write it would be: if (app.hasOwnProperty('user')), but even sometimes that can be tripped up if app.user is a property, but undefined
I don't think so, unfortunately -- you'll have to make the initial call to get the topic, and then subsequent calls to grab the raw markdown. I don't think we'll be adding a way to retrieve the raw markdown at the topic level because we wouldn't have any use for it.
Unfortunately the "GET API" as you call it is integral to the functionality of NodeBB on the client-side. During the normal usage of NodeBB, it is constantly using the /api to load new pages, etc. It's not something that can be turned off, but it might be possible to restrict it to only accessible to users with a certain cookie. This doesn't currently exist, though.
You can open an issue on Github if you'd like this looked into further.