Azure Devops 由于权限无法以编程方式创建服务 Hook

标签 azure azure-devops hook webhooks azure-devops-rest-api

我正在使用 Rest API 为 Azure DevOps 上的项目设置服务 Hook (来自此处:https://learn.microsoft.com/en-us/rest/api/azure/devops/hooks/subscriptions/create?view=azure-devops-rest-5.0#security)

对于该组织中的同一用户,我已从项目设置(来自 https://dev.azure.com/ {organization}/{repo}/_settings/serviceHooks)成功创建了服务 Hook 。所以这意味着我有权创建订阅钩子(Hook)。

对于编程,我使用 PAT 为 xxx 组织使用范围代码(读、写)(vs.code_write)进行授权。我尝试过使用 full_access 进行 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/"
  }
}

这是错误响应:

{
    "$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
}

最佳答案

Azure Devops Unable to create service hook programatically due to permission

根据错误信息:

"The user '\' does not have permission to edit a subscription."

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

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

检查Q & A了解更多详细信息。

希望这有帮助。

关于Azure Devops 由于权限无法以编程方式创建服务 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219875/

相关文章:

azure - Azure REST API 是否有 OpenAPI 规范?

azure - 使用 Terraform 为虚拟 secret 码创建 Key Vault secret

azure - 为什么我的 Azure Devops Pipeline Artifact 在下载后被另一个进程锁定?

c++ - 防止 Qt 窗口在 Hook 的应用程序中关闭,Eventfilter 不执行任何操作

c++ - 在 cout 中使用 Hook 函数时应用程序崩溃

构建 Docker 镜像时的 Azure Pipeline "Permission denied"

c# - 如何通过代码启用EnableSqlCommandTextInstrumentation?

tfs - 如何在 VisualStudio.com 上创建团队项目集合?

azure-devops - Azure Devops - 运行时嵌套变量

java - 如何使用 xpose 挂接到 int[] 方法?