アーキタイプを設定していますか?今後、送信しているリクエストを含めていただければ、お手伝いしやすくなります。
以下の例は私の環境で動作します:
curl https://$DISCOURSE_HOSTNAME/posts \
-H "api-key: $DISCOURSE_API_KEY" \
--data 'title=Testing PM creation&archetype=private_message&target_recipients=user1,user2' \
--data-urlencode 'raw=PM body, long enough to meet site rules & may be complex ♥'
all_users API キーを使用している場合は、api-username も指定する必要があります。
「いいね!」 3
ありがとうございます、解決しました!いいえ、API ドキュメントに archetype が必須と記載されていなかった(target_usernames のような「プライベートメッセージの場合必須」という記載すらなく)、その目的についても何も書かれていなかったため、触っていませんでした。
とにかく、これで動作するようになりました。同じ問題に直面する方の参考になれば幸いです(特に POST を使用する場合)。私の正常に動作するリクエストに含まれる JSON エンコードされたボディ要素は以下の通りです:
| key |
value |
| raw |
生メッセージテキスト |
| title |
メッセージ/スレッドのタイトル |
| target_usernames |
カンマ区切りのユーザー名リスト |
| archetype |
文字列 private_message |
これは /posts.json への POST リクエストのボディとして送信され、以下のカスタムヘッダーフィールドを含みます:
| key |
value |
| Content-Type |
application/json; charset=UTF-8 |
| Api-Key |
キーデータ |
| Api-Username |
ユーザー名 |
「いいね!」 2