Как обновить группу задач с помощью REST API - PullRequest
1 голос
/ 18 марта 2020

Допустим, я пытаюсь обновить описание групп задач.

  1. Я получаю все группы задач с запросом get
    GET https://dev.azure.com/{organization}/{project}/_apis/distributedtask/taskgroups?api-version=6.0-preview.1
  2. Я фильтрую его по имени и получаю идентификатор. Например, aaabbbcc-abcd-ae12-917d-97f1935b1542
  3. После того, как я получил идентификатор, я делаю запрос PUT, используя
    PUT https://dev.azure.com/{organization}/{project}/_apis/distributedtask/taskgroups/aaabbbcc-abcd-ae12-917d-97f1935b1542?api-version=6.0-preview.1
    с телом JSON, например
    {
    "description": "this is the new description",
    "id": "aaabbbcc-abcd-ae12-917d-97f1935b1542"
    }
    

Но последний шаг не работает. Я получил бы следующую ошибку:

{
    "$id": "1",
    "innerException": null,
    "message": "Task group aaabbbcc-abcd-ae12-917d-97f1935b1542 not found.",
    "typeName": "Microsoft.TeamFoundation.DistributedTask.WebApi.MetaTaskDefinitionNotFoundException, Microsoft.TeamFoundation.DistributedTask.WebApi",
    "typeKey": "MetaTaskDefinitionNotFoundException",
    "errorCode": 0,
    "eventId": 3000
}

Что я делаю не так?

1 Ответ

2 голосов
/ 18 марта 2020

Лучший способ сделать это - использовать группу задач, которую вы получили в API GET, изменить там описание, затем преобразовать его в JSON и отправить все объекты в API PUT.

Например - в PowerShell:

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,"YOUR-PAT")))
$headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}

$url = "https://dev.azure.com/{organization}/{project}/_apis/distributedtask/taskgroups?api-version=6.0-preview.1"

$taskGroups= Invoke-RestMethod -Method Get -Uri $url -Headers $headers -ContentType 'application/json'

$taskGroups.value[0].description = "test"

$json = $taskGroups.value[0] | ConvertTo-Json -Depth 10

$response = Invoke-RestMethod -Method Put -Uri $url -Headers $headers -ContentType 'application/json' -Body $json
...