Olá Comunidade Discourse,
Estou atualmente enfrentando desafios com os endpoints da API do Discourse, especificamente relacionados à suspensão de usuários, e agradeceria muito qualquer ajuda ou orientação que vocês possam oferecer.
Resumo dos Problemas
-
404 Não Encontrado:
- Ao usar o endpoint:
/admin/users/15/suspend.json, recebo consistentemente um erro de “Página Não Encontrada”, mesmo que o usuário exista. - Também tentei o endpoint alternativo:
/admin/u/15/suspend.json, que resulta no mesmo problema.
- Ao usar o endpoint:
-
Resposta HTML Inesperada:
- Em vez de retornar a resposta JSON esperada, a API retorna uma página HTML com a mensagem:
“Oops! Essa página não existe ou é privada.” - Isso ocorre independentemente de eu estar usando
curlou PowerShell para a solicitação.
- Em vez de retornar a resposta JSON esperada, a API retorna uma página HTML com a mensagem:
-
Chave de API e Permissões:
- A chave de API em uso tem acesso total de administrador, mas as solicitações continuam retornando um erro
404. - Também testei usando chaves granulares (restritas a ações de suspensão) e uma chave somente leitura, mas o problema persiste.
- Curiosamente, o endpoint funciona perfeitamente quando acessado via navegador, mas falha ao usar solicitações de API com a chave.
- A chave de API em uso tem acesso total de administrador, mas as solicitações continuam retornando um erro
Exemplos de Solicitações
Exemplo com 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"}'
Exemplo com PowerShell
# Script PowerShell para Suspender um Usuário no 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 "Usuário suspenso com sucesso!" -ForegroundColor Green
} catch {
Write-Host "Erro ao suspender usuário:" -ForegroundColor Red
Write-Host $_.Exception.Message
}
Detalhes Adicionais
- Versão do Discourse: 3.4.0.beta3
- Etapas de Solução de Problemas Realizadas:
Tentei ajustar os cabeçalhos da solicitação, incluindoUser-AgenteReferer, mas sem sucesso.
Quaisquer insights ou sugestões para ajudar a resolver esses problemas seriam muito apreciados. Obrigado antecipadamente pelo seu tempo e apoio!
Atenciosamente,
Ross