- init: takes a cookie, returns a session (previous username, current channel, etc) if exits, else require login
- login: takes a username and IP, returns a session cookie
- create_channel: takes a cookie, channel name, and motd, returns a channel id
- channels: takes a cookie returns a list of channels and a preview message for each
- join: takes a cookie and channel id, returns `init_scrollback` previous messages, a sync rate, and a client identifier, or an error if username exists/is not allowed, or channel does not exist
- sync: takes a cookie and a last message id and returns all unseen messages.