gerrit/Documentation/rest-api-plugins.txt
David Pursehouse 56bf1cb803 Make Content-Type examples consistent with actual server output
Change-Id: I32d9d66d894d9dbb9cb8b7748b8466c8b1c98f22
2015-01-06 06:54:12 +00:00

276 lines
5.6 KiB
Plaintext

= Gerrit Code Review - /plugins/ REST API
This page describes the plugin related REST endpoints.
Please also take note of the general information on the
link:rest-api.html[REST API].
[[plugin-endpoints]]
== Plugin Endpoints
Gerrit REST endpoints for installed plugins are available under
'/plugins/link:#plugin-id[\{plugin-id\}]/gerrit~<endpoint-id>'.
The `gerrit~` prefix ensures that the Gerrit REST endpoints for plugins
do not clash with any REST endpoint that a plugin may offer under its
namespace.
[[list-plugins]]
=== List Plugins
--
'GET /plugins/'
--
Lists the plugins installed on the Gerrit server. Only the enabled
plugins are returned unless the `all` option is specified.
To be allowed to see the installed plugins, a user must be a member of
a group that is granted the 'View Plugins' capability or the
'Administrate Server' capability.
As result a map is returned that maps the plugin IDs to
link:#plugin-info[PluginInfo] entries. The entries in the map are sorted
by plugin ID.
.Request
----
GET /plugins/?all HTTP/1.0
----
.Response
----
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"delete-project": {
"id": "delete-project",
"index_url": "plugins/delete-project/",
"version": "2.9-SNAPSHOT"
},
"reviewers-by-blame": {
"id": "reviewers-by-blame",
"index_url": "plugins/reviewers-by-blame/",
"version": "2.9-SNAPSHOT",
"disabled": true
}
}
----
[[install-plugin]]
=== Install Plugin
--
'PUT /plugins/link:#plugin-id[\{plugin-id\}]'
--
Installs a new plugin on the Gerrit server. If a plugin with the
specified name already exists it is overwritten. Note: if the plugin
provides its own name in the MANIFEST file, then the plugin name from
the MANIFEST file has precedence over the \{plugin-id\} above.
The plugin jar can either be sent as binary data in the request body
or a URL to the plugin jar must be provided in the request body inside
a link:#plugin-input[PluginInput] entity.
.Request
----
PUT /plugins/delete-project HTTP/1.0
Content-Type: application/json; charset=UTF-8
{
"url": "file:///gerrit/plugins/delete-project/delete-project-2.8.jar"
}
----
To provide the plugin jar as binary data in the request body the
following curl command can be used:
----
curl --digest --user admin:TNNuLkWsIV8w -X PUT --data-binary @delete-project-2.8.jar 'http://gerrit:8080/a/plugins/delete-project'
----
As response a link:#plugin-info[PluginInfo] entity is returned that
describes the plugin.
.Response
----
HTTP/1.1 201 Created
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"id": "delete-project",
"version": "2.8"
}
----
If an existing plugin was overwritten the response is "`200 OK`".
[[get-plugin-status]]
=== Get Plugin Status
--
'GET /plugins/link:#plugin-id[\{plugin-id\}]/gerrit~status'
--
Retrieves the status of a plugin on the Gerrit server.
.Request
----
GET /plugins/delete-project/gerrit~status HTTP/1.0
----
As response a link:#plugin-info[PluginInfo] entity is returned that
describes the plugin.
.Response
----
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"id": "delete-project",
"version": "2.8"
}
----
[[enable-plugin]]
=== Enable Plugin
--
'POST /plugins/link:#plugin-id[\{plugin-id\}]/gerrit~enable'
--
Enables a plugin on the Gerrit server.
.Request
----
POST /plugins/delete-project/gerrit~enable HTTP/1.0
----
As response a link:#plugin-info[PluginInfo] entity is returned that
describes the plugin.
.Response
----
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"id": "delete-project",
"version": "2.8"
}
----
[[disable-plugin]]
=== Disable Plugin
--
'POST /plugins/link:#plugin-id[\{plugin-id\}]/gerrit~disable'
--
OR
--
'DELETE /plugins/link:#plugin-id[\{plugin-id\}]'
--
Disables a plugin on the Gerrit server.
.Request
----
POST /plugins/delete-project/gerrit~disable HTTP/1.0
----
As response a link:#plugin-info[PluginInfo] entity is returned that
describes the plugin.
.Response
----
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"id": "delete-project",
"version": "2.8",
"disabled": true
}
----
[[reload-plugin]]
=== Reload Plugin
--
'POST /plugins/link:#plugin-id[\{plugin-id\}]/gerrit~reload'
--
Reloads a plugin on the Gerrit server.
.Request
----
POST /plugins/delete-project/gerrit~reload HTTP/1.0
----
As response a link:#plugin-info[PluginInfo] entity is returned that
describes the plugin.
.Response
----
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"id": "delete-project",
"version": "2.8",
"disabled": true
}
----
[[ids]]
== IDs
[[plugin-id]]
=== \{plugin-id\}
The ID of the plugin.
[[json-entities]]
== JSON Entities
[[plugin-info]]
=== PluginInfo
The `PluginInfo` entity describes a plugin.
[options="header",cols="1,^2,4"]
|=======================
|Field Name ||Description
|`id` ||The ID of the plugin.
|`version` ||The version of the plugin.
|`index_url`|optional|URL of the plugin's default page.
|`disabled` |not set if `false`|Whether the plugin is disabled.
|=======================
[[plugin-input]]
=== PluginInput
The `PluginInput` entity describes a plugin that should be installed.
[options="header",cols="1,6"]
|======================
|Field Name|Description
|`url` |URL to the plugin jar.
|======================
GERRIT
------
Part of link:index.html[Gerrit Code Review]
SEARCHBOX
---------