如何通过其余部分创建任务或用户故事 api

How to create a task or user story via the rest api

我正在尝试使用此 RESTapi 在 Azure DevOps 中创建用户故事和任务 有多个积压。

POST https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/${type}?api-version=6.0

我的代码

function Set-pbiStuff {
    param
    ( 
        [Parameter(Mandatory = $true)] [string] $Organization,
        [Parameter(Mandatory = $true)] [string] $Project,
        [Parameter(Mandatory = $true)] [hashtable] $Token
    )
  
    $Base = "https://dev.azure.com/$($organization)/$($project)/_apis/wit/workitems"
    $workItemType = 'task'
    $URL = "$($Base)/$($workItemType)?api-version=6.0"
    $Json = @(
        @{
            op    = 'add'
            path  = '/fields/System.Title'
            value = $workItemType
        }
    )
    
    $Body = (ConvertTo-Json $Json)
  
    $response = Invoke-RestMethod `
        -Method Post `
        -Uri $URL `
        -ContentType 'application/json' `
        -Body $Body `
        -Headers $Token
    Write-Host $URL
    Write-Host $response
}

$Token= @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($env:SYSTEM_ACCESSTOKEN)")) }

$tt = Set-pbiStuff -Organization 'myOrganization' -Project 'myProject' -Token $Token

return $tt

但是我得到的回复是找不到该页面。 我错过了什么?

您正在尝试使用 PATCH 动词调用 API,请参阅第二行:

$response = Invoke-RestMethod `
    -Method Patch `
    -Uri $URL `
    -ContentType 'application/json' `
    -Body $Body `
    -Headers $AzAuthHeader

API 端点是一个 POST 端点,就像文档中显示的和您在问题中陈述的那样。

试试这个 URL:

$URL = "$($Base)/`$$($workItemType)?api-version=6.0"

检查此示例:https://arindamhazra.com/create-azure-devops-task-using-powershell/

问题是您的脚本中的类型 ${type} 不正确,缺少字符 $

请试试这个:

$URL = "$($Base)/"+"$"+"$($workItemType)?api-version=6.0"

内容类型应为“application/json-patch+json

下面的脚本对我有用:(PAT 用于测试,如果你在管道中 运行,你可以将它改回 SYSTEM_ACCESSTOKEN

function Set-pbiStuff {
    param
    ( 
        [Parameter(Mandatory = $true)] [string] $Organization ,
        [Parameter(Mandatory = $true)] [string] $Project ,
        [Parameter(Mandatory = $true)] [string] $Token
    )
  
    $Base = "https://dev.azure.com/$($organization)/$($project)/_apis/wit/workitems"
    $workItemType = 'task'
    $URL = "$($Base)/"+"$"+"$($workItemType)?api-version=6.0"
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f '',$Token)))

    $Json = @(
        @{
            op    = 'add'
            path  = '/fields/System.Title'
            value = $workItemType
        }
    )
    
    $Body = (ConvertTo-Json $Json)
  
    $response = Invoke-RestMethod `
        -Method Post `
        -Uri $URL `
        -ContentType 'application/json-patch+json' `
        -Body $Body `
        -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
    Write-Host $URL
    Write-Host $response
}

$tt = Set-pbiStuff -Organization 'orgname' -Project 'ProjectName' -Token Tokenhere

return $tt