Você está definindo o arquétipo? No futuro, se você incluir a solicitação que está enviando, será mais fácil ajudá-lo.
O seguinte exemplo funciona para mim:
curl https://$DISCOURSE_HOSTNAME/posts \
-H "api-key: $DISCOURSE_API_KEY" \
--data 'title=Testando criação de MP&archetype=private_message&target_recipients=user1,user2' \
--data-urlencode 'raw=Corpo da MP, longo o suficiente para atender às regras do site & pode ser complexo ♥'
se você estiver usando uma chave de API all_users, também precisará especificar api-username
Obrigado, isso resolveu! Não, como a documentação da API não listava archetype como obrigatório (nem mesmo “obrigatório para mensagens privadas” da mesma forma que target_usernames) e não dizia nada sobre sua finalidade, eu não mexia nele.
De qualquer forma, isso agora funciona. Para referência de quem encontrar o mesmo problema (especialmente ao usar POST), os elementos do corpo codificados em JSON na minha requisição funcional são:
| key |
value |
| raw |
o texto bruto da mensagem |
| title |
o título da mensagem/thread |
| target_usernames |
lista de nomes de usuário separada por vírgulas |
| archetype |
a string literal private_message |
Isso é enviado como corpo de um POST para /posts.json com os campos de cabeçalho personalizados:
| key |
value |
| Content-Type |
application/json; charset=UTF-8 |
| Api-Key |
dados da chave |
| Api-Username |
o nome de usuário |