Я собираюсь создать несколько инструментов для запроса текущих рабочих элементов спринта команды. Я не уверен, как это сделать, учитывая организацию, проект и команду. Кажется, я могу получить текущую итерацию, выполнив этот вызов:
https://dev.azure.com/ {org} / {project} / {{team} / _ apis / work / teamsettings / iterations? $ timeframe = current & api-version = 5.1
он возвращает что-то вроде этого:
{
"count": 1,
"value": [
{
"id": "8c15e886-ece7-49ce-ab5a-4090aefb5ce2",
"name": "Sprint 1",
"path": "Red Kitten Matrix\\Sprint 1",
"attributes": {
"startDate": null,
"finishDate": null,
"timeFrame": "current"
},
"url": "https://dev.azure.com/chrisdevopsprojects/e8d05711-3014-4ba7-82b7-ab6829c455dc/aed68f47-9035-4af5-9b0d-b0c19b4e9e9e/_apis/work/teamsettings/iterations/8c15e886-ece7-49ce-ab5a-4090aefb5ce2"
}
]
}
Так что я могу получить указатель на спринт текущей команды, но как вы возвращаете все рабочие элементы спринта и задачи внутри них?
Я не вижу здесь никакой информации:
https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/work%20items/list?view=azure-devops-rest-5.1
Спасибо!
РЕДАКТИРОВАТЬ:
Итак, я нашел запрос Work Item Query Language (WIQL ... почему бы не угадать), который работает, когда я вызываю его в devops в пользовательском интерфейсе, и будет работать через остальные API, но это заставит меня сделать кучу ajax запросов, чтобы вытащить все обратно. Пожалуйста, дайте мне знать, если есть более простой способ получить это.
Вот мой WIQL:
SELECT
[System.Id],
[System.WorkItemType],
[System.Title],
[System.AssignedTo],
[System.State],
[System.Tags]
FROM workitemLinks
WHERE
(
[Source].[System.TeamProject] = @project
AND [Source].[System.WorkItemType] <> 'Task'
AND [Source].[System.State] <> ''
AND [Source].[System.IterationPath] = @currentIteration('[Red Kitten Matrix]\Red Kitten Matrix Team <id:aed68f47-9035-4af5-9b0d-b0c19b4e9e9e>')
)
AND (
[Target].[System.TeamProject] = @project
AND [Target].[System.WorkItemType] <> ''
)
ORDER BY [System.Id]
MODE (MayContain)
Возвращает этот красивый результат в пользовательском интерфейсе: 
Но когда я пытаюсь сделать это через API через эту конечную точку: https://dev.azure.com/chrisdevopsprojects/Red%20Kitten%20Matrix/Red%20Kitten%20Matrix%20Team/_apis/wit/wiql?api-version=5.1
отправка этого тела:
{
"query": "SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] FROM workitemLinks WHERE ( [Source].[System.TeamProject] = @project AND [Source].[System.WorkItemType] <> 'Task' AND [Source].[System.State] <> '' AND [Source].[System.IterationPath] = @currentIteration('[Red Kitten Matrix]\\Red Kitten Matrix Team')) AND ([Target].[System.TeamProject] = @project AND [Target].[System.WorkItemType] <> '' ) ORDER BY [System.Id] MODE (MayContain)"
}
Я получаю ответ в следующем виде:
{
"queryType": "oneHop",
"queryResultType": "workItemLink",
"asOf": "2020-04-28T03:00:48.353Z",
"columns": [
{
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
{
"referenceName": "System.WorkItemType",
"name": "Work Item Type",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.WorkItemType"
},
{
"referenceName": "System.Title",
"name": "Title",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Title"
},
{
"referenceName": "System.AssignedTo",
"name": "Assigned To",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.AssignedTo"
},
{
"referenceName": "System.State",
"name": "State",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.State"
},
{
"referenceName": "System.Tags",
"name": "Tags",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Tags"
}
],
"sortColumns": [
{
"field": {
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
"descending": false
},
{
"field": {
"referenceName": "System.Id",
"name": "ID",
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/fields/System.Id"
},
"descending": false
}
],
"workItemRelations": [
{
"rel": null,
"source": null,
"target": {
"id": 6,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/6"
}
},
{
"rel": "System.LinkTypes.Hierarchy-Forward",
"source": {
"id": 6,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/6"
},
"target": {
"id": 10,
"url": "https://dev.azure.com/chrisdevopsprojects/_apis/wit/workItems/10"
}
},
...
Таким образом, похоже, что он не возвращает столбцы, которые я указываю в моем WIQL, и мне придется развернуться и запросить API рабочих элементов для каждого идентификатор рабочего элемента, возвращенный из этого запроса. Я хотел бы не делать 20+ повторных звонков для разрешения нужных мне данных. Есть ли лучший подход?
Спасибо