カスタムフィールド更新時の 500 サーバーエラー
この記事では、YouTrack REST API を使用して課題のカスタムフィールドを更新するときに発生する可能性のあるエラーについて検証します。
さまざまなエンドポイントにリクエストを送信しているときに、このエラーに直面する可能性があります。このトピックでは、このエラーメッセージが表示される最も一般的なシナリオについて説明します。
エラーメッセージ
要求詳細
このエラーが発生する可能性のあるサンプルリクエストの詳細を次に示します。
属性 | 値 |
|---|---|
リクエストメソッド | POST |
エンドポイント |
|
リクエスト本体 |
{
"customFields":[
{
"name": "State",
"$type": "StateProjectCustomField",
"value":
{
"name": "Open"
}
}
]
}
|
HTTP 応答コード | 500 |
トラブルシューティング
このエラーを解決し、課題のカスタムフィールドを更新する方法について、考えられる原因と提案をいくつか示します。
原因
リクエストは課題のカスタムフィールドを更新しようとしましたが、リクエストの本文はプロジェクトのカスタムフィールドを参照していました。
ソリューション
リクエスト本文で、対応する課題のカスタムフィールドタイプを渡します。
エラーメッセージは、この特定のリクエストで、YouTrack が StateProjectCustomField ではなく IssueCustomField タイプのエンティティを想定していることを示しています。 IssueCustomField は課題のすべてのカスタムフィールドの抽象的な祖先であるため、リクエスト本文でその子孫のいずれかのタイプを使用する必要があります。私たちの場合、StateIssueCustomField です。
更新されたリクエスト本文は次のとおりです。
YouTrack REST API のカスタムフィールド階層の詳細については、REST API のカスタムフィールドを参照してください。
ステートマシンフィールドのソリューション
対象プロジェクトの状態フィールドがステートマシンによって制御されている場合は、StateIssueCustomField の代わりに StateMachineIssueCustomField を使用してください。
この場合、エラーメッセージには以下のテキストが含まれる可能性があります。
ステートマシンフィールドのタイプを渡し、リクエストボディにイベントデータを含めます。