Users - Create

将现有 AAD 或 MSA 用户具体化到 ADO 帐户中。

注意:创建的用户在帐户中不处于活动状态,除非他们在创建时显式分配了父组,或者已通过 AAD 组成员身份登录并自动获得许可。

必须先将用户添加到帐户,然后才能将用户添加到 ADO 组或分配资产。

请求正文必须是 GraphUserCreationContext 的派生类型:

  • GraphUserMailAddressCreationContext - 使用邮件地址作为对外部 AD 或 AAD 支持提供程序中的现有用户的引用创建新用户。
  • GraphUserOriginIdCreationContext - 使用 OriginID 作为对外部 AD 或 AAD 支持的提供程序中的现有用户的引用创建新用户。
  • GraphUserPrincipalNameCreationContext - 使用主体名称作为对外部 AD 或 AAD 支持的提供程序中的现有用户的引用创建新用户。

如果要添加的用户对应于之前删除的用户,则将还原该用户。

(可选)可以将新创建的用户添加为现有 ADO 组的成员和/或为用户指定自定义存储密钥。

POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1
POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?groupDescriptors={groupDescriptors}&api-version=7.1-preview.1

URI 参数

名称 必需 类型 说明
organization
path True

string

Azure DevOps 组织的名称。

api-version
query True

string

要使用的 API 版本。 这应设置为“7.1-preview.1”才能使用此版本的 API。

groupDescriptors
query

string

array (string)

希望图形用户加入的组的描述符的逗号分隔列表

请求正文

名称 类型 说明
storageKey

string

可选:如果提供,我们将将此标识符用于创建用户的存储密钥

响应

名称 类型 说明
200 OK

GraphUser

成功的操作

安全性

oauth2

Type: oauth2
Flow: accessCode
Authorization URL: https://app.vssps.visualstudio.com/oauth2/authorize&response_type=Assertion
Token URL: https://app.vssps.visualstudio.com/oauth2/token?client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer

Scopes

名称 说明
vso.graph_manage 授予读取用户、组、范围和组成员身份信息以及添加用户、组和管理组成员身份的能力

示例

Add a MSA user by UPN
Add an AAD user as member of a group
Add an AAD user by OID
Add an AAD user by UPN
Add an AAD user with a custom storage key

Add a MSA user by UPN

Sample Request

POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1

{
  "principalName": "fabrikamfiber4@hotmail.com"
}

Sample Response

location: https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2
{
  "subjectKind": "user",
  "metaType": "guest",
  "domain": "45aa3d2d-7442-473d-b4d3-3c670da9dd96",
  "principalName": "fabrikamfiber4@hotmail.com",
  "mailAddress": "fabrikamfiber4@hotmail.com",
  "origin": "aad",
  "originId": "ddddb7d1-2de3-4bab-98b6-ddcc994e964d",
  "displayName": "Jamal Hartnett",
  "_links": {
    "self": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2"
    },
    "memberships": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Memberships/aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2"
    },
    "membershipState": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/MembershipStates/aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2"
    },
    "storageKey": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/StorageKeys/aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2"
    },
    "avatar": {
      "href": "https://dev.azure.com/Fabrikam/_apis/GraphProfile/MemberAvatars/aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2"
    }
  },
  "url": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2",
  "descriptor": "aad.YWZkMzM2ZGQtZTgwYy03MWViLThlYmQtODMzNjMxYmEwNWM2"
}

Add an AAD user as member of a group

Sample Request

POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?groupDescriptors=vssgp.Uy0xLTktMTU1MTM3NDI0NS0yMTc2MDU2ODQ4LTMyODAwNzczODUtMjM4NDQzMDA4Mi0yNTc3Njk3NTA4LTEtMTYxOTEwNzUyMi0xMDQzNDcxMTc2LTIzNjk4NjYzNDMtMzAyODQ0OTA&api-version=7.1-preview.1

{
  "principalName": "jtseng@vscsi.us"
}

Sample Response

location: https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4
{
  "subjectKind": "user",
  "domain": "45aa3d2d-7442-473d-b4d3-3c670da9dd96",
  "principalName": "jtseng@vscsi.us",
  "mailAddress": "jtseng@vscsi.us",
  "origin": "aad",
  "originId": "55c8c7b6-7ace-43bc-918f-304dfa2b6317",
  "displayName": "Jia-hao Tseng",
  "_links": {
    "self": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "memberships": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Memberships/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "membershipState": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/MembershipStates/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "storageKey": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/StorageKeys/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "avatar": {
      "href": "https://dev.azure.com/Fabrikam/_apis/GraphProfile/MemberAvatars/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    }
  },
  "url": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4",
  "descriptor": "aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
}

Add an AAD user by OID

Sample Request

POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1

{
  "originId": "e97b0e7f-0a61-41ad-860c-748ec5fcb20b"
}

Sample Response

location: https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4
{
  "subjectKind": "user",
  "domain": "45aa3d2d-7442-473d-b4d3-3c670da9dd96",
  "principalName": "CPotra@vscsi.us",
  "mailAddress": "CPotra@vscsi.us",
  "origin": "aad",
  "originId": "e97b0e7f-0a61-41ad-860c-748ec5fcb20b",
  "displayName": "Cristina Potra",
  "_links": {
    "self": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4"
    },
    "memberships": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Memberships/aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4"
    },
    "membershipState": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/MembershipStates/aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4"
    },
    "storageKey": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/StorageKeys/aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4"
    },
    "avatar": {
      "href": "https://dev.azure.com/Fabrikam/_apis/GraphProfile/MemberAvatars/aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4"
    }
  },
  "url": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4",
  "descriptor": "aad.NjJhOWYxYmQtNmEwOS03NjQyLTkzYTAtMDFkMTVmZDQ2NDk4"
}

