こんにちは、Discourse コミュニティの皆様、
現在、Discourse API エンドポイント、特にユーザーの一時停止に関連する問題に直面しており、皆様からの支援やガイダンスをいただければ幸いです。
問題の概要
-
404 Not Found:
- エンドポイント
/admin/users/15/suspend.jsonを使用すると、ユーザーは存在しているにもかかわらず、一貫して「ページが見つかりません」というエラーが発生します。 - 代替エンドポイント
/admin/u/15/suspend.jsonも試しましたが、同じ問題が発生します。
- エンドポイント
-
予期しない HTML レスポンス:
- 期待される JSON レスポンスの代わりに、API は「おっと!そのページは存在しないか、プライベートです。」というメッセージが表示された HTML ページを返します。
- これは、
curlを使用しても PowerShell を使用しても、リクエストで発生します。
-
API キーと権限:
- 使用している API キーは完全な管理者アクセス権を持っていますが、リクエストは引き続き
404エラーを返します。 - 一時停止アクションに制限された粒度の細かいキーや読み取り専用キーもテストしましたが、問題は解決しません。
- 興味深いことに、ブラウザ経由でアクセスするとエンドポイントは正常に機能しますが、キーを使用した API リクエストでは失敗します。
- 使用している API キーは完全な管理者アクセス権を持っていますが、リクエストは引き続き
リクエスト例
curl 例
curl -X PUT "https://your-discourse-domain.com/admin/users/15/suspend.json" \
-H "Api-Key: [REDACTED_API_KEY]" \
-H "Api-Username: system" \
-H "Content-Type: application/json" \
-d '{"suspend_until": "2024-12-31", "reason": "Violation of community guidelines"}'
PowerShell 例
# Discourse でユーザーを一時停止するための PowerShell スクリプト
$baseUrl = "https://your-discourse-domain.com"
$userId = 15
$apiKey = "[REDACTED_API_KEY]"
$apiUsername = "system"
$suspendUntil = "2024-12-31"
$reason = "Violation of community guidelines"
$headers = @{
"Api-Key" = $apiKey
"Api-Username" = $apiUsername
"Content-Type" = "application/json"
}
$body = @{
suspend_until = $suspendUntil
reason = $reason
} | ConvertTo-Json
$endpoint = "$baseUrl/admin/users/$userId/suspend.json"
try {
$response = Invoke-RestMethod -Uri $endpoint -Method Put -Headers $headers -Body $body -ErrorAction Stop
Write-Host "User suspended successfully!" -ForegroundColor Green
} catch {
Write-Host "Error suspending user:" -ForegroundColor Red
Write-Host $_.Exception.Message
}
追加情報
- Discourse バージョン:3.4.0.beta3
- 実施したトラブルシューティング手順:
User-AgentやRefererを含むリクエストヘッダーを調整しましたが、効果はありませんでした。
これらの問題の解決に役立つ洞察や提案があれば、大いに感謝いたします。事前に時間とサポートをいただきありがとうございます!
よろしくお願いいたします。
Ross