microsoft / azure-devops-python-api

Azure DevOps Python API
https://docs.microsoft.com/azure/devops/integrate/index?view=azure-devops
MIT License
593 stars 200 forks source link

How to query work items once and get desired fields #496

Open gp-bma opened 7 months ago

gp-bma commented 7 months ago

Hi There, I tried to use the following codes to execute my query with wiql. However, it depends on two times api calls, one is query_by_wiql and the other is get_work_items. In the first method, it will get all the ids (but no other fields), in the later one, it will get work items based on the ids returned in the first method. My question is that is there a way to directly query and get my desired fields in just one call?

credentials = BasicAuthentication('', api_token)
connection = Connection(base_url=server, creds=credentials)
client = connection.clients.get_work_item_tracking_client()
wiql = Wiql(query=query)
wiql_results = client.query_by_wiql(wiql, top=100).work_items
if wiql_results:
    ids = [str(res.id) for res in wiql_results]
    work_items = client.get_work_items(ids, fields=fields)
typorian commented 6 months ago

As you can see here, as you are requesting a WorkItemReference Object with your query_by_wiql (https://github.com/microsoft/azure-devops-python-api/blob/dev/azure-devops/azure/devops/v7_1/work_item_tracking/models.py#L1494), this object only has the ID and URL as attributes, so you do indeed need another query to get the additional properties, like you showed in your example.