James Moger
2014-03-05 e55841f38e3b8c1c88acad20944a15e49a2e5504
src/site/rpc.mkd
@@ -21,15 +21,6 @@
**NOTE:**  
Gitblit Manager stores your login credentials **INSECURELY** in homedir/.gitblit/config.
### Eclipse/EGit "Import from Gitblit" Feature (Planning)
One obvious goal of a Gitblit RPC mechanism would be to have an Eclipse/EGit Feature that allows authentication and enumeration of Gitblit repositories from the Eclipse *Import...* menu.  Batch cloning would be supported and delegated to EGit.
This particular project should not be difficult as the only external dependency for `com.gitblit.utils.RpcUtils` is [google-gson](http://google-gson.googlecode.com) which is already a dependency of the EGit/GitHub Mylyn feature.
One proposal from the EGit team is to define a common JSON RPC method for enumeration of repositories which can be implemented by Git hosts.  The EGit team would then implement the UI and the client-side enumeration code.  This idea was raised as part of this [feature request for EGit](https://bugs.eclipse.org/bugs/show_bug.cgi?id=361251).
Currently this project is in the planning stage.
## RSS Query Interface
@@ -58,6 +49,7 @@
## JSON Remote Procedure Call (RPC) Interface
### RPC Protocol Versions
<table class="table">
<tbody>
<tr><th>Release</th><th>Protocol Version</th></tr>
@@ -78,6 +70,7 @@
Use *SET_REPOSITORY_TEAM_PERMISSIONS* instead.
### RPC Request and Response Types
<table class="table">
<tr><th colspan='2'>url parameters</th><th rowspan='2'>required<br/>user<br/>permission</th><th rowspan='2'>protocol<br/>version</th><th colspan='2'>json</th></tr>
<tr><th>req=</th><th>name=</th><th>post body</th><th>response body</th></tr>
@@ -120,6 +113,7 @@
</table>
### RPC/HTTP Response Codes
<table class="table">
<tr><th>code</th><th>name</th><th>description</th></tr>
<tr><td>200</td><td>success</td><td>Gitblit processed the request successfully</td></tr>
@@ -134,7 +128,8 @@
**url**: https://localhost/rpc?req=LIST_REPOSITORIES  
**response body**: Map&lt;String, RepositoryModel&gt; where the map key is the clone url of the repository
<pre>
```json
{
  "https://localhost/git/libraries/xmlapache.git": {
    "name": "libraries/xmlapache.git",
@@ -177,7 +172,7 @@
    "size": "4.8 MB"
  }
}
</pre>
```
### Example: EDIT_REPOSITORY (rename)
@@ -185,7 +180,8 @@
**url**: https://localhost/rpc?req=EDIT_REPOSITORY&name=libraries/xmlapache.git  
**post body**: RepositoryModel
<pre>
```json
{
    "name": "libraries/xmlapache-renamed.git",
    "description": "apache xmlrpc client and server",
@@ -207,12 +203,13 @@
    "skipSummaryMetrics": false,
    "size": "102 KB"
}
</pre>
```
### Example: LIST_USERS
**url**: https://localhost/rpc?req=LIST_USERS  
**response body**: List&lt;UserModel&gt;
<pre>
```json
[
  {
    "username": "admin",
@@ -232,12 +229,13 @@
    ]
  }
]
</pre>
```
### Example: LIST_SETTINGS
**url**: https://localhost/rpc?req=LIST_SETTINGS  
**response body**: ServerSettings
<pre>
```json
{
  "settings": {
      "web.siteName": {
@@ -262,12 +260,13 @@
      }
  }
}
</pre>
```
### Example: LIST_STATUS
**url**: https://localhost/rpc?req=LIST_STATUS  
**response body**: ServerStatus
<pre>
```json
{
  "bootDate": "2011-10-22T12:13:00Z",
  "version": "0.7.0-SNAPSHOT",
@@ -294,4 +293,4 @@
  "heapSize": 1899560960,
  "servletContainer": "jetty/7.4.3.v20110701"
}
</pre>
```