User profiles API
closes #48