Как обновить пользователей через API, используя ID пользователя (а не имя пользователя)?

На данный момент, по-моему, ваш лучший вариант — выполнить два API-запроса. Первый — получить пользователя по id, чтобы узнать имя пользователя, а второй — обновить данные по имени пользователя.

Существует возможность обновить пользователя по external_id, но, как мне кажется, это нельзя сделать без включённого единого входа (single-sign-on). При таком подходе Discourse хранит id пользователя вашего приложения, а не наоборот.