Add an AAD user by UPN

Sample Request

POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1

{
  "principalName": "jtseng@vscsi.us"
}

Sample Response

location: https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4
{
  "subjectKind": "user",
  "domain": "45aa3d2d-7442-473d-b4d3-3c670da9dd96",
  "principalName": "jtseng@vscsi.us",
  "mailAddress": "jtseng@vscsi.us",
  "origin": "aad",
  "originId": "55c8c7b6-7ace-43bc-918f-304dfa2b6317",
  "displayName": "Jia-hao Tseng",
  "_links": {
    "self": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "memberships": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Memberships/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "membershipState": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/MembershipStates/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "storageKey": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/StorageKeys/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    },
    "avatar": {
      "href": "https://dev.azure.com/Fabrikam/_apis/GraphProfile/MemberAvatars/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
    }
  },
  "url": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4",
  "descriptor": "aad.MDA0NzBlMzQtZGE2MS03YTY5LWJkOTYtNDg3YTg0OWVjNTU4"
}

Add an AAD user with a custom storage key

Sample Request

POST https://vssps.dev.azure.com/{organization}/_apis/graph/users?api-version=7.1-preview.1

{
  "originId": "27dbfced-5593-4756-98a3-913c39af7612",
  "storageKey": "9b71f216-4c4f-6b74-a911-efb0fa9c777f"
}

Sample Response

location: https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm
{
  "subjectKind": "user",
  "domain": "45aa3d2d-7442-473d-b4d3-3c670da9dd96",
  "principalName": "JMcleod@vscsi.us",
  "mailAddress": "JMcleod@vscsi.us",
  "origin": "aad",
  "originId": "27dbfced-5593-4756-98a3-913c39af7612",
  "displayName": "Johnnie McLeod",
  "_links": {
    "self": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm"
    },
    "memberships": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Memberships/aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm"
    },
    "membershipState": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/MembershipStates/aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm"
    },
    "storageKey": {
      "href": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/StorageKeys/aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm"
    },
    "avatar": {
      "href": "https://dev.azure.com/Fabrikam/_apis/GraphProfile/MemberAvatars/aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm"
    }
  },
  "url": "https://vssps.dev.azure.com/Fabrikam/_apis/Graph/Users/aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm",
  "descriptor": "aad.OWI3MWYyMTYtNGM0Zi03Yjc0LWE5MTEtZWZiMGZhOWM3Nzdm"
}

定义

名称 说明
GraphUser
GraphUserCreationContext

请勿尝试使用此类型创建新用户。 请改用其中一个子类。 此类型不包含足够的字段来创建新用户。

ReferenceLinks

表示 REST 引用链接集合的类。

GraphUser

名称 类型 说明
_links

ReferenceLinks

此字段包含零个或多个有关图形主题的有趣链接。 可以调用这些链接来获取有关此图主题的其他关系或更详细的信息。

descriptor

string

描述符是在系统运行时引用图形主题的主要方法。 此字段将唯一标识帐户和组织中的同一图形主题。

directoryAlias

string

后备目录中用户通常唯一的短名称。 对于 AAD 用户,这对应于邮件昵称,通常但不一定类似于 @ 符号前的用户邮件地址部分。 对于 GitHub 用户,这对应于 GitHub 用户句柄。

displayName

string

这是图形主题的非唯一显示名称。 若要更改此字段,必须在源提供程序中更改其值。

domain

string

这表示图形成员的源容器的名称。 (对于 MSA,这是“Windows Live ID”,对于 AD,为域的名称,对于 AAD,为目录的 tenantID,对于 VSTS 组,范围 Id 等)

isDeletedInOrigin

boolean

如果为 true,则标识提供者中的组已被删除

legacyDescriptor

string

[仅限内部使用]如果需要使用标识描述符访问旧版 IMS,则可以使用旧版描述符。

mailAddress

string

给定图形成员的记录的电子邮件地址。 这可能不同于主体名称。

metaType

string

源中用户的元类型,例如“member”、“guest”等。有关一组可能的值,请参阅 UserMetaType。

origin

string

源标识符的源提供程序的类型 (例如:AD、AAD、MSA)

originId

string

源系统中的唯一标识符。 通常为 sid、对象 ID 或 Guid。 链接和取消链接操作可能会导致用户的此值发生更改,因为该用户不受其他提供程序的支持,并且新提供程序中具有不同的唯一 ID。

principalName

string

这是源提供程序中此图形成员的 PrincipalName。 源提供程序可能会随时间推移更改此字段,并且 VSTS 不能保证在图形成员的生命周期内是不可变的。

subjectKind

string

此字段标识图形主题 (类型,例如:组、作用域、用户) 。

url

string

此 URL 是指向此图主题的源资源的完整路由。

GraphUserCreationContext

请勿尝试使用此类型创建新用户。 请改用其中一个子类。 此类型不包含足够的字段来创建新用户。

名称 类型 说明
storageKey

string

可选:如果提供,我们将将此标识符用于创建用户的存储密钥

表示 REST 引用链接集合的类。

名称 类型 说明
links

object

链接的只读视图。 由于引用链接是只读的,因此我们只想将其公开为只读。