Как программно добавить пользователя в AzureDevOps (например, Rest API) без уведомления? - PullRequest
0 голосов
/ 10 марта 2020

Я хочу добавлять пользователей в мою Azure Сервисную организацию DevOps программно, без получения ими уведомлений. Я начал со сценария, подобного приведенному ниже, используя API оставленных прав доступа пользователя , но пользователи по-прежнему получают уведомления:

$method = 'POST'
$devopsuri = "https://vsaex.dev.azure.com/<Devops org name>/_apis/userentitlements?api-version=5.1-preview.1"
$pat = "<pat>"
$encodedPat = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$pat"))
$header = @ {
  Authorization = "Basic $encodedPat"
}
$body = @ {
  "accessLevel" = @ {
    "accountLicenseType" = "stakeholder"
  }
  "user" = @ {
    "principalName" = "<UPN>"
    "subjectKind" = "user"
  }
} | ConvertTo - Json - Depth 5
$result = Invoke - RestMethod - Uri $devopsuri - Method $method - Headers $header - Body $body - UseBasicParsing - ContentType 'application/json'
https://stackoverflow.com/questions/ask#

1 Ответ

1 голос
/ 11 марта 2020

Когда мы не проверяем Send email invites в пользовательском интерфейсе, приглашенные не будут получать уведомления. Таким образом, мы можем получить этот API, нажав f12 в браузере.

enter image description here

enter image description here

Rest api : необходимо добавить doNotSendInviteForNewUsers=true к URL и использовать метод PATCH.

PATCH https://vsaex.dev.azure.com/{org}/_apis/UserEntitlements?doNotSendInviteForNewUsers=true&api-version=5.1-preview.1

Тело запроса образца :

[{"from":"","op":0,"path":"","value":{"accessLevel":{"licensingSource":1,"accountLicenseType":2,"msdnLicenseType":0,"licenseDisplayName":"Basic","status":0,"statusMessage":"","assignmentSource":1},"user":{"principalName":"XXXX@outlook.com","subjectKind":"user"}}}]

Мой тест в Почтальоне:

enter image description here

...