Definitions of data types used by the REST API. |
Contains basic information about a review.
Sample XML:
<reviewData>
<allowReviewersToJoin>false</allowReviewersToJoin>
<author>
<displayName>Matt Quail</displayName>
<userName>matt</userName>
</author>
<createDate>2008-08-25T12:38:14.603+1000</createDate>
<creator>
<displayName>Matt Quail</displayName>
<userName>matt</userName>
</creator>
<description>Review things and stuff</description>
<metricsVersion>1</metricsVersion>
<moderator>
<displayName>Matt Quail</displayName>
<userName>matt</userName>
</moderator>
<name>Test review 1</name><permaId>
<id>CR-1</id></permaId>
<projectKey>CR</projectKey>
<state>Review</state>
</reviewData>
|
Sample JSON:
{"reviewData": {
"allowReviewersToJoin":false,
"author":{"displayName":"Matt Quail","userName":"matt"},
"createDate":"2008-10-27T09:50:05.064+1100",
"creator":{"displayName":"Matt Quail","userName":"matt"},
"moderator":{"displayName":"Matt Quail","userName":"matt"},
"description":"Review things and stuff",
"metricsVersion":1,
"name":"Test review 1",
"permaId":{"id":"CR-3"},
"projectKey":"CR",
"state":"Draft"
}}
|
Note that the reviewItems element is empty when multiple reviews are retrieved via REST. To include the reviewItems in a detailedReviewData structure you must retrieve a single review via the URL /rest-service/reviews-v1/<review id>/details.
Sample XML:
<detailedReviewData> <allowReviewersToJoin>false</allowReviewersToJoin> <author> <displayName>Matt Quail</displayName> <userName>matt</userName> </author> <createDate>2008-09-16T10:50:26.862+1000</createDate> <creator> <displayName>Matt Quail</displayName> <userName>matt</userName> </creator> <description/> <metricsVersion>1</metricsVersion> <moderator> <displayName>Matt Quail</displayName> <userName>matt</userName> </moderator> <name/> <permaId> <id>CR-1</id> </permaId> <projectKey>CR</projectKey> <state>Draft</state> <actions> <actionData> <name>action:abandonReview</name> </actionData> <actionData> <name>action:closeReview</name> </actionData> <actionData> <name>action:submitReview</name> </actionData> <actionData> <name>action:reopenReview</name> </actionData> <actionData> <name>action:summarizeReview</name> </actionData> <actionData> <name>action:rejectReview</name> </actionData> <actionData> <name>action:deleteReview</name> </actionData> <actionData> <name>action:approveReview</name> </actionData> <actionData> <name>action:modifyReviewFiles</name> </actionData> <actionData> <name>action:viewReview</name> </actionData> <actionData> <name>action:commentOnReview</name> </actionData> <actionData> <name>action:recoverReview</name> </actionData> <actionData> <name>action:createReview</name> </actionData> </actions> <generalComments/> <reviewItems> <reviewItem> <permId> <id>CFR-1</id> </permId> <authorName>admin</authorName> <commitDate>2008-08-27T10:19:17.000+1000</commitDate> <commitType>Modified</commitType> <fileType>File</fileType> <fromPath>ds/Home</fromPath> <fromRevision>1</fromRevision> <repositoryName>localhost</repositoryName> <toPath>ds/Home</toPath> <toRevision>2</toRevision> </reviewItem> <reviewItem> <permId> <id>CFR-2</id> </permId> <authorName>tomd</authorName> <commitDate>2008-09-09T16:42:28.786+1000</commitDate> <commitType>Added</commitType> <fileType>File</fileType> <fromPath/> <fromRevision/> <repositoryName>mylocalsvn</repositoryName> <toPath>aaa/bbb/qqq.txt</toPath> <toRevision>3</toRevision> </reviewItem> </reviewItems> <reviewers/> <transitions> <transitionData> <name>action:approveReview</name> </transitionData> <transitionData> <name>action:abandonReview</name> </transitionData> </transitions> <versionedComments/> </detailedReviewData> |
Sample JSON:
{"detailedReviewData": {
"allowReviewersToJoin":false,
"author":{"displayName":"joe lowercase","userName":"joe"},
"createDate":"2008-10-27T09:50:05.064+1100",
"creator":{"displayName":"joe lowercase","userName":"joe"},
"description":"",
"metricsVersion":1,
"moderator":{"displayName":"joe lowercase","userName":"joe"},
"name":"readme ",
"permaId":{"id":"CR-3"},
"projectKey":"CR",
"state":"Draft",
"actions": {
"actionData":[{"name":"action:rejectReview"},{"name":"action:closeReview"},
{"name":"action:modifyReviewFiles"},{"name":"action:abandonReview"},
{"name":"action:commentOnReview"},{"name":"action:reopenReview"},
{"name":"action:createReview"},{"name":"action:recoverReview"},
{"name":"action:deleteReview"},{"name":"action:approveReview"},
{"name":"action:viewReview"},{"name":"action:submitReview"},
{"name":"action:summarizeReview"}]
},
"generalComments":"",
"reviewItems": {"reviewItem":[
{"permId":{"id":"CFR-1"},
"authorName":"evzijst",
"commitDate":"2008-10-14T15:25:08.755+1000",
"commitType":"Modified",
"fileType":"File",
"fromPath":"test2\/trunk\/src\/main\/java\/com\/atlassian\/Test.java",
"fromRevision":9,
"repositoryName":"Local",
"toPath":"test2\/trunk\/src\/main\/java\/com\/atlassian\/Test.java",
"toRevision":10},
{"permId":{"id":"CFR-2"},
"authorName":"evzijst",
"commitDate":"2008-10-14T15:25:08.755+1000",
"commitType":"Added",
"fileType":"Directory",
"fromPath":"",
"fromRevision":"",
"repositoryName":"Local",
"toPath":"test2\/trunk\/src\/test\/java\/com",
"toRevision":10}]
},
"reviewers":"",
"transitions":{"transitionData":[
{"name":"action:approveReview"},
{"name":"action:abandonReview"}]
},
"versionedComments":""}} |
|
When a request cannot be serviced properly due to either a server-side problem, or invalid client input, Crucible will return an error document, combined with an HTTP status code other than 200. This XML document contains a number of elements that describe the problem. Note that the HTTP status code distinguishes between client- and server-side causes.
Below is the error that is returned when asking for a non existent resource. The status code for this response is 404 "Document Not Found". Other possible status codes for error responses include 400 "Bad Request" (for example when a request contains an invalid POST body) and 403 "Forbidden" (when accessing a resource without permission).
Sample XML:
<error> <code>NotFound</code> <message>Unknown metrics version: 45</message> <stacktrace>com.atlassian.crucible.spi.services.NotFoundException: Unknown metrics version: 45 at com.atlassian.crucible.spi.impl.DefaultReviewService.getMetrics(DefaultReviewService.java:689) at com.atlassian.crucible.spi.rpc.RestReviewService$22.doGet(RestReviewService.java:645) at com.atlassian.crucible.spi.rpc.RestReviewService$22.doGet(RestReviewService.java:644) at com.atlassian.crucible.spi.rpc.ConditionalGet.doConditionalGet(ConditionalGet.java:46) at com.atlassian.crucible.spi.rpc.RestReviewService.getMetrics(RestReviewService.java:643) ... </stacktrace> </error> |
Sample JSON:
{
"code":"NotFound",
"message":"No review exists with permId 'CR-333'",
"stacktrace":"com.atlassian.crucible.spi.services.NotFoundException: Unknown metrics version: 45
at com.atlassian.crucible.spi.impl.DefaultReviewService.getMetrics(DefaultReviewService.java:689)
at com.atlassian.crucible.spi.rpc.RestReviewService$22.doGet(RestReviewService.java:645)
at com.atlassian.crucible.spi.rpc.RestReviewService$22.doGet(RestReviewService.java:644)
at com.atlassian.crucible.spi.rpc.ConditionalGet.doConditionalGet(ConditionalGet.java:46)
at com.atlassian.crucible.spi.rpc.RestReviewService.getMetrics(RestReviewService.java:643)
..."
}
|