If you were building the forum from scratch, I'd say build everything as a JSON api, follow an HMVC approach and when your app is done decide which parts of the api to make public.
For an existing app like your forum, it would be extremely nice if you provide RSS for everything public:
- Discussions / Posts
- Categories / Tags
- User profiles
- etc
And build a sensible mechanism for building custom rss feeds:
If http:/myForum/category/Cat1 is the url for category Cat1 then:
- http:/myForum/category/Cat1.rss
- http:/myForum/rss/category/Cat1
are possible candidates for the category's feed. Pick one and stick with it (or pick something else but do stick with it). Let's say you picked the first one, do some extra magic and build stuff like:
http:/myForum/category/Cat1+Cat2+Cat3.rss
So if you do follow my advice and go with rss for everything public, that leaves us with everything that needs authentication. So the obvious first thing to build in your api is OAuth. Other sensible stuff for a forum api:
- Let me edit my profile
- Let me post an article / comment
For the more high level stuff:
- Give us some way to decide on what version of your api we prefer, especially if you're expecting to have multiple versions in the wild
- Be fanatically consistent when naming things
- Working real life examples are more important than documentation
- If there is no documentation noone will bother with the real life examples.
- APIs must be extremely fast. Cache / compress / do whatever possible so it takes me less than 15 seconds to post via my extremely slow GPRS