Hola comunidad de Discourse,
Actualmente me encuentro con problemas en los puntos finales de la API de Discourse, específicamente relacionados con la suspensión de usuarios, y agradecería enormemente cualquier ayuda o guía que puedan ofrecer.
Resumen de los problemas
-
404 No encontrado:
- Al usar el punto final:
/admin/users/15/suspend.json, recibo consistentemente un error de “Página no encontrada”, a pesar de que el usuario existe. - También he probado el punto final alternativo:
/admin/u/15/suspend.json, que resulta en el mismo problema.
- Al usar el punto final:
-
Respuesta HTML inesperada:
- En lugar de devolver la respuesta JSON esperada, la API devuelve una página HTML con el mensaje:
“¡Uy! Esa página no existe o es privada.” - Esto ocurre independientemente de si estoy usando
curlo PowerShell para la solicitud.
- En lugar de devolver la respuesta JSON esperada, la API devuelve una página HTML con el mensaje:
-
Clave API y permisos:
- La clave API que se está utilizando tiene acceso completo de administrador, sin embargo, las solicitudes continúan devolviendo un error
404. - También he probado a usar claves granulares (restringidas a acciones de suspensión) y una clave de solo lectura, pero el problema persiste.
- Curiosamente, el punto final funciona perfectamente cuando se accede a través de un navegador, pero falla cuando se utilizan solicitudes API con la clave.
- La clave API que se está utilizando tiene acceso completo de administrador, sin embargo, las solicitudes continúan devolviendo un error
Ejemplos de solicitudes
Ejemplo de 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"}'
Ejemplo de PowerShell
# Script de PowerShell para suspender un usuario en 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 "¡Usuario suspendido con éxito!" -ForegroundColor Green
} catch {
Write-Host "Error al suspender al usuario:" -ForegroundColor Red
Write-Host $_.Exception.Message
}
Detalles adicionales
- Versión de Discourse: 3.4.0.beta3
- Pasos de solución de problemas realizados: He intentado ajustar las cabeceras de la solicitud, incluyendo
User-AgentyReferer, pero sin éxito.
Cualquier información o sugerencia para ayudar a resolver estos problemas sería muy apreciada. ¡Gracias de antemano por su tiempo y apoyo!
Saludos cordiales,
Ross