Ciao Community di Discourse,
Attualmente sto riscontrando problemi con gli endpoint dell’API di Discourse, in particolare per quanto riguarda la sospensione degli utenti, e apprezzerei molto qualsiasi assistenza o guida possiate offrire.
Riepilogo dei problemi
-
404 Non trovato:
- Quando si utilizza l’endpoint:
/admin/users/15/suspend.json, ricevo costantemente un errore “Pagina non trovata”, anche se l’utente esiste. - Ho anche provato l’endpoint alternativo:
/admin/u/15/suspend.json, che porta allo stesso problema.
- Quando si utilizza l’endpoint:
-
Risposta HTML inattesa:
- Invece di restituire la risposta JSON prevista, l’API restituisce una pagina HTML con il messaggio:
“Oops! That page doesn’t exist or is private.” - Ciò si verifica indipendentemente dal fatto che si utilizzi
curlo PowerShell per la richiesta.
- Invece di restituire la risposta JSON prevista, l’API restituisce una pagina HTML con il messaggio:
-
Chiave API e autorizzazioni:
- La chiave API utilizzata ha accesso completo da amministratore, tuttavia le richieste continuano a restituire un errore
404. - Ho anche testato utilizzando chiavi granulari (limitate alle azioni di sospensione) e una chiave di sola lettura, ma il problema persiste.
- Interessante notare che l’endpoint funziona perfettamente quando viene acceduto tramite browser, ma fallisce quando si utilizzano richieste API con la chiave.
- La chiave API utilizzata ha accesso completo da amministratore, tuttavia le richieste continuano a restituire un errore
Esempi di richieste
Esempio 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"}'
Esempio PowerShell
# Script PowerShell per sospendere un utente su 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
}
Dettagli aggiuntivi
- Versione di Discourse: 3.4.0.beta3
- Passaggi di risoluzione dei problemi eseguiti:
Ho provato a modificare gli header delle richieste, inclusiUser-AgenteReferer, ma senza successo.
Qualsiasi intuizione o suggerimento per aiutare a risolvere questi problemi sarebbe molto apprezzato. Grazie in anticipo per il vostro tempo e supporto!
Cordiali saluti,
Ross