我正在使用Rest API (从这里:https://docs.microsoft.com/en-us/rest/api/azure/devops/hooks/subscriptions/create?view=azure-devops-rest-5.0#security)为Azure DevOps上的项目设置服务挂钩。
对于该组织中的同一用户,我已经成功地通过项目设置(从https://dev.azure.com/{organization}/{repo}/_settings/serviceHooks). )创建了服务挂钩所以这意味着我有权创建订阅钩子。
对于编程,我使用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
}
发布于 2019-05-22 17:33:29
由于权限,
Azure Devops无法以编程方式创建服务挂钩
根据错误信息:
“用户'\‘没有编辑订阅的权限。”
您似乎没有编辑订阅的权限。正如我们所知道的,当事件发生时,将评估项目中所有已启用的订阅,并对所有匹配的订阅执行使用者操作。
因此,我们应该具有编辑订阅的权限。您可以需要"Edit Subscriptions
“和"view subscriptions
”来设置订阅。默认情况下,只有项目管理员才具有这些权限。
有关更多详细信息,请查看Q & A。
希望这能有所帮助。
发布于 2021-09-15 10:37:04
如果您可以通过Web创建订阅(您实际上拥有该权限),并且访问令牌的作用域是正确的,但仍然失败,请尝试将projectId
添加到publisherInputs
。
{
...
"publisherInputs": {
...
"projectId": "<guid>"
},
...
}
如果您不知道如何获取projectId
,请尝试此接口:
https://stackoverflow.com/questions/56219875
复制相似问题