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
~~~~~~~~~~~~
[verse]
'GET /plugins/'

Lists the plugins installed on the Gerrit server. Only the enabled
plugins are returned unless the `all` option is specified.

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": {
      "kind": "gerritcodereview#plugin",
      "id": "delete-project",
      "version": "2.8-SNAPSHOT"
    },
    "reviewers-by-blame": {
      "kind": "gerritcodereview#plugin",
      "id": "reviewers-by-blame",
      "version": "2.8-SNAPSHOT",
      "disabled": true
    }
  }
----

[[install-plugin]]
Install Plugin
~~~~~~~~~~~~~~
[verse]
'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

  )]}'
  {
    "kind": "gerritcodereview#plugin",
    "id": "delete-project",
    "version": "2.8"
  }
----

If an existing plugin was overwritten the response is "`200 OK`".

[[get-plugin-status]]
Get Plugin Status
~~~~~~~~~~~~~~~~~
[verse]
'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

  )]}'
  {
    "kind": "gerritcodereview#plugin",
    "id": "delete-project",
    "version": "2.8"
  }
----

[[enable-plugin]]
Enable Plugin
~~~~~~~~~~~~~
[verse]
'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

  )]}'
  {
    "kind": "gerritcodereview#plugin",
    "id": "delete-project",
    "version": "2.8"
  }
----

[[disable-plugin]]
Disable Plugin
~~~~~~~~~~~~~~
[verse]
'POST /plugins/link:#plugin-id[\{plugin-id\}]/gerrit~disable'

OR

[verse]
'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

  )]}'
  {
    "kind": "gerritcodereview#plugin",
    "id": "delete-project",
    "version": "2.8",
    "disabled": true
  }
----

[[reload-plugin]]
Reload Plugin
~~~~~~~~~~~~~
[verse]
'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

  )]}'
  {
    "kind": "gerritcodereview#plugin",
    "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",width="50%",cols="1,^2,4"]
|=======================
|Field Name||Description
|`kind`    ||`gerritcodereview#plugin`
|`id`      ||The ID of the plugin.
|`version` ||The version of the plugin.
|`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",width="50%",cols="1,6"]
|======================
|Field Name|Description
|`url`     |URL to the plugin jar.
|======================


GERRIT
------
Part of link:index.html[Gerrit Code Review]
