課題カスタムフィールドの値を取得する
YouTrack REST API を使用して、課題内の特定のカスタムフィールドの現在の値を取得します。
要約
課題内の特定のカスタムフィールドの値を取得するには、課題のカスタムフィールドエンドポイントに GET リクエストを送信します。
追加情報
値属性のリストを作成するには、課題のターゲットカスタムフィールドの $type に応じて、値エンティティのサポートされる属性のリストを参照してください。
value がプリミティブ値を格納するフィールド(たとえば、SimpleIssueCustomField と $type を持つ string フィールド)の場合は、value 属性を直接要求してください。value(name) などのネストされた属性は、フィールド値がエンティティまたはエンティティのコレクションである場合にのみ使用してください。
ステップバイステップ
ターゲットプロジェクトの課題のリストを取得します。また、使用可能なカスタムフィールドのリストとその名前を要求しましょう。
curl -X GET 'https://example.youtrack.cloud/api/issues?query=in:SP&fields=id,idReadable,summary,customFields(id,projectCustomField(field(name)))' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer <YouTrack_token>'queryリクエストパラメーターを使用すると、ターゲットプロジェクトごとに課題のリストをフィルタリングできます。サンプルでは、プロジェクトshortNameは「SP」です。fieldsリクエストパラメーターでは、見つかった課題ごとに次の属性を返すようサーバーに指示します。idおよびidReadable- データベースエンティティ ID とプロジェクト内の課題の ID の両方。summary- 課題の概要は、対象の課題を特定できます。customFields- 各課題のカスタムフィールドのリスト。ターゲットカスタムフィールドを特定しやすくするために、プロジェクトカスタムフィールドとその「プロトタイプ」(汎用カスタムフィールド)で定義されている各フィールドの名前もリクエストします。
このリクエストへの応答で、サーバーは次のデータを返します。
[ { "summary": "Issue from REST #1", "idReadable": "SP-8", "customFields": [ { "projectCustomField": { "field": { "name": "Priority", "$type": "CustomField" }, "$type": "EnumProjectCustomField" }, "id": "92-1", "$type": "SingleEnumIssueCustomField" }, { "projectCustomField": { "field": { "name": "Type", "$type": "CustomField" }, "$type": "EnumProjectCustomField" }, "id": "92-2", "$type": "SingleEnumIssueCustomField" }, { "projectCustomField": { "field": { "name": "State", "$type": "CustomField" }, "$type": "StateProjectCustomField" }, "id": "92-3", "$type": "StateIssueCustomField" }, { "projectCustomField": { "field": { "name": "Assignee", "$type": "CustomField" }, "$type": "UserProjectCustomField" }, "id": "94-0", "$type": "SingleUserIssueCustomField" }, { "projectCustomField": { "field": { "name": "Subsystem", "$type": "CustomField" }, "$type": "OwnedProjectCustomField" }, "id": "92-0", "$type": "SingleOwnedIssueCustomField" }, { "projectCustomField": { "field": { "name": "Fix versions", "$type": "CustomField" }, "$type": "VersionProjectCustomField" }, "id": "92-4", "$type": "MultiVersionIssueCustomField" }, { "projectCustomField": { "field": { "name": "Affected versions", "$type": "CustomField" }, "$type": "VersionProjectCustomField" }, "id": "92-5", "$type": "MultiVersionIssueCustomField" }, { "projectCustomField": { "field": { "name": "Fixed in build", "$type": "CustomField" }, "$type": "BuildProjectCustomField" }, "id": "92-6", "$type": "SingleBuildIssueCustomField" } ], "id": "2-7", "$type": "Issue" }, { "summary": "Sprint 3. Task 2", "idReadable": "SP-38", "customFields": [ ... ], "id": "2-42", "$type": "Issue" }, { "summary": "Sprint3. Task 1", "idReadable": "SP-37", "customFields": [ ... ], "id": "2-40", "$type": "Issue" }, ... ]対象の課題の ID を見つけます。サンプルでは、エンティティ ID
2-7の課題SP-8を取り上げます。ターゲットのカスタムフィールドの ID を見つけます。課題の現在の状態を取得しましょう。サンプルでは、State フィールドの ID は
92-3です。状態フィールドで取得する属性のリストを作成します。
カスタムフィールドでサポートされる属性のリストは、そのタイプに完全に依存します。
State フィールドには
$typeまたはStateIssueCustomFieldがあります。これは、タイプStateProjectCustomFieldのプロジェクトカスタムフィールドと値をバインドします。StateProjectCustomField は、タイプ StateBundle の値のバンドルを使用します。StateBundleには、StateBundleElement 型の値が格納されます。State フィールドの現在の値として取得する属性のリストを作成するには、JSON スキーマをチェックして、StateBundleElement エンティティにどのような属性が含まれているかを確認する必要があります。サンプルでは、これらを選択しました:
属性
説明
name値の名前。UI でユーザーに表示される実際の状態を表します: Open、進行中、Fixed など。
localizedNameサーバーがデフォルトのロケールを使用しない場合、この属性には選択したロケールの値の名前が格納されます。
isResolved値(状態)が解決済みと見なされるかどうかを示します。
id値のエンティティ ID。
サンプルで正しいフィールドを取得していることを確認するために、フィールドの名前とその ID も要求します。
サーバーから受信するすべての属性をまとめると、要求パラメーター
fieldsは次のようになります。fields=id,projectCustomField(id,field(name)),value(id,isResolved,localizedName,name)リクエストに必要なすべてのデータを収集したため、これがフィールド値のリクエストの結果です。
curl -X GET \ 'https://example.youtrack.cloud/api/issues/SP-8/customFields/92-3?fields=id,projectCustomField(id,field(id,name)),value(id,isResolved,localizedName,name)' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer <YouTrack_token>'この要求に対して、サーバーは次の応答本文を返します。
{ "projectCustomField": { "field": { "name": "State", "id": "58-3", "$type": "CustomField" }, "id": "92-3", "$type": "StateProjectCustomField" }, "value": { "isResolved": true, "localizedName": null, "name": "Fixed", "id": "69-7", "$type": "StateBundleElement" }, "id": "92-3", "$type": "StateIssueCustomField" }対象のカスタムフィールドに文字列値が格納されている場合は、ネストされた属性なしで
valueを要求してください。文字列フィールドはSimpleIssueCustomFieldを使用し、valueは JSON 文字列として返されます。curl -X GET \ 'https://example.youtrack.cloud/api/issues/SP-8/customFields/92-7?fields=id,projectCustomField(id,field(id,name)),value' \ -H 'Accept: application/json' \ -H 'Authorization: Bearer <YouTrack_token>'文字列フィールドの場合、レスポンスボディは次のようになります。
{ "projectCustomField": { "field": { "name": "Requester email", "id": "58-7", "$type": "CustomField" }, "id": "92-7", "$type": "SimpleProjectCustomField" }, "value": "test@example.com", "id": "92-7", "$type": "SimpleIssueCustomField" }