Trying to get Work Items for an Azure DevOps Project.
import requests import base64 from azure.devops.connection import Connection from azure.devops.v5_1.work_item_tracking.models import Wiql from msrest.authentication import BasicAuthentication organization = "https://dev.azure.com/dev" pat = 'ey3nbq' authorization = str(base64.b64encode(bytes(':'+pat, 'ascii')), 'ascii') headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': 'Basic '+authorization } payload = { "query": "SELECT [System.Id] FROM workitemLinks WHERE ([Source].[System.WorkItemType] = 'Task') AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse') AND ([Target].[System.WorkItemType] = 'User Story') MODE (DoesNotContain)" } response = requests.post(url="https://dev.azure.com/dev/Agile_Board/_apis/wit/wiql?api-version=5.1", headers=headers, data=payload) print(response.text)
Gives response 400
Have tried many things, been struggling a bit with this. Any help is much appreciated. How to get project’s work items without using their ID
. Does the request
need to be changed in some way?
Advertisement
Answer
Update your post to (json=payload):
response = requests.post(url="https://dev.azure.com/YOUR_ORG/Agile_Board/_apis/wit/wiql?api-version=5.1", headers=headers, json=payload)
or use something like this:
payload_str = "{"query": "SELECT [System.Id] FROM workitemLinks WHERE ([Source].[System.WorkItemType] = 'Task') AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse') AND ([Target].[System.WorkItemType] = 'User Story') MODE (DoesNotContain)"}" response = requests.post(url="https://dev.azure.com/YOUR_ORG/Agile_Board/_apis/wit/wiql?api-version=5.1", headers=headers, data=payload_str)
Check this question: How to POST JSON data with Python Requests?