Сброс аватара при синхронизации SSO

Хороший способ определить, какой вызов 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.