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

Я хочу сбросить аватар при использовании sync_sso (вернуться к использованию letter_avatar_proxy).
В данный момент я передаю avatar_force_update=true и не указываю значение для avatar_url. Должен ли я передавать явное значение (null?) для avatar_url? Заранее спасибо.

Изучив код Discourse SSO, я не думаю, что сбросить аватар пользователя на буквенный, вызвав sync_sso, будет возможно. Код пытается загрузить аватар по URL, переданному в параметре avatar_url. Если этот параметр опущен, установлен в null или пустую строку, аватар пользователя не изменится.

Как мне запросить у API выполнение такого действия? Я попытался реализовать обходной путь, но он пока не работает должным образом.

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

Как ни странно, это тот обходной путь, который я пробовал, но результаты были непоследовательными. Я ещё немного поработаю над этим и отпишусь.