Привет, сообщество Discourse,
В настоящее время я сталкиваюсь с проблемами при работе с конечными точками API Discourse, в частности, связанными с приостановкой пользователей, и был бы крайне признателен за любую помощь или рекомендации, которые вы можете предложить.
Краткое описание проблем
-
404 Not Found:
- При использовании конечной точки:
/admin/users/15/suspend.jsonя постоянно получаю ошибку «Page Not Found» (Страница не найдена), даже если пользователь существует. - Я также пробовал альтернативную конечную точку:
/admin/u/15/suspend.json, но результат тот же.
- При использовании конечной точки:
-
Неожиданный HTML-ответ:
- Вместо ожидаемого JSON-ответа API возвращает HTML-страницу с сообщением:
«Oops! That page doesn’t exist or is private.» (Упс! Страница не существует или является приватной). - Это происходит независимо от того, использую ли я
curlили PowerShell для отправки запроса.
- Вместо ожидаемого JSON-ответа API возвращает HTML-страницу с сообщением:
-
Ключ 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
# Скрипт PowerShell для приостановки пользователя в Discourse
$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, но безрезультатно.
Буду очень признателен за любые идеи или предложения, которые помогут решить эти проблемы. Заранее спасибо за ваше время и поддержку!
С наилучшими пожеланиями,
Росс