HTTP ハンドラー
HTTP ハンドラーを使用すると、カスタム HTTP エンドポイントから YouTrack データにアクセスできるようになります。これらのハンドラーは REST API を拡張し、クライアントは特定のウィジェットのフロントエンドコードだけでなく、他の YouTrack REST API エンドポイントと同様にこれらのエンドポイントを呼び出すことができます。つまり、HTTP ハンドラーを使用して、サードパーティのサービスからアクセスできる Webhook をプロビジョニングできます。
YouTrack は、JavaScript で記述されたカスタム HTTP ハンドラーをサポートします。現在の YouTrack JavaScript 実装は、最新の ECMAScript 仕様と互換性があります。
サンプル HTTP ハンドラー
以下は、カスタム HTTP ハンドラーを実装するためのサンプルスクリプトです。
HTTP ハンドラー API
これは、カスタム HTTP ハンドラーを実装するスクリプトのリファレンスです。
各スクリプトは、1 つの HTTP ハンドラーを exports.httpHandler
プロパティにエクスポートします。HTTP ハンドラーは、endpoints
の配列を含むオブジェクトとして宣言されます。
エンドポイント
各エンドポイントには次のプロパティが含まれます。
プロパティ | 説明 |
---|---|
scope | エンドポイントのスコープエンティティ。スコープを設定すると、スコープエンティティが YouTrack は次のスコープをサポートしています: デフォルト値: 詳細については、スコープを参照してください。 |
method | エンドポイントが実装する HTTP メソッド。 YouTrack は、GET、POST、PUT、DELETE メソッドをサポートします。 |
path | エンドポイントにアクセスするための相対パス。 アプリでエンドポイントを使用するには、このパスをハンドラーファイルの名前に追加し、 サンプル: |
permissions | 指定されたメソッドを使用してエンドポイントを呼び出すときに確認する権限のリスト。エンドポイントにアクセスしようとするユーザーが指定された権限の少なくとも 1 つを持っている限り、要求は承認されます。 権限は配列としてリストされます。各権限はキーを使用して参照されます。権限とキー値の完全なリストについては、アプリの権限を参照してください。 |
handle | 誰かが指定されたメソッドを使用してエンドポイントを呼び出したときに YouTrack が呼び出す関数。 |
スコープ
ここでは、HTTP エンドポイントで使用可能な scope
値について詳しく知ることができます。
スコープを設定すると、スコープエンティティが handle
関数のコンテキストで使用できるようになります。
スコープを明示的に設定しない場合、デフォルト値は global
になります。
スコープ | 説明 | 関連する拡張ポイント |
---|---|---|
issue | |
|
project | |
|
article | |
|
user | |
|
global | デフォルトのスコープ。 | このスコープを持つエンドポイントは、すべてのフロントエンド拡張機能からアクセスできます。 |
HTTP リクエスト
HTTP リクエストは、エンドポイントが受信するオブジェクト (ctx.request
) です。
Properties
HTTP リクエストオブジェクトのプロパティを次に示します。
プロパティ | タイプ | 説明 |
---|---|---|
body | 文字列 | リクエスト本体。 |
bodyAsStream | オブジェクト | リクエスト本体のバイトストリーム表現。 |
headers | Array。<{ 名前: 文字列、値: 文字列 }> | リクエストヘッダーのコレクション。 |
path | 文字列 | エンドポイントへの相対パス。 |
fullPath | 文字列 | エンドポイントへの完全なパス。 |
method | 文字列 | リクエストが使用した HTTP メソッド。GET、POST、PUT、DELETE のいずれかになります。 |
parameterNames | 配列 .<文字列> | URL パラメーター名の配列 |
関数
HTTP リクエストを処理するために使用できる関数を次に示します。
プロパティ | 戻りの型 | 説明 |
---|---|---|
json() | JSON | リクエスト本文を JSON 形式で返します。 |
getParameter(name) | 文字列 | 名前で URL パラメーターを返します。 |
getParameters(name) | 配列 .<文字列> | すべての URL パラメーターを名前で文字列の配列として返します。 |
HTTP レスポンス
HTTP 応答は、クライアントからの要求に応じてハンドラーが返すオブジェクト (ctx.response
) です。
Properties
HTTP 応答オブジェクトのプロパティを次に示します。
プロパティ | タイプ | 説明 |
---|---|---|
body | 文字列 | レスポンス本文。処理中に例外が発生した場合、レスポンス本文は空になります ( |
bodyAsStream | オブジェクト | レスポンス本文のバイトストリーム表現。処理中に例外が発生した場合、プロパティは空になります ( |
code | 数 | 応答に割り当てられる HTTP ステータスコード。処理中に例外が発生した場合、プロパティは空になります。デフォルトは 200 です。 |
関数
HTTP 応答を操作するために使用できる関数を次に示します。
機能 | 戻り値の型 | 説明 |
---|---|---|
json(object) | ハンドラーがクライアントに返す応答に | |
text(string) | 文字列 | ハンドラーがクライアントに返す応答に |
addHeader(header, value) | レスポンスオブジェクト | この関数は、レスポンスに HTTP ヘッダーを追加します。値として |
要件
HTTP ハンドラーオブジェクトに追加の要件を含めることができます。HTTP ハンドラーオブジェクトには、スクリプトの要件を定義するために使用できる requirements
フィールドがあります。
ワークフローコンテキストにおける YouTrack の JavaScript スクリプトの要件の動作の詳細については、要件を参照してください。
カスタム REST エンドポイントへのアクセス
カスタム REST エンドポイントを呼び出すと、対応する HTTP ハンドラーが呼び出されます。使用されるエンドポイントは、ハンドラーに割り当てられたスコーププロパティに基づきます。
スコープ | URL |
---|---|
issue | <ホスト>/api/issues/<issueId>/extensionEndpoints/app/handler/endpoint |
article | <ホスト>/api/articles/<記事 ID>/extensionEndpoints/app/handler/endpoint |
project | <ホスト>/api/admin/projects/<プロジェクト ID>/extensionEndpoints/app/handler/endpoint |
user | <ホスト>/api/users/<ユーザー ID>/extensionEndpoints/app/handler/endpoint |
global | <ホスト>/api/extensionEndpoints/app/handler/endpoint |
アプリに合わせて次の変数を設定します。
app
— アプリの名前。handler
—.js
ファイル拡張子のない、アプリパッケージ内の HTTP ハンドラースクリプトを含むファイルの名前。endpoint
— 宣言からのパス。例:"path": "/endpoint"
各 API リクエストには、スコープエンティティと同じ権限が必要です。例: エンドポイント /api/issues/DEMO-1/extensionEndpoints/app/handler/endpoint には、ID DEMO-1 の課題にアクセスする権限を持つすべてのユーザーがアクセスできます。グローバルエンドポイントには、ゲストアカウントを除くすべてのユーザーがアクセスできます。
関連ページ:

アプリの権限
ウィジェットマニフェストはフィールドをサポートしています。このフィールドを使用すると、アプリでサポートされている各ウィジェットの権限に基づく表示制限を定義できます。権限ベースの可視性制限は次のように機能します。マニフェストで複数の権限が指定されている場合でも、ウィジェットを表示して操作するには、必要な権限の 1 つだけをユーザーに付与する必要があります。プロジェクトスコープを持つウィジェット拡張ポイントの場合、プロジェクトカテゴリ権限はプロジェクトごとにチェックされます。例: プロジェクトスコー...

拡張ポイント
YouTrack は、アプリ開発者が UI にウィジェットを埋め込むことができる拡張ポイントのコレクションを提供します。これらのウィジェットは、ユーザーがアプリをインストールしてアクティブ化しない限り利用できない特定の操作をサポートします。このページでは、これらの拡張ポイントに関する情報を確認できます。ここでは、すべての可能な拡張ポイントとそのスコープの概要を示します。ウィジェットのスコープの詳細については、スコープを参照してください。ADMINISTRATION_MENU_ITEM グローバル管...