I’m using a hosted version of JIRA and needed to obtain quick totals based on filters that I have setup.
I could not find any easy documentation online so I thought I’d share my quick hack.
The REST API is very well documented and uses the same JQL as the filters do.
In order to view the commit list for an iteration I have some JQL that looks like:
fixversion = 20120611 and fixversion was 20120611 ON “2012/06/11” AND status NOT IN (canceled, “on hold”)
In order to feed that into the API I needed to construct a url along the lines of
https://**********.atlassian.net/rest/api/2/search?jql=#{urlencoded JQL string}&fields=customfield\_10003&maxresults=400
The &fields=customfield_10003 instruct the API to return a minimal fieldlist and only include that custom field, which for me is Story Points. By default the API will return 50, so bump that to 400 to be safe.
The Ruby code looks like
def getData(api,qs="")
url = "https://energyplus.atlassian.net/rest/api/2/#{api}?#{qs}"
res = open(url,
"Authorization" => "Basic " +
Base64.strict\_encode64(USERNAME:PASSWORD)) {|f|
JSON.parse(f.read)
})
Calling that function I use something along the lines of
result = getData("search", "jql=" + URI::encode(jql + '&fields=customfield\_10003&maxResults=400'))
The final step is to loop through all the results and sum the ‘Story Point’ values
puts "Total: " + res\["issues"\].inject(0){|sum, item| sum + item\["fields"\]\["customfield\_10003"\]}.to\_s
If you are having issues with the SSL cert, try adding
OpenSSL::SSL::VERIFY\_PEER = OpenSSL::SSL::VERIFY\_NONE
Here is my actual script in its undocumented glory: https://gist.github.com/2919437
If you think you can improve it, drop me a note - I’m hiring ;)