I need to query VSTS work items using Wiql from vsp-node-api package, Please provide any examples if possible.
Asked
Active
Viewed 1,959 times
2 Answers
4
Refer to following code for details:
import * as vm from 'vso-node-api/WebApi';
import * as wa from 'vso-node-api/WorkItemTrackingApi';
import * as wi from 'vso-node-api/interfaces/WorkItemTrackingInterfaces';
import * as vss from 'vso-node-api/interfaces/Common/VSSInterfaces';
import * as core from 'vso-node-api/interfaces/CoreInterfaces';
var collectionUrl = "https://xxxxxx.visualstudio.com";
let token: string = "PersonalAccessToekn";
let creds = vm.getPersonalAccessTokenHandler(token);
var connection = new vm.WebApi(collectionUrl, creds);
let vstsWI: wa.IWorkItemTrackingApi = connection.getWorkItemTrackingApi();
async function WIQLquery() {
let teamC: core.TeamContext = {project: "", projectId: "", team: "", teamId: "" };
let wiqls: wi.Wiql = { query: "Select [System.Id] From WorkItems Where [System.WorkItemType] = 'Task' And [System.TeamProject] = 'Project'"};
let queryResult: wi.WorkItemQueryResult = await vstsWI.queryByWiql(wiqls, teamC);
queryResult.workItems.forEach(s=>console.log(s.url));
}
WIQLquery();

Eddie Chen - MSFT
- 29,708
- 2
- 46
- 60
-
Is there a way to get collectionUrl,Project,ProjectId,Team and TeamId via API? Thanks. – Bandara Sep 27 '16 at 04:52
-
@BandR Check the method in CoreAPI: https://github.com/Microsoft/vsts-node-api/blob/master/api/CoreApi.ts – Eddie Chen - MSFT Sep 27 '16 at 05:16
-
My requirement is to create the work items from the build task, so I have to get the project name and collectionUrl from build api. Thanks – Bandara Sep 27 '16 at 08:43
-
@BandR If you are running it from build task, you can get the collectionUrl and project name from environment variables: SYSTEM_TEAMPROJECT and SYSTEM_TEAMFOUNDATIONCOLLECTIONURI. – Eddie Chen - MSFT Sep 27 '16 at 08:51
0
Here is how I did it, using Javascript instead of Typescript. Shout out to Eddie Chen for leading me in the right direction.
// file - models/witModel.js
var azdev = require("azure-devops-node-api");
var Model = function(){};
Model.prototype.getWiqlQuery = function(wiqlQuery, teamName){
return new Promise(function(resolve, reject){
const orgUrl = process.env.ADOURI; // ex. https://dev.azure.com/<your org>
const token = process.env.ADOPAT; // Your personal access token
const teamProject = process.env.ADOPROJ;// Team Project
let authHandler = azdev.getPersonalAccessTokenHandler(token);
let connection = new azdev.WebApi(orgUrl, authHandler);
connection.getWorkItemTrackingApi().then(function(witAPI){
var teamContext = {project: teamProject, team: teamName };
witAPI.queryByWiql(wiqlQuery, teamContext).then(function(queryResult){
resolve(queryResult);
}).catch(function(err){reject(err)});
}).catch(function(err){
reject(err);
});
});
};
module.exports = new Model();
And this was how I used it.
// usage - the above code was saved in a module called witModel.js
// feel free to put the module where you need to.
var witModel = require("./models/witModel.js");
// form query and set the value of the teame to query
var query = {query: "your wiql query"};
var team = "team name in Azure DEvops";
// call the promise and handle resolve/reject - then/catch
witModel.getWiqlQueryResuults(query,team).then(function(data){
console.log(data);
}).catch(function(err){
console.log(err)
});

Grizzly Peak Software
- 1,428
- 4
- 15
- 20