| = 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 | |
| --------- |