Jenkins REST API - using tree to reference specific item in JSON array
The API documentation has a hint:
A newer alternative is the tree query parameter. [snip] you need only know what elements you are looking for, rather than what you are not looking for (which is anyway an open-ended list when plugins can contribute API elements). The value should be a list of property names to include, with subproperties inside square braces.
For a simple list, get the whole subtree with:
http://jenkins/job/myjob/../api/json?tree=artifacts[*]
or list specific properties within the braces.
For changeSet
, use
http://jenkins/job/myjob/../api/json?tree=changeSet[*[*]]
to retrieve everything.
Use nested square braces for specific sub-subproperties, e.g.:
http://jenkins/job/myjob/../api/json?tree=changeSet[items[revision]]
The tree documentation says that it's intended for cases where the caller doesn't know what properties to retrieve.
mckeejm
Updated on April 04, 2020Comments
-
mckeejm about 4 years
I am able to use the Jenkins API to get information about my build via the url
http://localhost:8080/job/myjob/149/api/json
I want to be able to query the changeSet node using the tree query string parameter. I can successfully query non-indexed nodes like "duration" via
http://localhost:8080/job/myjob/149/api/json?tree=duration
How do I query indexed nodes like changeSet? I can't seem to find any doc anywhere.
{ "actions": [ { "causes": [ { "shortDescription": "Started by an SCM change" } ] }, {}, {}, {} ], "artifacts": [], "building": false, "description": null, "duration": 80326, "estimatedDuration": 68013, "executor": null, "fullDisplayName": "my project #149", "id": "2013-06-14_14-31-06", "keepLog": false, "number": 149, "result": "SUCCESS", "timestamp": 1371234666000, "url": "http://localhost:8080/job/my project/149/", "builtOn": "", "changeSet": { "items": [ { "affectedPaths": [ "SearchViewController.m", "Sample.strings" ], "author": { "absoluteUrl": "http://localhost:8080/user/my user", "fullName": "My User" }, "commitId": "9032", "timestamp": 1371234304048, "date": "2013-06-14T18:25:04.048031Z", "msg": "Author:my_author Description: changes Id: B-186199 Reviewer:reviewer_name", "paths": [ { "editType": "edit", "file": "/branches/project_name/iOS/_MainLine/project_name/SearchViewController.m" }, ], "revision": 9032, "user": "user_name" } ], "kind": "svn", "revisions": [ { "module": "repo_url", "revision": 8953 }, { "module": "repo_url", "revision": 9032 } ] }, "culprits": [ { "absoluteUrl": "http://localhost:8080/user/username", "fullName": "username" } ] }
-
mckeejm almost 11 yearsThanks Dave... I fiddled around with it and eventually got there...although the [*] is quite useful and brand new to me. Which doc did you load up to find this though? I kept searching within the doc that is referenced from the Jenkins dashboard and couldn't seem to find it... but obviously it could have been easily overlooked.
-
MarkHu about 8 yearsNote that
curl
requires backslash-escaped square-brackets inside double-quotes. Example:$ curl -s -k "https://$jenkins/pluginManager/api/json?pretty=1&tree=plugins\[shortName,longName,version\]"