Хороший способ определить, какой вызов API нужно выполнить для определённого действия, — это выполнить это действие через пользовательский интерфейс Discourse, одновременно наблюдая за вкладкой «Network» в инструментах разработчика браузера, чтобы найти детали запроса. Подробнее об этом подходе см. в статье Как реверс-инженерить API Discourse.
Аватары пользователей можно обновить до системного аватара, отправив API-запрос PUT по адресу:
http://forum.example.com/u/<discourse_username>/preferences/avatar/pick
В данных формы запроса укажите type=system. Вам нужно подставить URL вашего форума и имя пользователя Discourse, которое нужно обновить, в URL.
Вот пример запроса curl с моего локального сайта. Я установил переменную $api_key в значение моего общего API-ключа для всех пользователей:
curl -X PUT "http://localhost:3000/u/scossar/preferences/avatar/pick" \
-H "Api-Key: $api_key" \
-H "Api-Username: system" \
-H "Content-Type: multipart/form-data;" \
-F "type=system"
Обратите внимание: этот запрос не сработает, если включена настройка сайта sso overrides avatar.