burke
(Burke)
1
user_badge Webhookに user_id と一緒に username を含めることは可能でしょうか?現在、user_badge イベントのペイロードは以下のようになっています:
{
"user_badge": {
"id": 123456,
"granted_at": "2026-09-25T14:54:42.073Z",
"created_at": "2026-09-26T05:34:12.965Z",
"post_id": 234567,
"post_number": 1,
"badge_id": 123,
"user_id": 456,
"granted_by_id": -1,
"topic_id": 56789
}
}
user_id(および -1 ではない場合の granted_by_id)に対応するユーザー名を取得するには、/admin/users/{user_id}.json への追加のリクエストが必要です。これにより、リクエスト数が追加されるだけでなく、私の知る限り管理者権限も必要になります。
管理者権限を必要とせずに、API キーを使って特定の user_id の username を取得する方法はありますか?
特定のバッジが与えられたときにトリガーされる外部サービスを作成しようとしています。しかし、このサービスにはユーザー名が必要ですが、バッジの Webhook はユーザー ID のみ返します。
putty
(putty)
2
参考までに、非標準のWebhookや、追加のデータが必要な場合の私のワークアラウンドは、Workflows を通じて処理し、その結果をn8nに送信することです。
参考までに、ユーザーIDからユーザー名を取得するのはAPIを1回呼び出すだけです。もし一瞬で数千個のバッジを手動で授与するような場合を除けば、デフォルトのAPI制限内で問題なく動作するはずです。
burke
(Burke)
4
ありがとうございます。Workflowsについて調べてみます。
burke
(Burke)
5
それは良いニュースですね!/admin/users/{user_id}.json(管理者権限が必要)ではない、その1回のAPI呼び出しについて詳細を教えていただけますか?管理者権限を必要としないAPIキーでこれを行うためのエンドポイントを見つけることができませんでした。
管理用APIキーの問題は何ですか?これはバックグラウンドジョブのはずですよね?
burke
(Burke)
7
最小権限の原則です。この外部サービスは別のサーバー上で実行され、その役割を果たすにはDiscourseへの読み取りアクセスのみで十分です。インフラストラクチャ全体でマスターキーが浮遊している数は、少ないほど良いです。
ここで興味深い問題が提起されます。login_required が選択されていない場合、公開フィールドのみを表示する、IDでユーザーを取得するための公開エンドポイントがなぜ存在しないのか、ということです。あると便利ではないでしょうか。なぜ作成されなかったのか気になります。あるいは、ログイン済みのユーザーのみがそのような特権を得られるようになっているのかもしれませんが、いずれにせよ、管理用エンドポイントを使わずにアクセスする方法があるべきです…
@burke より面倒な回避策としては、/groups/trust_level_0/members.json(またはより具体的なグループ)を確認し、IDからユーザーを見つける方法があります。このエンドポイントにはユーザー名も含まれているためです。