Quando executo essa chamada, o Discourse me responde com {locked: false}.
Tentei bloquear a postagem manualmente e inspecionar a chamada de API que o cliente Discourse faz, e ela parece muito semelhante à que faço do meu aplicativo, com exceção do método de autenticação, talvez.
Não tenho certeza do que está acontecendo, alguma ideia?
A API para bloquear uma postagem está documentada aqui Discourse API Docs, mas sim, eu também tentei fazer engenharia reversa de como o cliente Discourse faz isso, e parece muito semelhante à maneira como estou fazendo isso do meu aplicativo.
O que parece estar fazendo uma comparação de string.
Isso significa que você precisaria enviar \"locked\": \"true\" e não \"locked\": true, e que a documentação ou o código precisariam ser atualizados para refletir ou alterar esse comportamento.
O navegador não envia uma requisição JSON, ele envia Content-Type: application/x-www-form-urlencoded que interpretará o parâmetro como uma string, e é por isso que funciona no navegador.