我正在尝试按名称解析特定的VSTS组以检索identityDescriptor属性。我想利用支持的查询参数,而不是查询所有组和过滤器。查看VSTS Groups - List API,它支持其他查询参数scopeDescriptor和subjectType。但是,我一直为这些参数提供错误的值。
然而,当我指定这些的任何组合时,我得到0结果。另外,一旦我添加了scopeDescriptor,我就点击了Microsoft.VisualStudio.Services.Graph.InvalidSubjectTypeException - > HTTP 400错误请求。
问题:
修改1 subjectTypes不是实际类型,而是主题描述符前缀的子类型。例如 - > vssgp,aadgp:
"subjectDescriptor": "vssgp.Dc0NDgzLTzQ1NwOTI5LTI0NTcwNDLTAtMwUy0xLTktMTAtMC0wMjgxNjcxNDU0OS0zMU1MTM3NDI0NS0yMjUzNzA0ODMtE"
示例查询网址:
- 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
答案 0 :(得分:1)
您可以通过向https://vssps.dev.azure.com/{organization}/_apis/graph/descriptors/{Id}
发出api请求来获取项目或集合的范围描述符(如果要获取项目的范围描述符,请用projectId替换ID)。
例如,如果要获取项目的范围描述符,则只需将请求URL中的存储密钥替换为项目ID,并作为响应就可以获取范围描述符。范围描述符具有以下格式scp。(长唯一标识符)。
P.S:有关如何获取描述符的更多信息,请参见https://docs.microsoft.com/en-us/rest/api/azure/devops/graph/descriptors/get?view=azure-devops-rest-5.0。请记住,可以使用projectid或collectionid替换storagekey以获得特定的描述符。
答案 1 :(得分:0)
关于subjectTypes,它是组类型,例如vssgp,aadgp,你可以从每个组的描述符值中获取它。