Discourse API を使用して投稿のステータスを ‘pinned-globally’ に設定する Python スクリプトを作成しています。API ドキュメント に従っています。
‘pinned-globally’ を指定したリクエストは 400 エラーで失敗しますが、ステータスパラメータを ‘pinned’ に設定したリクエストは正常に動作します(つまり、投稿がローカルでピン留めされているのが確認できます)。
コードの抜粋は以下の通りです:
apiWebsite = '<my_website_URL>'
apiKey = '<secret>'
apiUsername = '<secret>'
headers = {
'Api-Key': apiKey,
'Api-Username': apiUsername
}
# このリクエストは正常に動作します
# 同じ投稿をローカルでピン留め
payload = {
'status': 'pinned',
'enabled': 'true',
'until': '2019-11-25T08:00:00'
}
u = requests.put(apiWebsite + '/t/29082/status', headers=headers, data=payload)
print(u.status_code)
ピン留めステータスを false に戻した後、以下のようにグローバルにピン留めを試みます。
# このリクエストは動作しません
# 同じトピックをグローバルにピン留め
payload = {
'status': 'pinned-globally',
'enabled': 'true',
'until': '2019-11-25T08:00:00'
}
u = requests.put(apiWebsite + '/t/29082/status', headers=headers, data=payload)
print(u.status_code)
明らかな見落としがあるのか、それとも本当のバグなのか、ご教示ください。
追記:ユーザーには十分な権限があります。
「いいね!」 2
david
(David Taylor)
2
同じトピックをグローバルとローカルの両方で同時にピン留めすることはできません。どちらか一方を選択してください。
「いいね!」 1
こんにちは、David さん。
もちろん、2 つのリクエストの違いを示すために、あえてコードをそのように記述しました。
最初の投稿をより明確にするために変更します。
「いいね!」 1
david
(David Taylor)
4
お疲れ様です
。コードを確認したところ、400 エラーの原因となる箇所が見つかりました。
pinned-globally の代わりに pinned_globally が必要ではないでしょうか。試して、動作するか確認してもらえますか?どうやら API ドキュメントにタイプミスがあったようです。修正します。
追記:修正済み Correct pinned_globally in topic status documentation · discourse/discourse_api_docs@fcf0d5f · GitHub
「いいね!」 5