# SimpleShout A small chat box API for use on public websites. ## Features: - Basic permissions: admin vs everyone else - Message creation - Discord style emoji: [example](https://github.com/NervN/discord-emojis/blob/main/assets/UnicodeEmojis.json), [emojibase](https://emojibase.dev/) - Message deletion (admin) - Message sanitization - Keyword filtering - Responsive web UI - Embed/iframe-able ## Deps - rocket - sled - snowflake id ## API - 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. - send: sends a message, returns a status - login: accepts password, gives client admin perms if password is correct - delete: takes an admin client identifier and a message id - ban: bans a client ## Structs - config - admin_password - ratelimit (req/min) - `[reserved_username:ip_address]` - `[banned_words]` - `[banned_usernames]` - `[banned_ips]` - init_scrollback - sync_rate - channel - id - name - motd - message - id - channel_id - client_id - timestamp - body - client - client_id - username - ip_address - admin_perms - banned - ratelimit - last_channel_id