API 経由で新しいトピックを投稿する

こんにちは、

投稿がうまくいかないようです。API ドキュメントでもフォーラムでも、ほとんど情報が見つかりませんでした。

タイトルと生の投稿本文の文字列に対して、どのようなエンコーディングやクリーニング(もしあれば)を行う必要がありますか?

/posts.json{api_username, api_key, title, raw, created_at, archetype, skip_validations} フィールドと form-data ヘッダーで投稿すると、奇妙なことに 404 エラーが発生します。Python で試していますが、Postman でも同じ結果になります。

何が間違っているのか、何かヒントをいただけますでしょうか?

Standard www-form encoding is all. Make sure you’re sending either (api_username, api_key) or (Cookie, X-CSRF-Token).

「いいね!」 5

But am I supposed to receive 404 in any case? I do include api_username and api _key in the form…

Update: if I send the same request under admin user / master api_key it goes through, but I get 404 if I submit under another user but still with master api_key, bug or my mistake?

Can you provide more info and maybe a code snippet of your posting attempt?

「いいね!」 3

Hello - I don’t want to create a new topic because I seem to be having the exact same issue; I’m using the latest discourse_api gem, and I have generated a master API key; I’m creating posts on behalf of existing users (fetching content they put elsewhere).

A normal call

c.create_topic category: category, title: new_title,
                   raw: new_content, api_username: username

Works on some users, and not on others; I get a {"status"=>404, "error"=>"Not Found"} response.

Only differences I can tell are:

  • The user for whom I can create is in staff (others aren’t)
  • The user for whom I can create has a user name identical to the name, and is lowercase (others don’t and aren’t)

Furthermore, if I go to the web interface, create the post, and transfer ownership, it works. So far I’m letting the automaton do its job with the ones that can be created, and give me the text to manually create the ones that can’t. But at over 1000 posts that won’t be created automatically, I despair a little :sweat_smile:

EDIT: verified name situation is not the issue… It may be related to the staff thing.

EDITEDIT: I worked around this by creating in a user’s name, then changing ownership to another user. The mere fact that this is possible on the same API key makes me lean towards the 404 behavior being a bug.

「いいね!」 2

これ、解決しましたか?

投稿作成APIで画像を送信する方法。ドキュメントのAPIリクエストには画像用のキーが記載されていません。
https://docs.discourse.org/#tag/Posts/operation/createTopicPostPM

{
  "title": "string",
  "raw": "string",
  "topic_id": 0,
  "category": 0,
  "target_recipients": "blake,sam",
  "target_usernames": "string",
  "archetype": "private_message",
  "created_at": "string",
  "reply_to_post_number": 0,
  "embed_url": "string",
  "external_id": "string"
}
「いいね!」 1

uploads エンドポイントを使用する必要があります: https://docs.discourse.org/#tag/Uploads
次に、返された short_url 値を使用して投稿に挿入します。

「いいね!」 2