由于权限问题,Azure Devops无法以编程方式创建服务挂钩

由于权限问题,Azure Devops无法以编程方式创建服务挂钩,azure,azure-devops,hook,webhooks,azure-devops-rest-api,Azure,Azure Devops,Hook,Webhooks,Azure Devops Rest Api,我正在使用RESTAPI为Azure DevOps上的项目设置服务挂钩(从这里开始:) 对于该组织中的同一用户,我已成功地从项目设置(从{organization}/{repo}/_settings/serviceHooks)创建了服务挂钩。这意味着我有权创建订阅挂钩 对于编程,我使用PAT对xxx组织的范围代码(读、写)(vs.code_写)进行授权。我已经尝试了完全访问PAT,但效果不太好 请求如下: POST https://dev.azure.com/xxx/_apis/hooks/su

我正在使用RESTAPI为Azure DevOps上的项目设置服务挂钩(从这里开始:)

对于该组织中的同一用户,我已成功地从项目设置(从{organization}/{repo}/_settings/serviceHooks)创建了服务挂钩。这意味着我有权创建订阅挂钩

对于编程,我使用PAT对xxx组织的范围代码(读、写)(vs.code_写)进行授权。我已经尝试了完全访问PAT,但效果不太好

请求如下:

POST https://dev.azure.com/xxx/_apis/hooks/subscriptions?api-version=5.0

Header: Authorization: Basic <Base64PAT>
Body: {
  "publisherId": "tfs",
  "eventType": "git.pullrequest.updated",
  "resourceVersion": "1.0",
  "consumerId": "webHooks",
  "consumerActionId": "httpRequest",
  "publisherInputs": {
    "notificationType": "PushNotification",
    "repository": "<repo_id>"
  },
  "consumerInputs": {
    "url": "https://my/receiver/url/"
  }
}
POSThttps://dev.azure.com/xxx/_apis/hooks/subscriptions?api-版本=5.0
标题:授权:基本
正文:{
“publisherId”:“tfs”,
“eventType”:“git.pullrequest.updated”,
“资源版本”:“1.0”,
“consumerId”:“webHooks”,
“consumerActionId”:“httpRequest”,
“发行人”包括:{
“通知类型”:“推送通知”,
“存储库”:”
},
“消费者权益”:{
“url”:”https://my/receiver/url/"
}
}
以下是错误响应:

{
    "$id": "1",
    "innerException": null,
    "message": "The user '<user_id>\\<email>' does not have permission to edit a subscription.",
    "typeName": "System.ArgumentException, mscorlib",
    "typeKey": "ArgumentException",
    "errorCode": 0,
    "eventId": 0
}
{
“$id”:“1”,
“innerException”:null,
“消息”:“用户'\\'没有编辑订阅的权限。”,
“typeName”:“System.ArgumentException,mscorlib”,
“typeKey”:“ArgumentException”,
“错误代码”:0,
“eventId”:0
}
由于权限问题,Azure Devops无法以编程方式创建服务挂钩

根据错误信息:

“用户“\”没有编辑文件的权限 订阅。”

您似乎没有编辑订阅的权限。我们知道,当事件发生时,将评估项目中所有已启用的订阅,并对所有匹配的订阅执行使用者操作

因此,我们应该拥有编辑订阅的权限。您可以需要“
编辑订阅
”和“
查看订阅
”来设置订阅。默认情况下,只有项目管理员具有这些权限

有关更多详细信息,请查看


希望这有帮助。

您是如何发送请求的?你能分享密码吗?我用邮递员来请求。