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 /fecru/api/xmlrpc
The REST API can be accessed from /fecru/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/login
String login(String username, String password)
api/rest/logout
boolean logout(String auth)
/api/rest/fisheyeVersion
String fisheyeVersion()
/api/rest/crucibleVersion
String crucibleVersion()
api/rest/repositories
String[] getRepositories(String auth)
api/rest/paths
PathInfo[] getPaths(String auth, String rep, String path)
api/rest/revision
Revision getRevision(String auth, String rep, String path, String rev)
api/rest/tags
RevisionTags listTagsForRevision(String auth, String rep, String path, String rev)
Returns the tags associated with particular revision as an array of strings.
api/rest/pathHistory
PathHistory listPathHistory(String auth, String rep, String path)
returns history of a particular path.
api/rest/changeset
Changeset getChangeset(String auth, String csid)
api/rest/changesets
Changesets 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)
Changesets listChangesets(String auth, String rep, String path, Date start, Date end, Integer maxReturn)
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.
The maxReturn clause limits the number of changesets returned by this method. If no limit is specified, FishEye will use its own internal limit (a few thousand). If this limit is exceeded, the return value will be truncated so that it contains the most-recent changesets. The value of this limit is contained in the returned data structure.
api/rest/query
RevisionKey[] 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/changesetBounds
ChangesetBounds 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.