Bonjour à la communauté Discourse,
Je rencontre actuellement des difficultés avec les points de terminaison de l’API Discourse, en particulier ceux liés à la suspension des utilisateurs, et j’apprécierais toute aide ou orientation que vous pourriez m’offrir.
Résumé des problèmes
-
404 Non trouvé :
- Lorsque j’utilise le point de terminaison :
/admin/users/15/suspend.json, je reçois constamment une erreur « Page non trouvée », même si l’utilisateur existe. - J’ai également essayé le point de terminaison alternatif :
/admin/u/15/suspend.json, qui aboutit au même problème.
- Lorsque j’utilise le point de terminaison :
-
Réponse HTML inattendue :
- Au lieu de renvoyer la réponse JSON attendue, l’API renvoie une page HTML avec le message :
« Oups ! Cette page n’existe pas ou est privée. » - Cela se produit, que j’utilise
curlou PowerShell pour la requête.
- Au lieu de renvoyer la réponse JSON attendue, l’API renvoie une page HTML avec le message :
-
Clé API et autorisations :
- La clé API utilisée dispose d’un accès administrateur complet, mais les requêtes continuent de renvoyer une erreur
404. - J’ai également testé avec des clés granulaires (restreintes aux actions de suspension) et une clé en lecture seule, mais le problème persiste.
- Il est intéressant de noter que le point de terminaison fonctionne parfaitement lorsqu’il est accédé via un navigateur, mais échoue lorsqu’il utilise des requêtes API avec la clé.
- La clé API utilisée dispose d’un accès administrateur complet, mais les requêtes continuent de renvoyer une erreur
Exemples de requêtes
Exemple 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"}'
Exemple PowerShell
# Script PowerShell pour suspendre un utilisateur sur 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 "Utilisateur suspendu avec succès !" -ForegroundColor Green
} catch {
Write-Host "Erreur lors de la suspension de l'utilisateur :" -ForegroundColor Red
Write-Host $_.Exception.Message
}
Détails supplémentaires
- Version de Discourse : 3.4.0.beta3
- Étapes de dépannage effectuées :
J’ai essayé d’ajuster les en-têtes de requête, y comprisUser-AgentetReferer, mais sans succès.
Toute idée ou suggestion pour m’aider à résoudre ces problèmes serait grandement appréciée. Merci d’avance pour votre temps et votre soutien !
Cordialement,
Ross