View Source

Since QuickBuild 4.0, you can retrieve changes via RESTful APIs. The base URI for changes RESTful APIs is:
{code}
/rest/changes
{code}

h3. List all supported APIs
||URI||Response Type||Params||
|/rest/changes/help|_text/html_| |


h3. Get the data version of changes
||URI||Response Type||Params||
|/rest/changes/version|_text/plain_| |

h3. Get the commit stats
||URI||Response Type||Params||
|/rest/changes/stats/\{configuration_id}|_application/xml_| * *configuration_id*
Id of the configuration.
* *build_id*
The build id you want.
* *from_build*
Specify the from build when finding changes in a build range.
* *to_build*
Specify the to build when finding changes in a build range.
* *from_date*
Specify the from date when finding changes in a build range.
* *to_date*
Specify the to date when finding changes in a build range.
* *date_pattern*
Specify the date pattern when query by a date range, by default, the pattern is yyyyMMdd.
* *repository*
Get the changes only in a specific repository.
* *committer*
Get the changes only committed by the specified committer|

*Query stats of a specific build*
{code}
http://quickbuild:8810/changes/stats/25?build_id=102
{code}

the response looks like:
{code}
<stats commits="5" modifications="7" added="2" modified="3" deleted="2"/>
{code}

*Query stats for a build range*
{code}
http://quickbuild:8810/changes/stats/25?from_build=100&to_build=120
{code}

*Query stats for a date range*
{code}
http://quickbuild:8810/changes/stats/25?from_date=20110501&to_date=20110601
{code}
by default, the date pattern is _yyyyMMdd_, you can also specify the date pattern by adding parameter *date_pattern*, the valid date pattern can be found [here|http://download.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html], for example:
{code}
http://quickbuild:8810/changes/stats/25?from_date=2011-05-01&to_date=2011-06-01&date_pattern=yyyy-MM-dd
{code}

*Query stats of a specific repository or committer*
By adding _repository_ or _committer_ parameter, you can get the stats of a specific repository or committer, for example:
{code}
http://quickbuild:8810/changes/stats/25?build_id=102&repository=mysvn
{code}

this will get the stats data for repository mysvn.

h3. Retrieve the commits
||URI||Response Type||Params||
|/rest/changes/commits/\{configuration_id}|_application/xml_|* *configuration_id*
The id of configuration.
* *build_id*
The id of a specific build.
* *from_build*
Specify the from build when finding changes in a build range, must be specified with to_build.
* *to_build*
Specify the to build when finding changes in a build range, must be specified with from_build.
* *date_pattern*
Specify the date pattern when query by a date range, by default, the pattern is yyyyMMdd.
* *from_date*
Specify the from date when finding changes in a build range.
* *to_date*
Specify the to date when finding changes in a build range.
* *repository*
Get the changes only in a specific repository.
* *committer*
Get the changes only committed by the specified committer.
* *offset*
Specify the first record when iterate the records, by default, the offset is 0.
* *limit*
Specify the number of total records you want to retrieve, by default, the limit is 50.
* *asc*
Boolean type, specify the order by commit date ascendent or descendent, by default, it is false.|

*Query the commits of a build*
{code}
http://quickbuild:8810/rest/changes/commits/19?build_id=102&offset=10&limit=20
{code}

the response looks like:
{code}
<report name="changesets" version="0.0" locale="en_US">
<row ID="10" buildId="320" changeId="f090cd04725c5551f8a439fe0a53591193ea79c3" repository="hg" commitDate="2011-05-31T03:45:55.000+08:00" modifications="1" committer="steve" userId="2" added="1" modified="0" deleted="0">
<comment>
<![CDATA[
some comments
]]>
</comment>
<additional>
<![CDATA[ 13 ]]>
</additional>
</row>
<row ID="11" buildId="320" changeId="f090cd04725c5551f8a439fe0a53591193ea79c3" repository="hg" commitDate="2011-05-31T05:45:55.000+08:00" modifications="1" committer="robin" userId="2" added="1" modified="0" deleted="0">
<comment>
<![CDATA[
some comments
]]>
</comment>
<additional>
<![CDATA[ 14 ]]>
</additional>
</row>

... ...
</report>
{code}

the format of commit date here is using [ISO8601 standard|http://en.wikipedia.org/wiki/ISO_8601]. Element additional stores some additional information of the commits. For mercurial (hg) or bazaar, the additional stores the revision no.

*Query the commits of a build range*
{code}
http://quickbuild:8810/rest/changes/commits/19?from_build=10&to_build=20
{code}

*Query the commits of a date range*

{code}
http://quickbuild:8810/rest/changes/commits/19?from_date=20110501&to_date=20110601
{code}


*Query stats of a specific repository or committer*
By adding _repository_ or _committer_ parameter, you can get the commits of a specific repository or committer, for example:
{code}
http://quickbuild:8810/changes/stats/25?build_id=102&repository=mysvn
{code}