REST call Azure DevOps - как узнать мою личность - PullRequest
1 голос
/ 26 марта 2019

Мы недавно перешли с предварительно настроенной TFS на Azure Devops в облаке. Я обновляю свои скрипты powershell, которые я использую для автоматизации отслеживания рабочих элементов, перемещая их из api v3 в v5 и обеспечивая правильную работу всех моих аутентификационных / конечных точек. У меня есть настройка аутентификации, и я могу сделать несколько вызовов GET (перечислить репозитории, выполнить запросы WIQL и т. Д.) Теперь мне нужно создать новые рабочие элементы, используя Создать конечную точку .

Мое тело выглядит так (и это работало на Prem, TFS 2018, REST версии 3.0):

[
    {
        "op": "add",
        "path": "/fields/System.Title",
        "value": "My PBI title"
    },
    {
        "op": "add",
        "path": "/fields/System.AssignedTo",
        "value": "DOMAIN\\USERNAME"
    },
    {
        "op": "add",
        "path": "/fields/System.AreaPath",
        "value": "My\\Teams\\Path"
    },
    {
        "op": "add",
        "path": "/fields/System.IterationPath",
        "value": "backlog\\2019.03.25"
    }
]

Когда я отправляю POST с этим телом, я получаю код ответа 400 и сообщение об ошибке, которое гласит: The identity value 'DOMAIN\\USERNAME' for field 'Assigned To' is an unknown identity."

Если я исключаю это свойство из оператора body, я могу создать рабочий элемент, поэтому я пытаюсь получить разные варианты имени / имени моего домена (фамилия, имя / имя, фамилия), чтобы попытаться получить его работать / назначить элемент мне, но я продолжаю получать ту же ошибку.

Итак, мой следующий шаг - проверить документацию по API, и я вижу метод Users - Get , но для этого необходимо ввести userDescriptor, который, как я полагаю, является своего рода GUID для идентификации каждого пользователь ... но я не знаю, что мое!

На данный момент я в тупике. Есть несколько других конечных точек REST для получения данных профиля / безопасности, но это кажется слишком сложным для создания рабочего элемента.

Как вы использовали эту конечную точку REST для создания элемента / назначения его пользователю с помощью Azure-Devops в облаке?

1 Ответ

4 голосов
/ 26 марта 2019

После того, как я еще немного похлопал по клавиатуре, я заставил ее работать. определение тела должно быть:

{
   "op": "add",
   "path": "/fields/System.AssignedTo",
   "value": "LastName, Firstname"
}

Так что в моем случае буквальные значения были бы:

{
       "op": "add",
       "path": "/fields/System.AssignedTo",
       "value": "McClure, Brandon"
}

Обновление

Я использую эти вызовы REST в функциях Powershell и получаю это программно через запрос ADSI, который работает для большинства людей. У некоторых людей есть очень старые учетные записи AD, и их UPN не настроены так же, как у нас, поэтому я позволяю пользователю указывать свое собственное значение, хотя я понимаю, что после того, как все UPN приведены в соответствие для нашей федеративной AD Azure, тогда этот запрос ADSI будет работать для всех!

param([string] $myIdentity = $null)

$dom = $env:userdomain
$usr = $env:username
if([string]::IsNullOrEmpty($myIdentity)){
    Write-Verbose "Getting the identity to set the tasks assigned to based on a ADSI query"
    $myIdentity = ([adsi]"WinNT://$dom/$usr,user").fullname
}
else{
    Write-Verbose "Using the identity you passed in"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...