ポインタありがとうございます。それを使ってみました。primary_group_name、primary_group_id、そしてgroups配列のエントリである['primary_group'] = trueを更新しました。gemを使用してupdate_userを呼び出すと200が返ってきますが、まだうまくいっていません。明日、もう少し詳しく見て、何がうまくいかないのかの手がかりがないか確認します。ただし、明白なものはありませんでした。
サーバーから200コードが返ってきたときに実行したコードは次のとおりです。
client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = 'これをテストするためのグローバル権限を持つAPIキー'
client.api_username = '管理者ユーザー名 -- これは関係ないと思いますが'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# これはgroups配列内のグループ42です
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)