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

时间:2018-05-03 23:36:18

标签: azure-devops azure-devops-rest-api

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

然而,当我指定这些的任何组合时,我得到0结果。另外,一旦我添加了scopeDescriptor,我就点击了Microsoft.VisualStudio.Services.Graph.InvalidSubjectTypeException - > HTTP 400错误请求。

问题:

  1. subjectTypes的预期值的示例是什么?
  2. 修改1 subjectTypes不是实际类型,而是主题描述符前缀的子类型。例如 - > vssgp,aadgp:

    "subjectDescriptor": "vssgp.Dc0NDgzLTzQ1NwOTI5LTI0NTcwNDLTAtMwUy0xLTktMTAtMC0wMjgxNjcxNDU0OS0zMU1MTM3NDI0NS0yMjUzNzA0ODMtE"
    
    1. scopeDescriptor的预期值的示例是什么?
    2. 示例查询网址:

       - 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
      

2 个答案:

答案 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,你可以从每个组的描述符值中获取它。