如何在 VSTS Graph api 组列表查询中使用 scopeDescriptor 和 subjectTypes?

Ken*_*Ken 2 azure-devops azure-devops-rest-api

我正在尝试按名称解析特定的 VSTS 组以检索 identityDescriptor 属性。我想利用支持的查询参数,而不是查询所有组和过滤器。查看VSTS Groups - List API,它支持附加查询参数 scopeDescriptor 和 subjectType。但是,我一直为这些参数提供错误的值。

但是,当我指定这些的任何组合时,我得到 0 个结果。此外,一旦我添加了 scopeDescriptor,我就会遇到 Microsoft.VisualStudio.Services.Graph.InvalidSubjectTypeException -> HTTP 400 Bad Request。

问题:

  1. 什么是 subjectTypes 的预期值示例?

编辑 1 subjectTypes 不是实际类型,而是主题描述符前缀的子类型。例如 -> vssgp,aadgp:

"subjectDescriptor": "vssgp.Dc0NDgzLTzQ1NwOTI5LTI0NTcwNDLTAtMwUy0xLTktMTAtMC0wMjgxNjcxNDU0OS0zMU1MTM3NDI0NS0yMjUzNzA0ODMtE"
Run Code Online (Sandbox Code Playgroud)
  1. 什么是 scopeDescriptor 的预期值示例?

示例查询网址:

 - Working:
   https://{account}.vssps.visualstudio.com/_apis/graph/groups?api-version=4.1-preview.1

 - Working subjectTypes:
   https://{account}.vssps.visualstudio.com/_apis/graph/groups?subjectTypes=vssgp&api-version=4.1-preview.1

 - scopeDescriptor throws:
   https://{account}.vssps.visualstudio.com/_apis/graph/groups?scopeDescriptor=collection&api-version=4.1-preview.1
   https://{account}.vssps.visualstudio.com/_apis/graph/groups?scopeDescriptor=collection&subjectTypes=Microsoft.TeamFoundation.Identity&api-version=4.1-preview.1
Run Code Online (Sandbox Code Playgroud)

jay*_*eni 6

您可以通过发出 api 请求来获取项目或集合的范围描述符https://vssps.dev.azure.com/{organization}/_apis/graph/descriptors/{Id}(如果要获取项目的范围描述符,请将 id 替换为 projectId 等)。

例如,如果您想获取一个项目的范围描述符,那么只需将请求 URL 中的存储键替换为项目 ID,作为响应,您将获得范围描述符。范围描述符具有以下格式 scp.(长唯一标识符)。

PS:有关如何获取描述符的更多信息,请访问https://docs.microsoft.com/en-us/rest/api/azure/devops/graph/descriptors/get?view=azure-devops-rest-5.0。记住 storagekey 可以替换为 projectid 或 collectionid 以获得特定的描述符。


sta*_*SFT 2

对于subjectTypes,它是组类型,例如vssgp、aadgp,可以从每个组的描述符值中获取。