Trying to get Work Items for an Azure DevOps Project.
JavaScript
x
26
26
1
import requests
2
import base64
3
from azure.devops.connection import Connection
4
from azure.devops.v5_1.work_item_tracking.models import Wiql
5
from msrest.authentication import BasicAuthentication
6
7
8
organization = "https://dev.azure.com/dev"
9
pat = 'ey3nbq'
10
authorization = str(base64.b64encode(bytes(':'+pat, 'ascii')), 'ascii')
11
12
headers = {
13
'Accept': 'application/json',
14
'Content-Type': 'application/json',
15
'Authorization': 'Basic '+authorization
16
}
17
18
payload = {
19
20
"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)"
21
}
22
23
24
response = requests.post(url="https://dev.azure.com/dev/Agile_Board/_apis/wit/wiql?api-version=5.1", headers=headers, data=payload)
25
print(response.text)
26
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):
JavaScript
1
2
1
response = requests.post(url="https://dev.azure.com/YOUR_ORG/Agile_Board/_apis/wit/wiql?api-version=5.1", headers=headers, json=payload)
2
or use something like this:
JavaScript
1
4
1
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)"}"
2
3
response = requests.post(url="https://dev.azure.com/YOUR_ORG/Agile_Board/_apis/wit/wiql?api-version=5.1", headers=headers, data=payload_str)
4
Check this question: How to POST JSON data with Python Requests?