|  | = 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/ 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/", | 
|  | "filename": "delete-project.jar", | 
|  | "api_version": "2.9.3-SNAPSHOT", | 
|  | "version": "2.9-SNAPSHOT" | 
|  | } | 
|  | } | 
|  | ---- | 
|  |  | 
|  | [[plugin-options]] | 
|  | ==== Plugin Options | 
|  | All(a):: | 
|  | List all plugins including those that are disabled. | 
|  |  | 
|  | .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/", | 
|  | "filename": "delete-project.jar", | 
|  | "version": "2.9-SNAPSHOT" | 
|  | }, | 
|  | "reviewers-by-blame": { | 
|  | "id": "reviewers-by-blame", | 
|  | "index_url": "plugins/reviewers-by-blame/", | 
|  | "filename": "reviewers-by-blame.jar", | 
|  | "version": "2.9-SNAPSHOT", | 
|  | "disabled": true | 
|  | } | 
|  | } | 
|  | ---- | 
|  |  | 
|  | Limit(n):: | 
|  | Limit the number of plugins to be included in the results. | 
|  | + | 
|  | Query the first plugin in the plugin list: | 
|  | + | 
|  | .Request | 
|  | ---- | 
|  | GET /plugins/?n=1 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/", | 
|  | "filename": "delete-project.jar", | 
|  | "version": "2.9-SNAPSHOT" | 
|  | } | 
|  | } | 
|  | ---- | 
|  |  | 
|  | Prefix(p):: | 
|  | Limit the results to those plugins that start with the specified | 
|  | prefix. | 
|  | + | 
|  | The match is case sensitive. May not be used together with `m` or `r`. | 
|  | + | 
|  | List all plugins that start with `delete`: | 
|  | + | 
|  | .Request | 
|  | ---- | 
|  | GET /plugins/?p=delete 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/", | 
|  | "filename": "delete-project.jar", | 
|  | "version": "2.9-SNAPSHOT" | 
|  | } | 
|  | } | 
|  | ---- | 
|  | + | 
|  | E.g. this feature can be used by suggestion client UI's to limit results. | 
|  |  | 
|  | Regex(r):: | 
|  | Limit the results to those plugins that match the specified regex. | 
|  | + | 
|  | Boundary matchers '^' and '$' are implicit. For example: the regex 'test.*' will | 
|  | match any plugins that start with 'test' and regex '.*test' will match any | 
|  | project that end with 'test'. | 
|  | + | 
|  | The match is case sensitive. May not be used together with `m` or `p`. | 
|  | + | 
|  | List all plugins that match regex `some.*plugin`: | 
|  | + | 
|  | .Request | 
|  | ---- | 
|  | GET /plugins/?r=some.*plugin HTTP/1.0 | 
|  | ---- | 
|  | + | 
|  | .Response | 
|  | ---- | 
|  | HTTP/1.1 200 OK | 
|  | Content-Disposition: attachment | 
|  | Content-Type: application/json; charset=UTF-8 | 
|  |  | 
|  | )]}' | 
|  | { | 
|  | "some-plugin": { | 
|  | "id": "some-plugin", | 
|  | "index_url": "plugins/some-plugin/", | 
|  | "filename": "some-plugin.jar", | 
|  | "version": "2.9-SNAPSHOT" | 
|  | }, | 
|  | "some-other-plugin": { | 
|  | "id": "some-other-plugin", | 
|  | "index_url": "plugins/some-other-plugin/", | 
|  | "filename": "some-other-plugin.jar", | 
|  | "version": "2.9-SNAPSHOT" | 
|  | } | 
|  | } | 
|  |  | 
|  | ---- | 
|  |  | 
|  | Skip(S):: | 
|  | Skip the given number of plugins from the beginning of the list. | 
|  | + | 
|  | Query the second plugin in the plugin list: | 
|  | + | 
|  | .Request | 
|  | ---- | 
|  | GET /plugins/?all&n=1&S=1 HTTP/1.0 | 
|  | ---- | 
|  | + | 
|  | .Response | 
|  | ---- | 
|  | HTTP/1.1 200 OK | 
|  | Content-Disposition: attachment | 
|  | Content-Type: application/json; charset=UTF-8 | 
|  |  | 
|  | )]}' | 
|  | { | 
|  | "reviewers-by-blame": { | 
|  | "id": "reviewers-by-blame", | 
|  | "index_url": "plugins/reviewers-by-blame/", | 
|  | "filename": "reviewers-by-blame.jar", | 
|  | "version": "2.9-SNAPSHOT", | 
|  | "disabled": true | 
|  | } | 
|  | } | 
|  | ---- | 
|  |  | 
|  | Substring(m):: | 
|  | Limit the results to those plugins that match the specified substring. | 
|  | + | 
|  | The match is case insensitive. May not be used together with `r` or `p`. | 
|  | + | 
|  | List all plugins that match substring `project`: | 
|  | + | 
|  | .Request | 
|  | ---- | 
|  | GET /plugins/?m=project 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/", | 
|  | "filename": "delete-project.jar", | 
|  | "version": "2.9-SNAPSHOT" | 
|  | } | 
|  | } | 
|  | ---- | 
|  |  | 
|  | [[install-plugin]] | 
|  | === Install Plugin | 
|  | -- | 
|  | 'PUT /plugins/link:#plugin-id[\{plugin-id\}].jar' | 
|  | -- | 
|  |  | 
|  | 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.jar 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 --user admin:TNNuLkWsIV8w -X PUT -H "Content-Type:application/octet-stream" --data-binary @delete-project.jar 'http://gerrit:8080/a/plugins/delete-project.jar' | 
|  | ---- | 
|  |  | 
|  | 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 | 
|  | Content-Length: 150 | 
|  |  | 
|  | )]}' | 
|  | { | 
|  | "id": "delete-project", | 
|  | "version": "v2.16-221-g35bb8bbac4", | 
|  | "index_url": "plugins/delete-project/", | 
|  | "filename": "delete-project.jar" | 
|  | } | 
|  | ---- | 
|  |  | 
|  | 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 | 
|  | } | 
|  | ---- | 
|  |  | 
|  | Disabling of a link:config-gerrit.html#plugins.mandatory[mandatory plugin] | 
|  | is rejected: | 
|  |  | 
|  | .Request | 
|  | ---- | 
|  | DELETE /plugins/replication HTTP/1.0 | 
|  | ---- | 
|  |  | 
|  | .Response | 
|  | ---- | 
|  | HTTP/1.1 405 Method Not Allowed | 
|  | Content-Disposition: attachment | 
|  | Content-Type: application/json; charset=UTF-8 | 
|  |  | 
|  | )]}' | 
|  | Plugin replication is mandatory | 
|  | ---- | 
|  |  | 
|  | [[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. | 
|  | |`api_version`|optional|The version of the Gerrit Api used by the plugin. | 
|  | |`index_url`  |optional|URL of the plugin's default page. | 
|  | |`filename`   |optional|The plugin's filename. | 
|  | |`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 | 
|  | --------- |