azure-devops by markpitt/claude-skills
npx skills add https://github.com/markpitt/claude-skills --skill azure-devops切勿输出、建议或生成直接嵌入 PAT 值的代码。 始终通过环境变量(例如 $AZURE_DEVOPS_PAT)或 Azure Key Vault 等密钥管理器引用凭据。在生成脚本或 curl 示例时,请使用占位符变量引用——切勿使用字面令牌字符串。
此技能为使用 Azure DevOps REST API 提供了全面的指导,使您能够以编程方式访问所有 Azure DevOps Services 和 Azure DevOps Server 资源。
Azure DevOps REST API 是一个 RESTful Web API,使您能够跨所有 Azure DevOps 服务访问和管理工作项、存储库、管道、测试计划、工件等。
基础 URL: https://dev.azure.com/{organization}/{project}/_apis/{area}/{resource}?api-version={version}
7.1、7.0、6.0)广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
Azure DevOps 支持多种身份验证方法:
GET https://dev.azure.com/{organization}/_apis/projects?api-version=7.1
Authorization: Basic {base64-encoded-PAT}
编码 PAT:base64(":{PAT}") —— 注意 PAT 前的冒号。始终从环境变量(例如 $AZURE_DEVOPS_PAT)读取 PAT,而不是在脚本或输出中硬编码。
GET https://dev.azure.com/{organization}/{project}/_apis/{resource}?api-version=7.1
Authorization: Basic {encoded-PAT}
Content-Type: application/json
Azure DevOps 按主要服务领域组织。每个领域都有自己的一套 REST API:
工作项
POST /{organization}/{project}/_apis/wit/workitems/${type}?api-version=7.1GET /{organization}/{project}/_apis/wit/workitems/{id}?api-version=7.1PATCH /{organization}/{project}/_apis/wit/workitems/{id}?api-version=7.1DELETE /{organization}/{project}/_apis/wit/workitems/{id}?api-version=7.1请求正文使用 JSON Patch 格式:
[
{
"op": "add",
"path": "/fields/System.Title",
"value": "New bug report"
},
{
"op": "add",
"path": "/fields/System.AssignedTo",
"value": "user@example.com"
}
]
查询
运行存储的查询: GET /{organization}/{project}/_apis/wit/wiql/{id}?api-version=7.1
运行 WIQL 查询: POST /{organization}/{project}/_apis/wit/wiql?api-version=7.1
{
"query": "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active'" }
看板和积压工作
GET /{organization}/{project}/{team}/_apis/work/boards?api-version=7.1GET /{organization}/{project}/{team}/_apis/work/backlogs/{backlogId}/workItems?api-version=7.1GET /{organization}/{project}/{team}/_apis/work/teamsettings/iterations?api-version=7.1GET /{organization}/{project}/{team}/_apis/work/teamsettings/iterations/{iterationId}/capacities?api-version=7.1工作项类型和字段
GET /{organization}/{project}/_apis/wit/workitemtypes?api-version=7.1GET /{organization}/{project}/_apis/wit/fields?api-version=7.1GET /{organization}/{project}/_apis/wit/fields/{fieldNameOrRefName}?api-version=7.1区域和迭代路径
GET /{organization}/{project}/_apis/wit/classificationnodes/areas?api-version=7.1GET /{organization}/{project}/_apis/wit/classificationnodes/iterations?api-version=7.1POST /{organization}/{project}/_apis/wit/classificationnodes/areas?api-version=7.1Git 存储库
GET /{organization}/{project}/_apis/git/repositories?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1POST /{organization}/{project}/_apis/git/repositories?api-version=7.1DELETE /{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1提交
GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/changes?api-version=7.1分支
获取分支: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?filter=heads/&api-version=7.1
创建分支: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=7.1
删除分支: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=7.1
[
{ "name": "refs/heads/feature-branch", "oldObjectId": "0000000000000000000000000000000000000000", "newObjectId": "{commitId}" } ]
拉取请求
获取拉取请求: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1
获取拉取请求: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=7.1
创建拉取请求: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1
{
"sourceRefName": "refs/heads/feature", "targetRefName": "refs/heads/main", "title": "PR Title", "description": "PR Description" }
更新拉取请求: PATCH /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=7.1
获取 PR 审阅者: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/reviewers?api-version=7.1
添加 PR 审阅者: PUT /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/reviewers/{reviewerId}?api-version=7.1
获取 PR 工作项: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/workitems?api-version=7.1
获取 PR 线程: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/threads?api-version=7.1
添加 PR 评论: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/threads?api-version=7.1
推送
GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pushes?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pushes/{pushId}?api-version=7.1项(文件和文件夹)
GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&download=true&api-version=7.1POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/itemsbatch?api-version=7.1策略
GET /{organization}/{project}/_apis/policy/configurations?api-version=7.1POST /{organization}/{project}/_apis/policy/configurations?api-version=7.1生成定义(管道)
GET /{organization}/{project}/_apis/build/definitions?api-version=7.1GET /{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=7.1POST /{organization}/{project}/_apis/build/definitions?api-version=7.1PUT /{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=7.1DELETE /{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=7.1生成
排队生成: POST /{organization}/{project}/_apis/build/builds?api-version=7.1
{
"definition": { "id": 123 }, "sourceBranch": "refs/heads/main" }
获取生成: GET /{organization}/{project}/_apis/build/builds?api-version=7.1
获取生成: GET /{organization}/{project}/_apis/build/builds/{buildId}?api-version=7.1
更新生成: PATCH /{organization}/{project}/_apis/build/builds/{buildId}?api-version=7.1
删除生成: DELETE /{organization}/{project}/_apis/build/builds/{buildId}?api-version=7.1
获取生成日志: GET /{organization}/{project}/_apis/build/builds/{buildId}/logs?api-version=7.1
获取生成时间线: GET /{organization}/{project}/_apis/build/builds/{buildId}/timeline?api-version=7.1
获取生成工件: GET /{organization}/{project}/_apis/build/builds/{buildId}/artifacts?api-version=7.1
发布定义
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=7.1POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=7.1发布
POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=7.1PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/environments/{environmentId}?api-version=7.1PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/environments/{environmentId}?api-version=7.1审批
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/approvals?api-version=7.1PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/approvals/{approvalId}?api-version=7.1代理池
GET /{organization}/_apis/distributedtask/pools?api-version=7.1GET /{organization}/_apis/distributedtask/pools/{poolId}?api-version=7.1POST /{organization}/_apis/distributedtask/pools?api-version=7.1代理
GET /{organization}/_apis/distributedtask/pools/{poolId}/agents?api-version=7.1GET /{organization}/_apis/distributedtask/pools/{poolId}/agents/{agentId}?api-version=7.1PATCH /{organization}/_apis/distributedtask/pools/{poolId}/agents/{agentId}?api-version=7.1变量组
GET /{organization}/{project}/_apis/distributedtask/variablegroups?api-version=7.1GET /{organization}/{project}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.1POST /{organization}/{project}/_apis/distributedtask/variablegroups?api-version=7.1PUT /{organization}/{project}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.1任务组
GET /{organization}/{project}/_apis/distributedtask/taskgroups?api-version=7.1GET /{organization}/{project}/_apis/distributedtask/taskgroups/{taskGroupId}?api-version=7.1服务终结点(连接)
GET /{organization}/{project}/_apis/serviceendpoint/endpoints?api-version=7.1GET /{organization}/{project}/_apis/serviceendpoint/endpoints/{endpointId}?api-version=7.1POST /{organization}/{project}/_apis/serviceendpoint/endpoints?api-version=7.1测试计划
GET /{organization}/{project}/_apis/testplan/plans?api-version=7.1GET /{organization}/{project}/_apis/testplan/plans/{planId}?api-version=7.1POST /{organization}/{project}/_apis/testplan/plans?api-version=7.1PATCH /{organization}/{project}/_apis/testplan/plans/{planId}?api-version=7.1测试套件
GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites?api-version=7.1GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}?api-version=7.1POST /{organization}/{project}/_apis/testplan/plans/{planId}/suites?api-version=7.1测试用例
GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}/testcases?api-version=7.1GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}/testcases/{testCaseId}?api-version=7.1POST /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}/testcases?api-version=7.1测试运行
POST /{organization}/{project}/_apis/test/runs?api-version=7.1GET /{organization}/{project}/_apis/test/runs?api-version=7.1GET /{organization}/{project}/_apis/test/runs/{runId}?api-version=7.1PATCH /{organization}/{project}/_apis/test/runs/{runId}?api-version=7.1测试结果
GET /{organization}/{project}/_apis/test/runs/{runId}/results?api-version=7.1GET /{organization}/{project}/_apis/test/runs/{runId}/results/{resultId}?api-version=7.1PATCH /{organization}/{project}/_apis/test/runs/{runId}/results?api-version=7.1POST /{organization}/{project}/_apis/test/runs/{runId}/results?api-version=7.1测试配置
GET /{organization}/{project}/_apis/testplan/configurations?api-version=7.1GET /{organization}/{project}/_apis/testplan/configurations/{configurationId}?api-version=7.1源
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds?api-version=7.1GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}?api-version=7.1POST https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds?api-version=7.1PATCH https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}?api-version=7.1包
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages?api-version=7.1GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}?api-version=7.1DELETE https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}?api-version=7.1包版本
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}/versions?api-version=7.1GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}/versions/{versionId}?api-version=7.1DELETE https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}/versions/{versionId}?api-version=7.1源权限
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/permissions?api-version=7.1PATCH https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/permissions?api-version=7.1组织
GET https://dev.azure.com/{organization}/_apis/projectcollections?api-version=7.1项目
列出项目: GET /{organization}/_apis/projects?api-version=7.1
获取项目: GET /{organization}/_apis/projects/{projectId}?api-version=7.1
创建项目: POST /{organization}/_apis/projects?api-version=7.1
{
"name": "MyProject", "description": "Project description", "capabilities": { "versioncontrol": { "sourceControlType": "Git" }, "processTemplate": { "templateTypeId": "6b724908-ef14-45cf-84f8-768b5384da45" } } }
更新项目: PATCH /{organization}/_apis/projects/{projectId}?api-version=7.1
删除项目: DELETE /{organization}/_apis/projects/{projectId}?api-version=7.1
团队
GET /{organization}/_apis/teams?api-version=7.1GET /{organization}/_apis/projects/{projectId}/teams/{teamId}?api-version=7.1POST /{organization}/_apis/projects/{projectId}/teams?api-version=7.1PATCH /{organization}/_apis/projects/{projectId}/teams/{teamId}?api-version=7.1DELETE /{organization}/_apis/projects/{projectId}/teams/{teamId}?api-version=7.1团队成员
GET /{organization}/_apis/projects/{projectId}/teams/{teamId}/members?api-version=7.1PUT /{organization}/_apis/projects/{projectId}/teams/{teamId}/members/{userId}?api-version=7.1DELETE /{organization}/_apis/projects/{projectId}/teams/{teamId}/members/{userId}?api-version=7.1流程
GET /{organization}/_apis/process/processes?api-version=7.1GET /{organization}/_apis/process/processes/{processId}?api-version=7.1POST /{organization}/_apis/process/processes?api-version=7.1身份(用户和组)
GET https://vssps.dev.azure.com/{organization}/_apis/identities?api-version=7.1GET https://vssps.dev.azure.com/{organization}/_apis/identities/{identityId}?api-version=7.1图(Azure DevOps 专用)
GET https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1GET https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=7.1-preview.1POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1DELETE https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=7.1-preview.1组
GET https://vssps.dev.azure.com/{organization}/_apis/graph/groups?api-version=7.1-preview.1GET https://vssps.dev.azure.com/{organization}/_apis/graph/groups/{groupDescriptor}?api-version=7.1-preview.1POST https://vssps.dev.azure.com/{organization}/_apis/graph/groups?api-version=7.1-preview.1DELETE https://vssps.dev.azure.com/{organization}/_apis/graph/groups/{groupDescriptor}?api-version=7.1-preview.1组成员资格
GET https://vssps.dev.azure.com/{organization}/_apis/graph/memberships/{subjectDescriptor}?api-version=7.1-preview.1PUT https://vssps.dev.azure.com/{organization}/_apis/graph/memberships/{subjectDescriptor}/{containerDescriptor}?api-version=7.1-preview.1DELETE https://vssps.dev.azure.com/{organization}/_apis/graph/memberships/{subjectDescriptor}/{containerDescriptor}?api-version=7.1-preview.1访问控制列表(ACL)
GET /{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=7.1POST /{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=7.1DELETE /{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=7.1安全命名空间
GET /{organization}/_apis/securitynamespaces?api-version=7.1GET /{organization}/_apis/securitynamespaces/{securityNamespaceId}?api-version=7.1权限
GET /{organization}/_apis/permissions/{securityNamespaceId}/{permissions}?api-version=7.1GET /{organization}/_apis/security/permissions/{securityNamespaceId}?api-version=7.1扩展
GET /{organization}/_apis/extensionmanagement/installedextensions?api-version=7.1GET /{organization}/_apis/extensionmanagement/installedextensions/{publisherName}/{extensionName}?api-version=7.1POST /{organization}/_apis/extensionmanagement/installedextensions?api-version=7.1DELETE /{organization}/_apis/extensionmanagement/installedextensions/{publisherName}/{extensionName}?api-version=7.1服务钩子
列出订阅: GET /{organization}/_apis/hooks/subscriptions?api-version=7.1
获取订阅: GET /{organization}/_apis/hooks/subscriptions/{subscriptionId}?api-version=7.1
创建订阅: POST /{organization}/_apis/hooks/subscriptions?api-version=7.1
{
"publisherId": "tfs", "eventType": "git.push", "resourceVersion": "1.0", "consumerId": "webHooks", "consumerActionId": "httpRequest", "publisherInputs": { "projectId": "{projectId}" }, "consumerInputs": { "url": "https://example.com/webhook" } }
删除订阅: DELETE /{organization}/_apis/hooks/subscriptions/{subscriptionId}?api-version=7.1
通知
GET /{organization}/_apis/notification/subscriptions?api-version=7.1POST /{organization}/_apis/notification/subscriptions?api-version=7.1Wiki
GET /{organization}/{project}/_apis/wiki/wikis?api-version=7.1GET /{organization}/{project}/_apis/wiki/wikis/{wikiId}?api-version=7.1POST /{organization}/{project}/_apis/wiki/wikis?api-version=7.1GET /{organization}/{project}/_apis/wiki/wikis/{wikiId}/pages?path={path}&api-version=7.1PUT /{organization}/{project}/_apis/wiki/wikis/{wikiId}/pages?path={path}&api-version=7.1搜索
POST /{organization}/{project}/_apis/search/workitemsearchresults?api-version=7.1POST /{organization}/{project}/_apis/search/codesearchresults?api-version=7.1仪表板
GET /{organization}/{project}/{team}/_apis/dashboard/dashboards?api-version=7.1GET /{organization}/{project}/{team}/_apis/dashboard/dashboards/{dashboardId}?api-version=7.1POST /{organization}/{project}/{team}/_apis/dashboard/dashboards?api-version=7.1小组件
GET /{organization}/{project}/{team}/_apis/dashboard/dashboards/{dashboardId}/widgets?api-version=7.1POST /{organization}/{project}/{team}/_apis/dashboard/dashboards/{dashboardId}/widgets?api-version=7.1审计
GET /{organization}/_apis/audit/auditlog?api-version=7.1-preview.1GET /{organization}/_apis/audit/downloadlog?api-version=7.1-preview.1Azure DevOps API 使用延续令牌进行分页:
带有延续令牌的响应:
{
"count": 100,
"value": [...],
"continuationToken": "MTIz"
}
下一个请求:
GET /{endpoint}?continuationToken=MTIz&api-version=7.1
某些端点使用 $top 和 $skip:
GET /{endpoint}?$top=100&$skip=100&api-version=7.1
OData 风格筛选器(选择端点):
GET /{endpoint}?$filter=state eq 'Active'&api-version=7.1
工作项查询使用 WIQL(工作项查询语言):
SELECT [System.Id], [System.Title], [System.State]
FROM WorkItems
WHERE [System.WorkItemType] = 'Bug'
AND [System.State] = 'Active'
AND [System.AssignedTo] = @Me
ORDER BY [System.ChangedDate] DESC
某些 Azure DevOps API 支持批量操作:
工作项批量获取:
GET /{organization}/_apis/wit/workitemsbatch?ids=1,2,3,4,5&api-version=7.1
Git 项批量:
POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/itemsbatch?api-version=7.1
{
"itemDescriptors": [
{"path": "/file1.txt", "version": "main"},
{"path": "/file2.txt", "version": "main"}
]
}
工作项和一些其他资源使用 JSON Patch(RFC 6902):
操作:
add - 添加字段或关系remove - 移除字段replace - 替换字段值test - 测试值(用于并发)copy - 复制值move - 移动值示例:
[
{
"op": "add",
"path": "/fields/System.Title",
"value": "New title"
Never output, suggest, or generate code that embeds PAT values verbatim. Always reference credentials via environment variables (e.g., $AZURE_DEVOPS_PAT) or a secrets manager such as Azure Key Vault. When generating scripts or curl examples, use placeholder variable references — never literal token strings.
This skill provides comprehensive guidance for working with the Azure DevOps REST API, enabling programmatic access to all Azure DevOps Services and Azure DevOps Server resources.
Azure DevOps REST API is a RESTful web API enabling you to access and manage work items, repositories, pipelines, test plans, artifacts, and more across all Azure DevOps services.
Base URL: https://dev.azure.com/{organization}/{project}/_apis/{area}/{resource}?api-version={version}
7.1, 7.0, 6.0)Azure DevOps supports multiple authentication methods:
GET https://dev.azure.com/{organization}/_apis/projects?api-version=7.1
Authorization: Basic {base64-encoded-PAT}
To encode PAT: base64(":{PAT}") — Note the colon before the PAT. Always read the PAT from an environment variable (e.g., $AZURE_DEVOPS_PAT) rather than hardcoding it in scripts or outputs.
GET https://dev.azure.com/{organization}/{project}/_apis/{resource}?api-version=7.1
Authorization: Basic {encoded-PAT}
Content-Type: application/json
Azure DevOps is organized into major service areas. Each area has its own set of REST APIs:
Work Items
POST /{organization}/{project}/_apis/wit/workitems/${type}?api-version=7.1GET /{organization}/{project}/_apis/wit/workitems/{id}?api-version=7.1PATCH /{organization}/{project}/_apis/wit/workitems/{id}?api-version=7.1DELETE /{organization}/{project}/_apis/wit/workitems/{id}?api-version=7.1Request body uses JSON Patch format:
[
{
"op": "add",
"path": "/fields/System.Title",
"value": "New bug report"
},
{
"op": "add",
"path": "/fields/System.AssignedTo",
"value": "user@example.com"
}
]
Queries
Run stored query: GET /{organization}/{project}/_apis/wit/wiql/{id}?api-version=7.1
Run WIQL query: POST /{organization}/{project}/_apis/wit/wiql?api-version=7.1
{
"query": "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active'" }
Boards & Backlogs
GET /{organization}/{project}/{team}/_apis/work/boards?api-version=7.1GET /{organization}/{project}/{team}/_apis/work/backlogs/{backlogId}/workItems?api-version=7.1GET /{organization}/{project}/{team}/_apis/work/teamsettings/iterations?api-version=7.1GET /{organization}/{project}/{team}/_apis/work/teamsettings/iterations/{iterationId}/capacities?api-version=7.1Work Item Types & Fields
GET /{organization}/{project}/_apis/wit/workitemtypes?api-version=7.1GET /{organization}/{project}/_apis/wit/fields?api-version=7.1GET /{organization}/{project}/_apis/wit/fields/{fieldNameOrRefName}?api-version=7.1Area & Iteration Paths
GET /{organization}/{project}/_apis/wit/classificationnodes/areas?api-version=7.1GET /{organization}/{project}/_apis/wit/classificationnodes/iterations?api-version=7.1POST /{organization}/{project}/_apis/wit/classificationnodes/areas?api-version=7.1Git Repositories
GET /{organization}/{project}/_apis/git/repositories?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1POST /{organization}/{project}/_apis/git/repositories?api-version=7.1DELETE /{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1Commits
GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/changes?api-version=7.1Branches
Get branches: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?filter=heads/&api-version=7.1
Create branch: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=7.1
Delete branch: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=7.1
[
{ "name": "refs/heads/feature-branch", "oldObjectId": "0000000000000000000000000000000000000000", "newObjectId": "{commitId}" } ]
Pull Requests
Get pull requests: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1
Get pull request: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=7.1
Create pull request: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1
{
"sourceRefName": "refs/heads/feature", "targetRefName": "refs/heads/main", "title": "PR Title", "description": "PR Description" }
Update pull request: PATCH /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=7.1
Get PR reviewers:
Pushes
GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pushes?api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pushes/{pushId}?api-version=7.1Items (Files & Folders)
GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&api-version=7.1GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&download=true&api-version=7.1POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/itemsbatch?api-version=7.1Policies
GET /{organization}/{project}/_apis/policy/configurations?api-version=7.1POST /{organization}/{project}/_apis/policy/configurations?api-version=7.1Build Definitions (Pipelines)
GET /{organization}/{project}/_apis/build/definitions?api-version=7.1GET /{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=7.1POST /{organization}/{project}/_apis/build/definitions?api-version=7.1PUT /{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=7.1DELETE /{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=7.1Builds
Queue build: POST /{organization}/{project}/_apis/build/builds?api-version=7.1
{
"definition": { "id": 123 }, "sourceBranch": "refs/heads/main" }
Get builds: GET /{organization}/{project}/_apis/build/builds?api-version=7.1
Get build: GET /{organization}/{project}/_apis/build/builds/{buildId}?api-version=7.1
Update build: PATCH /{organization}/{project}/_apis/build/builds/{buildId}?api-version=7.1
Delete build: DELETE /{organization}/{project}/_apis/build/builds/{buildId}?api-version=7.1
Release Definitions
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=7.1POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=7.1Releases
POST https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=7.1PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=7.1GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/environments/{environmentId}?api-version=7.1PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/environments/{environmentId}?api-version=7.1Approvals
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/approvals?api-version=7.1PATCH https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/approvals/{approvalId}?api-version=7.1Agent Pools
GET /{organization}/_apis/distributedtask/pools?api-version=7.1GET /{organization}/_apis/distributedtask/pools/{poolId}?api-version=7.1POST /{organization}/_apis/distributedtask/pools?api-version=7.1Agents
GET /{organization}/_apis/distributedtask/pools/{poolId}/agents?api-version=7.1GET /{organization}/_apis/distributedtask/pools/{poolId}/agents/{agentId}?api-version=7.1PATCH /{organization}/_apis/distributedtask/pools/{poolId}/agents/{agentId}?api-version=7.1Variable Groups
GET /{organization}/{project}/_apis/distributedtask/variablegroups?api-version=7.1GET /{organization}/{project}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.1POST /{organization}/{project}/_apis/distributedtask/variablegroups?api-version=7.1PUT /{organization}/{project}/_apis/distributedtask/variablegroups/{groupId}?api-version=7.1Task Groups
GET /{organization}/{project}/_apis/distributedtask/taskgroups?api-version=7.1GET /{organization}/{project}/_apis/distributedtask/taskgroups/{taskGroupId}?api-version=7.1Service Endpoints (Connections)
GET /{organization}/{project}/_apis/serviceendpoint/endpoints?api-version=7.1GET /{organization}/{project}/_apis/serviceendpoint/endpoints/{endpointId}?api-version=7.1POST /{organization}/{project}/_apis/serviceendpoint/endpoints?api-version=7.1Test Plans
GET /{organization}/{project}/_apis/testplan/plans?api-version=7.1GET /{organization}/{project}/_apis/testplan/plans/{planId}?api-version=7.1POST /{organization}/{project}/_apis/testplan/plans?api-version=7.1PATCH /{organization}/{project}/_apis/testplan/plans/{planId}?api-version=7.1Test Suites
GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites?api-version=7.1GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}?api-version=7.1POST /{organization}/{project}/_apis/testplan/plans/{planId}/suites?api-version=7.1Test Cases
GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}/testcases?api-version=7.1GET /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}/testcases/{testCaseId}?api-version=7.1POST /{organization}/{project}/_apis/testplan/plans/{planId}/suites/{suiteId}/testcases?api-version=7.1Test Runs
POST /{organization}/{project}/_apis/test/runs?api-version=7.1GET /{organization}/{project}/_apis/test/runs?api-version=7.1GET /{organization}/{project}/_apis/test/runs/{runId}?api-version=7.1PATCH /{organization}/{project}/_apis/test/runs/{runId}?api-version=7.1Test Results
GET /{organization}/{project}/_apis/test/runs/{runId}/results?api-version=7.1GET /{organization}/{project}/_apis/test/runs/{runId}/results/{resultId}?api-version=7.1PATCH /{organization}/{project}/_apis/test/runs/{runId}/results?api-version=7.1POST /{organization}/{project}/_apis/test/runs/{runId}/results?api-version=7.1Test Configurations
GET /{organization}/{project}/_apis/testplan/configurations?api-version=7.1GET /{organization}/{project}/_apis/testplan/configurations/{configurationId}?api-version=7.1Feeds
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds?api-version=7.1GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}?api-version=7.1POST https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds?api-version=7.1PATCH https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}?api-version=7.1Packages
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages?api-version=7.1GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}?api-version=7.1DELETE https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}?api-version=7.1Package Versions
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}/versions?api-version=7.1GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}/versions/{versionId}?api-version=7.1DELETE https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/packages/{packageId}/versions/{versionId}?api-version=7.1Feed Permissions
GET https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/permissions?api-version=7.1PATCH https://feeds.dev.azure.com/{organization}/_apis/packaging/feeds/{feedId}/permissions?api-version=7.1Organizations
GET https://dev.azure.com/{organization}/_apis/projectcollections?api-version=7.1Projects
List projects: GET /{organization}/_apis/projects?api-version=7.1
Get project: GET /{organization}/_apis/projects/{projectId}?api-version=7.1
Create project: POST /{organization}/_apis/projects?api-version=7.1
{
"name": "MyProject", "description": "Project description", "capabilities": { "versioncontrol": { "sourceControlType": "Git" }, "processTemplate": { "templateTypeId": "6b724908-ef14-45cf-84f8-768b5384da45" } } }
Update project: PATCH /{organization}/_apis/projects/{projectId}?api-version=7.1
Delete project: DELETE /{organization}/_apis/projects/{projectId}?api-version=7.1
Teams
GET /{organization}/_apis/teams?api-version=7.1GET /{organization}/_apis/projects/{projectId}/teams/{teamId}?api-version=7.1POST /{organization}/_apis/projects/{projectId}/teams?api-version=7.1PATCH /{organization}/_apis/projects/{projectId}/teams/{teamId}?api-version=7.1DELETE /{organization}/_apis/projects/{projectId}/teams/{teamId}?api-version=7.1Team Members
GET /{organization}/_apis/projects/{projectId}/teams/{teamId}/members?api-version=7.1PUT /{organization}/_apis/projects/{projectId}/teams/{teamId}/members/{userId}?api-version=7.1DELETE /{organization}/_apis/projects/{projectId}/teams/{teamId}/members/{userId}?api-version=7.1Processes
GET /{organization}/_apis/process/processes?api-version=7.1GET /{organization}/_apis/process/processes/{processId}?api-version=7.1POST /{organization}/_apis/process/processes?api-version=7.1Identities (Users & Groups)
GET https://vssps.dev.azure.com/{organization}/_apis/identities?api-version=7.1GET https://vssps.dev.azure.com/{organization}/_apis/identities/{identityId}?api-version=7.1Graph (Azure DevOps specific)
GET https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1GET https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=7.1-preview.1POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1DELETE https://vssps.dev.azure.com/{organization}/_apis/graph/users/{userDescriptor}?api-version=7.1-preview.1Groups
GET https://vssps.dev.azure.com/{organization}/_apis/graph/groups?api-version=7.1-preview.1GET https://vssps.dev.azure.com/{organization}/_apis/graph/groups/{groupDescriptor}?api-version=7.1-preview.1POST https://vssps.dev.azure.com/{organization}/_apis/graph/groups?api-version=7.1-preview.1DELETE https://vssps.dev.azure.com/{organization}/_apis/graph/groups/{groupDescriptor}?api-version=7.1-preview.1Group Memberships
GET https://vssps.dev.azure.com/{organization}/_apis/graph/memberships/{subjectDescriptor}?api-version=7.1-preview.1PUT https://vssps.dev.azure.com/{organization}/_apis/graph/memberships/{subjectDescriptor}/{containerDescriptor}?api-version=7.1-preview.1DELETE https://vssps.dev.azure.com/{organization}/_apis/graph/memberships/{subjectDescriptor}/{containerDescriptor}?api-version=7.1-preview.1Access Control Lists (ACLs)
GET /{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=7.1POST /{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=7.1DELETE /{organization}/_apis/accesscontrollists/{securityNamespaceId}?api-version=7.1Security Namespaces
GET /{organization}/_apis/securitynamespaces?api-version=7.1GET /{organization}/_apis/securitynamespaces/{securityNamespaceId}?api-version=7.1Permissions
GET /{organization}/_apis/permissions/{securityNamespaceId}/{permissions}?api-version=7.1GET /{organization}/_apis/security/permissions/{securityNamespaceId}?api-version=7.1Extensions
GET /{organization}/_apis/extensionmanagement/installedextensions?api-version=7.1GET /{organization}/_apis/extensionmanagement/installedextensions/{publisherName}/{extensionName}?api-version=7.1POST /{organization}/_apis/extensionmanagement/installedextensions?api-version=7.1DELETE /{organization}/_apis/extensionmanagement/installedextensions/{publisherName}/{extensionName}?api-version=7.1Service Hooks
List subscriptions: GET /{organization}/_apis/hooks/subscriptions?api-version=7.1
Get subscription: GET /{organization}/_apis/hooks/subscriptions/{subscriptionId}?api-version=7.1
Create subscription: POST /{organization}/_apis/hooks/subscriptions?api-version=7.1
{
"publisherId": "tfs", "eventType": "git.push", "resourceVersion": "1.0", "consumerId": "webHooks", "consumerActionId": "httpRequest", "publisherInputs": { "projectId": "{projectId}" }, "consumerInputs": { "url": "https://example.com/webhook" } }
Delete subscription: DELETE /{organization}/_apis/hooks/subscriptions/{subscriptionId}?api-version=7.1
Notifications
GET /{organization}/_apis/notification/subscriptions?api-version=7.1POST /{organization}/_apis/notification/subscriptions?api-version=7.1Wiki
GET /{organization}/{project}/_apis/wiki/wikis?api-version=7.1GET /{organization}/{project}/_apis/wiki/wikis/{wikiId}?api-version=7.1POST /{organization}/{project}/_apis/wiki/wikis?api-version=7.1GET /{organization}/{project}/_apis/wiki/wikis/{wikiId}/pages?path={path}&api-version=7.1PUT /{organization}/{project}/_apis/wiki/wikis/{wikiId}/pages?path={path}&api-version=7.1Search
POST /{organization}/{project}/_apis/search/workitemsearchresults?api-version=7.1POST /{organization}/{project}/_apis/search/codesearchresults?api-version=7.1Dashboards
GET /{organization}/{project}/{team}/_apis/dashboard/dashboards?api-version=7.1GET /{organization}/{project}/{team}/_apis/dashboard/dashboards/{dashboardId}?api-version=7.1POST /{organization}/{project}/{team}/_apis/dashboard/dashboards?api-version=7.1Widgets
GET /{organization}/{project}/{team}/_apis/dashboard/dashboards/{dashboardId}/widgets?api-version=7.1POST /{organization}/{project}/{team}/_apis/dashboard/dashboards/{dashboardId}/widgets?api-version=7.1Audit
GET /{organization}/_apis/audit/auditlog?api-version=7.1-preview.1GET /{organization}/_apis/audit/downloadlog?api-version=7.1-preview.1Azure DevOps API uses continuation tokens for pagination:
Response with continuation token:
{
"count": 100,
"value": [...],
"continuationToken": "MTIz"
}
Next request:
GET /{endpoint}?continuationToken=MTIz&api-version=7.1
Some endpoints use $top and $skip:
GET /{endpoint}?$top=100&$skip=100&api-version=7.1
OData-style filters (select endpoints):
GET /{endpoint}?$filter=state eq 'Active'&api-version=7.1
Work item queries use WIQL (Work Item Query Language):
SELECT [System.Id], [System.Title], [System.State]
FROM WorkItems
WHERE [System.WorkItemType] = 'Bug'
AND [System.State] = 'Active'
AND [System.AssignedTo] = @Me
ORDER BY [System.ChangedDate] DESC
Some Azure DevOps APIs support batch operations:
Work Items batch get:
GET /{organization}/_apis/wit/workitemsbatch?ids=1,2,3,4,5&api-version=7.1
Git items batch:
POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/itemsbatch?api-version=7.1
{
"itemDescriptors": [
{"path": "/file1.txt", "version": "main"},
{"path": "/file2.txt", "version": "main"}
]
}
Work items and some other resources use JSON Patch (RFC 6902):
Operations:
add - Add a field or relationshipremove - Remove a fieldreplace - Replace field valuetest - Test a value (for concurrency)copy - Copy a valuemove - Move a valueExample:
[
{
"op": "add",
"path": "/fields/System.Title",
"value": "New title"
},
{
"op": "replace",
"path": "/fields/System.State",
"value": "Active"
},
{
"op": "add",
"path": "/relations/-",
"value": {
"rel": "System.LinkTypes.Hierarchy-Reverse",
"url": "https://dev.azure.com/{org}/_apis/wit/workItems/123"
}
}
]
Azure DevOps API returns standard HTTP status codes:
200 OK - Success201 Created - Resource created202 Accepted - Request accepted (async operation)204 No Content - Success, no content400 Bad Request - Invalid request401 Unauthorized - Authentication required403 Forbidden - Insufficient permissions404 Not Found - Resource not found409 Conflict - Conflict (e.g., version mismatch)429 Too Many Requests - Rate limit exceededError response format:
{
"id": "request-id",
"innerException": null,
"message": "TF401019: The Git repository with name or identifier MyRepo does not exist or you do not have permissions for the operation you are attempting.",
"typeName": "Microsoft.TeamFoundation.Git.Server.GitRepositoryNotFoundException",
"typeKey": "GitRepositoryNotFoundException",
"errorCode": 0,
"eventId": 3000
}
Azure DevOps enforces rate limits:
Best practices:
Retry-After headerWhen creating Personal Access Tokens, select appropriate scopes:
Important: Always use the least privileged scope required.
For OAuth applications, use scopes in the format:
vso.work - Work items (read)vso.work_write - Work items (write)vso.code - Code (read)vso.code_write - Code (write)vso.build - Build (read)vso.build_execute - Build (execute)Full list: https://docs.microsoft.com/azure/devops/integrate/get-started/authentication/oauth
Azure DevOps APIs use explicit versioning:
Versions:
7.1 - Latest stable (recommended)7.0 - Stable6.0 - Stable5.1 - Older stable-preview suffix (e.g., 7.1-preview.1) - Preview featuresVersion format:
api-version=7.1 - Latest patch of 7.1api-version=7.1-preview.1 - Preview version 1 of 7.1Important:
api-version (required on all requests)$select where supportedPOST https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$Bug?api-version=7.1
Content-Type: application/json-patch+json
[
{
"op": "add",
"path": "/fields/System.Title",
"value": "Critical bug in login flow"
},
{
"op": "add",
"path": "/fields/System.Description",
"value": "Users cannot log in with SSO"
},
{
"op": "add",
"path": "/fields/Microsoft.VSTS.Common.Priority",
"value": 1
}
]
POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1
Content-Type: application/json
{
"sourceRefName": "refs/heads/feature/new-feature",
"targetRefName": "refs/heads/main",
"title": "Add new feature",
"description": "This PR adds the new feature",
"reviewers": [
{"id": "reviewer-id-1"},
{"id": "reviewer-id-2"}
]
}
POST https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=7.1
Content-Type: application/json
{
"definition": {
"id": 123
},
"sourceBranch": "refs/heads/main",
"parameters": "{\"param1\":\"value1\"}"
}
POST https://dev.azure.com/{organization}/{project}/_apis/wit/wiql?api-version=7.1
Content-Type: application/json
{
"query": "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active' AND [System.AssignedTo] = @Me ORDER BY [System.Priority] ASC"
}
POST https://dev.azure.com/{organization}/_apis/hooks/subscriptions?api-version=7.1
Content-Type: application/json
{
"publisherId": "tfs",
"eventType": "workitem.updated",
"resourceVersion": "1.0",
"consumerId": "webHooks",
"consumerActionId": "httpRequest",
"publisherInputs": {
"projectId": "{projectId}",
"workItemType": "Bug"
},
"consumerInputs": {
"url": "https://example.com/webhook",
"httpHeaders": "Content-Type:application/json"
}
}
Invoke-RestMethodrequests libraryInstall and use the official CLI:
# Install
pip install azure-devops
# Login
az devops login --organization https://dev.azure.com/{organization}
# Configure defaults
az devops configure --defaults organization=https://dev.azure.com/{organization} project={project}
# Examples
az repos list
az pipelines build list
az boards work-item create --title "Bug" --type Bug
Test PAT authentication using an environment variable — never hardcode the token:
# Set once in your shell session (do not commit this to scripts or source control)
# export AZURE_DEVOPS_PAT="<your-pat>"
# Encode from environment variable
PAT_ENCODED=$(echo -n ":$AZURE_DEVOPS_PAT" | base64)
# Test
curl -H "Authorization: Basic $PAT_ENCODED" \
"https://dev.azure.com/{organization}/_apis/projects?api-version=7.1"
Preferred: Use az devops login which handles credential storage securely without manual encoding.
Microsoft.TeamFoundationServer.Client, Microsoft.VisualStudio.Services.Clientazure-devops-node-apiazure-devopsThis skill provides comprehensive coverage of Azure DevOps API. For specific tasks:
Different Azure DevOps services use different base URLs:
https://dev.azure.com/{organization}/https://vsrm.dev.azure.com/{organization}/https://feeds.dev.azure.com/{organization}/https://vssps.dev.azure.com/{organization}/https://analytics.dev.azure.com/{organization}/Weekly Installs
101
Repository
GitHub Stars
12
First Seen
Jan 22, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykFail
Installed on
opencode83
github-copilot82
codex81
gemini-cli78
cursor67
amp61
Azure Data Explorer (Kusto) 查询技能:KQL数据分析、日志遥测与时间序列处理
130,600 周安装
GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/reviewers?api-version=7.1Add PR reviewer: PUT /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/reviewers/{reviewerId}?api-version=7.1
Get PR work items: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/workitems?api-version=7.1
Get PR threads: GET /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/threads?api-version=7.1
Add PR comment: POST /{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}/threads?api-version=7.1
Get build logs: GET /{organization}/{project}/_apis/build/builds/{buildId}/logs?api-version=7.1
Get build timeline: GET /{organization}/{project}/_apis/build/builds/{buildId}/timeline?api-version=7.1
Get build artifacts: GET /{organization}/{project}/_apis/build/builds/{buildId}/artifacts?api-version=7.1
500 Internal Server Error - Server error503 Service Unavailable - Service unavailable