Authoring Limit Site SettingsへのAPIアクセスを確認

Discourse への API 経由で関連トピックを公開・同期する統合機能の開発を行っています。セットアップ時の診断のために、トピックの作成や更新を試みる前に統合機能がコンテンツを事前検証できるよう、フォーラムの現在の作成制限値を読み取りたいと考えています。

アクセスを確認しようとしている設定は以下の通りです:

min_topic_title_length
max_topic_title_length
min_first_post_length
min_post_length
max_post_length
max_tags_per_topic
max_tag_length
tagging_enabled
create_tag_allowed_groups
tag_topic_allowed_groups

まず /site.json を確認しましたが、これはアクセス可能で公開機能のヒントとして有用です。しかし、これらの具体的な作成制限値の設定は公開されていないようです。

管理者ではないボットユーザーの API キーを使用した場合、以下のパスは 404 を返しました:

/site_settings.json
/admin/site_settings.json
/admin/site_settings

ボットユーザーを管理者にした後、以下のパスが動作しました:

/admin/site_settings.json
/admin/site_settings

使用したヘッダーは以下の通りです:

Accept: application/json
Api-Key: ...
Api-Username: discussbridge-bot
X-Requested-With: XMLHttpRequest

/site_settings.json は依然として 404 を返しました。

私の質問:

  1. 現在のサイト設定を読み取るための標準的な API パスは /admin/site_settings.json でしょうか?
  2. 管理者権限が必要なのか、それともこれに対応する読み取り専用または細粒度の API スコープがサポートされているのでしょうか?
  3. /site_settings.json は廃止されたもの、プラグイン依存のもの、または存在が想定されていないものなのでしょうか?
  4. 統合機能において、推奨されるパターンは、設定の読み取りには管理者権限を持つ診断/セットアップ用のキーを使用し、通常のトピック/投稿の同期作業には権限の低い公開用キーを使用することでしょうか?

目標は API を介して設定を変更することではなく、セットアップ時の診断中にそれらを読み取ることです。これにより統合機能が

  1. それは /admin/site_settings.json です

  2. client: true を持つ設定を除き、管理者である必要があります。これらの設定は /site/settings.json で確認できます。

最後の2つを除く、必要なすべての設定は /site/settings.json で確認できます。

ただし、許可されたグループについては、仕組みが異なります。特定のユーザーとして /site.json をリクエストすると、can_tag_topicscan_create_tags を確認できます。

  1. 私が知る限り、/site_settings.json というファイルは存在したことがありません。

  2. あなたの特定のユースケースでは、通常のユーザーで十分で、上記2番のパターンを使用すれば問題ないと思います。

@RGJ さん、ありがとう。まさにその区別が欠けていました。

私のフォーラムでパスをテストし、以下の通り確認できました:

/site/settings.json

/site.json

これらは現在のグローバル/管理者用ボットキーで動作します。

/site/settings.json は、私が必要とする数値の作成制限(以下を含む)を公開します:

min_topic_title_length
max_topic_title_length
min_first_post_length
min_post_length
max_post_length
max_tags_per_topic
max_tag_length
tagging_enabled

また、ボットユーザーとしてリクエストされた /site.json は以下を公開します:

can_tag_topics
can_create_tag

これはセットアップ診断に適したパターンのように思えます。

追記:トピック/投稿/カテゴリ/タグの公開作業用にスコープされた細粒度の API キーもテストしました:

categories:list
categories:show
posts:edit
posts:list
search:show
tags:list
topics:write
topics:update
topics:read
topics:status

この細粒度キーでは:

/t/{topic_id}.json は動作します
/tags.json          は動作します
/categories.json    は動作します

しかし:

/site/settings.json  403
/site.json           403

管理者 UI に、これらの2つのサイトレベルのエンドポイントへのアクセスを許可する明らかな細粒度スコープは見当たりません。

/site/settings.json/site.json 用の細粒度スコープや許可された URL 設定を見落としているでしょうか?

キーは管理者ボットユーザー用であるため、各キーはユーザーレベルで管理者権限を持っています。細粒度キーは、呼び出すことのできる API エンドポイントを制限するだけです。

そうでない場合、テスト中の実際のセットアップは以下のようになります:

  1. 現在のグローバル公開キー
  2. サイト設定を読み取るセットアップチェック用のグローバル診断キー
  3. 通常のトピック/投稿/タグ同期用の細粒度公開キー候補

細粒度公開キーが通常の同期に十分であれば、元のグローバル公開キーは廃止でき、以下を残すことができます:

  1. ランタイム同期用の細粒度公開キー
  2. セットアップチェック用のグローバル/管理者権限を持つ診断キー

ただし、これは細粒度キーがすべての通常の公開操作をカバーできるかどうか、および /site/settings.json / /site.json が診断側に留まる必要があるかどうかによって異なります。