This page describes the ways of accessing the FishEye API.
API mechanisms are REST-ful and XML-RPC.
The XML-RPC API can be accessed from /api/xmlrpc
The REST API can be accessed from /api/rest/
REST return values are always enclosed in a <response>
root element.
Dates are IS0-8601, in the general form YYYY-MM-DDTHH:MM:SS(Z|[+-]HH:MM). The timezone is optional
(GMT is used if omitted). The time component is also optional. The seconds component can contain a fractional part.
For XMLRPC, FishEye returns all dates in GMT using YYYYMMDDTHH:MM:SS. Note that no timezone is used.
FishEye may be configured to require authentication before accessing a repository. Most methods accept an authentication token parameter. To call a method anonymously, use the empty-string for this parameter.
An authentication token can be acquired (and released) using the login() and logout()
methods.
A Python XML-RPC example: xmlrpc_example.py
A Python REST example: rest_example.py
A Java REST example: RestClient.java
The open source FishEye Plugin for JIRA provides an example of querying using the API.
api/rest/loginString login(String username, String password)api/rest/logoutboolean logout(String auth)/api/rest/fisheyeVersionString fisheyeVersion()/api/rest/crucibleVersionString crucibleVersion()api/rest/repositoriesString[] getRepositories(String auth)api/rest/pathsPathInfo[] getPaths(String auth, String rep, String path)api/rest/revisionRevision getRevision(String auth, String rep, String path, String rev)api/rest/tagsRevisionTags listTagsForRevision(String auth, String rep, String path, String rev)Returns the tags associated with particular revision as an array of strings.
api/rest/pathHistoryPathHistory listPathHistory(String auth, String rep, String path)returns history of a particular path.
api/rest/changesetChangeset getChangeset(String auth, String csid)api/rest/changesetsChangesets listChangesets(String auth, String rep, String path)
Changesets listChangesets(String auth, String rep, String path, Date start)
Changesets listChangesets(String auth, String rep, String path, Date start, Date end)
Lists changes under a given path, optionally between two dates. Returned structure contains a list of changeset ids, from most-recent to least-recent.
To get changes for the whole repository, use a path of "/"
If the start date is not specified, there is no lower bound.
If the end date is not specified, "now" is used.
FishEye has an internal limit of how many changesets it will return from this method (a few thousand). If this limit is exceeded, the return value will be truncated so that it contains the most-recent changesets. This value of this limit is contained in the return value.
api/rest/queryRevisionKey[] query(String auth, String rep, String query)
Row[] query(String auth, String rep, String query)
Execute an EyeQL query. For a "normal" query, returns a list of revision keys that matched to query. If the query contains a "return" clause, then returns a custom Row for each match. The contents of the Row will depend upon the "return" clause.
api/rest/changesetBoundsChangesetBounds getChangesetBounds(String auth, String rep)
ChangesetBounds getChangesetBounds(String auth, String rep, Date start)
ChangesetBounds getChangesetBounds(String auth, String rep, Date start, Date end)
ChangesetBounds getChangesetBounds(String auth, String rep, String path)
ChangesetBounds getChangesetBounds(String auth, String rep, String path, Date start)
ChangesetBounds getChangesetBounds(String auth, String rep, String path, Date start, Date end)
Data types used are the same as defined in XML-RPC.
Some methods return data structures. These map into XML-RPC as expected.
For REST calls, structs are encoded as XML elements of the same name (but all lowercase). Members are encoded as sub-elements, or as attributes as indicated below.
struct RevisionKey {
String path; // (REST: attribute)
String rev; // (REST: attribute)
} struct PathInfo {
String name; // (REST: attribute)
boolean isfile; // (REST: attribute)
boolean isdir; // (REST: attribute)
boolean isHeadDeleted; // (REST: attribute)
}struct Revision {
String path; // (REST: attribute)
String rev; // (REST: attribute)
String author; // (REST: attribute)
Date date; // (REST: attribute)
String state; // one of "changed" "added" or "deleted" (REST: attribute)
int totalLines; // (REST: attribute)
int linesAdded; // (REST: attribute)
int linesRemoved; // (REST: attribute)
String log;
String csid; // optional (REST: attribute)
String ancestor; // optional (REST: attribute)
}struct Changeset {
String csid; // (REST: attribute)
Date date; // (REST: attribute)
String author; // (REST: attribute)
String branch; // (REST: attribute)
boolean sealed; // (REST: attribute)
String log;
RevisionKey[] revisions;
}struct Changesets {
int maxReturn; // (REST: attribute)
String[] csids;
}A list of Changeset ids, most-recent changeset first.
maxReturn indicates the maximum number of changesets FishEye is configured to return from this method.
struct ChangesetBounds {
Changeset first;
Changeset last;
}struct Row {
...
}A custom structure, depending on the given EyeQL statement. Each member of Row is typed.