なんかやるたびに調べている気がするので自分用のメモ。
新しいのが好きなので、7.1 Previewです。結構頻繁に更新されているので、気が付いたら8.0とかになっているかもしれません。
$PAT
に作成したPersonal Access Tokenが格納されているとします。
権限はWork Items
のRead & write
があれば大丈夫なはずです。
$organization = '{Your Organization}' $Project = '{Your Project}' $TaskName = '{Your Task Title}' $PAT='{Your Personal Access Token}' $TaskTitle=[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($TaskName)) $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$PAT")) $header = @{authorization = "Basic $token"} $uri = 'https://dev.azure.com/$organization/$Project/_apis/wit/workitems/$User%20Story?api-version=7.1-preview.3' $jsonbody="[ { `"op`": `"add`", `"path`": `"/fields/System.Title`", `"value`": `"$TaskTitle`" } ]" $json = Invoke-RestMethod -Uri $Uri -Method Post -ContentType "application/json-patch+json" -Headers $header -body $jsonbody
$uri のworkitems
に続く値はプロセステンプレートにあるタスクの種類になります。私のサンプルではAgileで作っているプロジェクトに対して発行しているので、User%20Story
ですが、ScrumであればProduct%20Backlog%20Item
などになります。空白も含まれるので、%20
を忘れないように注意。
タスク名に日本語を使う場合、Base64 Encodingが必要です。
Azure Pipelinesから呼び出して、PATをLibraryに格納する場合(まぁしますよね)、":$PAT"
ではなく、":$ENV:PAT"
となります。
これは「作るだけ」なので、このAPIで作ってもタスクが作成されるだけになります。Iteration、Area、Assigned toなどの値はUpdate
で更新していきます。
全部のフィールド設定するのは大変ですが、先ほどのBodyは配列指定ができるので、最初op:add
の次の要素でほかの要素も指定すればいいはずです…また後で検証してみます。