アプリの設定
アプリ開発者は、アプリにカスタム設定を追加できます。YouTrack のシステム管理者またはプロジェクト管理者は、アプリの設定タブで、それぞれグローバルレベルまたはプロジェクトレベルでアプリ設定の値を指定できます。
設定値は、アプリパッケージ内のカスタム JavaScript スクリプト (HTTP ハンドラー、ワークフロールール、その他のスクリプトなど) で使用できます。設定値は ctx.settings.<settingName>
として参照できます。
JS コードとコードサンプルでアプリ設定を使用する方法の詳細については、スクリプトで設定値を使用するを参照してください。
アプリ設定を定義する
カスタムアプリ設定を定義するには、settings.json
という名前のファイルをアプリパッケージに追加します。settings.json
ファイルは、YouTrack 側で検証されるために、JSON スキーマ 2020-12 に準拠している必要があります。JSON スキーマ 2020-12 の詳細については、JSON スキーマドキュメント(英語)を参照してください。
サンプル設定ファイル
ここでは、アプリの settings.json
ファイルの例を見つけることができます。
サポートされている設定タイプ
カスタムアプリ設定には、次のいずれかのエンティティタイプを使用できます。
string
integer
number
boolean
array
object
secret
設定宣言
settings.json
ファイルには次のフィールドがあります。
フィールド | タイプ | 説明 | 必須 |
---|---|---|---|
type | 文字列 | | ✓ |
title | 文字列 | 設定宣言を含むファイルのタイトル。このタイトルはアプリの設定タブに表示されます。 このタイトルを使用すると、このアプリで構成できる設定に関する詳細情報をアプリユーザーに提供できます。 | |
description | 文字列 | 設定宣言が書かれたファイルの説明です。アプリの設定タブのタイトルに表示されます。 この説明を使用すると、このアプリで構成できる設定に関する詳細情報とコンテキストをアプリユーザーに提供できます。 | |
properties | オブジェクト | アプリ設定の定義を含むオブジェクト。 | ✓ |
required | Array。<string> | 必要なアプリ設定を表すプロパティの配列。 |
Properties
各アプリ設定は、settings.json
ファイル内の properties
オブジェクトのフィールドとして宣言する必要があります。
properties
オブジェクトの各キーは設定のキー名を表し、フィールド値は設定を定義するオブジェクトです。
YouTrack アプリは、JSON スキーマドラフト 07(英語) のプロパティパラメーターをサポートします。
プロパティは次のパラメーターで定義されます。
パラメーター | タイプ | 説明 | 必須 | ||||||
---|---|---|---|---|---|---|---|---|---|
const | 任意 | プロパティが制限される値。 | |||||||
description | 文字列 | 設定の説明。設定にテキストラベルとして UI に表示されます。 | |||||||
enum | 配列。<任意> | ユーザーが選択できる値のクローズドリストを定義します。リストの各要素は一意である必要があります。 | |||||||
exclusiveMaximum | 数 | 数値の排他的上限。このパラメーターは、 | |||||||
exclusiveMinimum | 数 | 数値の排他的下限。このパラメーターは、 | |||||||
format | 文字列 | 期待値の形式。YouTrack アプリは JSON スキーマドラフト 07(英語) の形式をサポートします。 利用可能な形式の詳細については、以下を参照してください。
| |||||||
items | オブジェクト | このパラメーターは、 | |||||||
maximum | 数 | この設定に許可される値の非排他的上限。このパラメーターは、 | |||||||
maxLength | integer | この設定が受け入れる文字列の最大長。このパラメーターは、 | |||||||
minimum | 数 | この設定で許可される値の非排他的下限。このパラメーターは、 | |||||||
minItems | integer | 配列内の項目の最小数。このパラメーターは、 | |||||||
minLength | integer | この設定が受け入れる文字列の最小の長さ。このパラメーターは、 | |||||||
multipleOf | 数 | 値は、このパラメーターの値で割った結果が整数になる場合にのみ有効です。値は 0 より大きくなければなりません。 このパラメーターは、 | |||||||
readOnly | boolean | | |||||||
title | 文字列 | YouTrack UI のアプリ設定に表示される設定の名前。 | ✓ | ||||||
type | 文字列 | 設定値として期待されるエンティティのタイプ。次のタイプが許可されます。
| ✓ | ||||||
x-entity | 文字列 | このパラメーターは、アプリ設定で使用できる YouTrack コアエンティティを参照します。これは、 詳細については、値の設定に YouTrack エンティティを使用するを参照してください。 | |||||||
x-scope | 文字列 | 設定の範囲を定義します。 使用可能な値: |
配列
各 array
-typed プロパティは、次のパラメーターを使用して定義する必要があります。
パラメーター | タイプ | 説明 | 必須 |
---|---|---|---|
x-entity | 文字列 | このパラメーターは、アプリ設定の配列で使用できる YouTrack コアエンティティを参照します。これは、 | ✓ |
type | 文字列 | パラメーターの型を定義します。 | ✓ |
値の設定に YouTrack エンティティを使用する
array
および object
型のアプリ設定では、設定値にコア YouTrack エンティティの一部を使用できます。x-entity
設定パラメーターは、特定の設定でアプリが期待する YouTrack エンティティの正確な型を定義します。
アプリ設定では次の YouTrack エンティティを使用できます。
Issue
Article
Project
User
UserGroup
アプリ設定の値を構成する
YouTrack でインストールされたアプリを構成する場合、グローバルレベルまたはプロジェクトレベルでアプリの設定を指定できます。プロジェクトレベルで構成された設定は優先度が高く、グローバル設定を上書きします。アプリ設定にプロジェクトレベルの値を設定していない場合は、これらの設定のグローバルレベルの値が適用されます。
グローバルレベルでアプリ設定の値を設定するには:
管理メニューからアプリを選択します。
リストから対象のアプリを選択します。
このアプリの設定タブを開きます。
アプリの設定の値を更新します。
準備ができたら、保存ボタンをクリックしてください。
アプリ設定の値はグローバルレベルで保存されます。
このアプリがアタッチされ、アプリ設定がグローバルアプリ設定と同期されているすべてのプロジェクトで値が更新されます。
プロジェクトレベルでアプリ設定の値を設定するには:
プロジェクト設定で、アプリタブを開きます。
リストから対象のアプリを選択します。
このアプリの設定タブを開きます。
アプリの設定の値を設定します。
準備ができたら、保存ボタンをクリックしてください。
アプリ設定の値はプロジェクトレベルで保存されます。
設定した値は、これらの設定のグローバルレベルの値をすべて上書きします。
更新した設定は、アプリのグローバル設定と同期されなくなります。
シークレットの設定の操作
secret
を保存するようにフォーマットされた設定を宣言すると、YouTrack は設定に保存された値を他の設定とは異なる方法で処理します。これらの値は安全に保存され、アプリケーションの承認された部分だけがアクセスできるようになります。つまり、ユーザーは認証トークンとアプリを承認するための資格情報を保存でき、この情報が他人の手に渡ることはありません。
YouTrack は、シークレットとして保存された値を次のように処理します。
秘密が保存されると、YouTrack 内のどこからも誰もそれを読み取ることができなくなります。実際の値は、HTTP リクエストを認証する必要がある場合にのみ
http.js
パッケージで使用されます。ベアラートークン認証フロー。例については、以下のスクリプトで設定値を使用するを参照してください。
addHeader および setHeader メソッド。例:
for example, connection.addHeader('My-Token-Header', ctx.settings.secretToken)
getSync などのメソッドの
queryParam
パラメーターの値。例:connection.getSync(url, { apiKey: ctx.settings.apiKey) }
、apiKey
は秘密として保存されます。
http.js
パッケージを使用して送信された HTTP リクエストは JVM 内で処理されるため、シークレット設定に保存された値はログのどこにも表示されません。
You can also declare secret settings as required in the Settings.json
file. When declare as required, the app remains inactivated until these settings are configured, and a corresponding warning is displayed in the アプリ admin UI. This ensures that the app cannot be activated with empty values for secret settings, preventing potential failures in HTTP requests.
スクリプトで設定値を使用する
アプリパッケージ内の任意の JavaScript ベースのスクリプトで、設定値を ctx.settings.<settingName>
として参照できます。例: HTTP ハンドラー、ワークフロールール、インポートスクリプト、その他の JS スクリプトで設定値を使用できます。
HTTP ハンドラーで設定値を使用するコードサンプルを次に示します。
secret
形式の設定を使用する HTTP ハンドラーのコードサンプルを次に示します。