= Gerrit Code Review - /config/ REST API

This page describes the config related REST endpoints.
Please also take note of the general information on the
link:rest-api.html[REST API].

[[config-endpoints]]
Config Endpoints
---------------

[[get-version]]
=== Get Version
--
'GET /config/server/version'
--

Returns the version of the Gerrit server.

.Request
----
  GET /config/server/version HTTP/1.0
----

.Response
----
  HTTP/1.1 200 OK
  Content-Type: application/json;charset=UTF-8

  )]}'
  "2.7"
----

[[list-capabilities]]
=== List Capabilities
--
'GET /config/server/capabilities'
--

Lists the capabilities that are available in the system. There are two
kinds of capabilities: core and plugin-owned capabilities.

As result a map of link:#capability-info[CapabilityInfo] entities is
returned.

The entries in the map are sorted by capability ID.

.Request
----
  GET /config/server/capabilities/ HTTP/1.0
----

.Response
----
  HTTP/1.1 200 OK
  Content-Type: application/json;charset=UTF-8

  )]}'
  {
    "accessDatabase": {
      "kind": "gerritcodereview#capability",
      "id": "accessDatabase",
      "name": "Access Database"
    },
    "administrateServer": {
      "kind": "gerritcodereview#capability",
      "id": "administrateServer",
      "name": "Administrate Server"
    },
    "createAccount": {
      "kind": "gerritcodereview#capability",
      "id": "createAccount",
      "name": "Create Account"
    },
    "createGroup": {
      "kind": "gerritcodereview#capability",
      "id": "createGroup",
      "name": "Create Group"
    },
    "createProject": {
      "kind": "gerritcodereview#capability",
      "id": "createProject",
      "name": "Create Project"
    },
    "emailReviewers": {
      "kind": "gerritcodereview#capability",
      "id": "emailReviewers",
      "name": "Email Reviewers"
    },
    "flushCaches": {
      "kind": "gerritcodereview#capability",
      "id": "flushCaches",
      "name": "Flush Caches"
    },
    "killTask": {
      "kind": "gerritcodereview#capability",
      "id": "killTask",
      "name": "Kill Task"
    },
    "priority": {
      "kind": "gerritcodereview#capability",
      "id": "priority",
      "name": "Priority"
    },
    "queryLimit": {
      "kind": "gerritcodereview#capability",
      "id": "queryLimit",
      "name": "Query Limit"
    },
    "runGC": {
      "kind": "gerritcodereview#capability",
      "id": "runGC",
      "name": "Run Garbage Collection"
    },
    "streamEvents": {
      "kind": "gerritcodereview#capability",
      "id": "streamEvents",
      "name": "Stream Events"
    },
    "viewCaches": {
      "kind": "gerritcodereview#capability",
      "id": "viewCaches",
      "name": "View Caches"
    },
    "viewConnections": {
      "kind": "gerritcodereview#capability",
      "id": "viewConnections",
      "name": "View Connections"
    },
    "viewPlugins": {
      "kind": "gerritcodereview#capability",
      "id": "viewPlugins",
      "name": "View Plugins"
    },
    "viewQueue": {
      "kind": "gerritcodereview#capability",
      "id": "viewQueue",
      "name": "View Queue"
    }
  }
----

[[get-top-menus]]
=== Get Top Menus
--
'GET /config/server/top-menus'
--

Returns the list of additional top menu entries.

.Request
----
  GET /config/server/top-menus HTTP/1.0
----

As response a list of the additional top menu entries as
link:#top-menu-entry-info[TopMenuEntryInfo] entities is returned.

.Response
----
  HTTP/1.1 200 OK
  Content-Type: application/json;charset=UTF-8

  )]}'
  [
    {
      "name": "Top Menu Entry",
      "items": [
        {
          "url": "http://gerrit.googlecode.com/",
          "name": "Gerrit",
          "target": "_blank"
        }
      ]
    }
  ]
----


[[json-entities]]
== JSON Entities

[[capability-info]]
=== CapabilityInfo
The `CapabilityInfo` entity contains information about a capability.

[options="header",width="50%",cols="1,6"]
|=================================
|Field Name           |Description
|`kind`               |`gerritcodereview#capability`
|`id`                 |capability ID
|`name`               |capability name
|=================================

[[top-menu-entry-info]]
=== TopMenuEntryInfo
The `TopMenuEntryInfo` entity contains information about a top menu
entry.

[options="header",width="50%",cols="1,6"]
|=================================
|Field Name           |Description
|`name`               |Name of the top menu entry.
|`items`              |List of link:#top-menu-item-info[menu items].
|=================================

[[top-menu-item-info]]
=== TopMenuItemInfo
The `TopMenuItemInfo` entity contains information about a menu item in
a top menu entry.

[options="header",width="50%",cols="1,^1,5"]
|========================
|Field Name ||Description
|`url`      ||The URL of the menu item link.
|`name`     ||The name of the menu item.
|`target`   ||Target attribute of the menu item link.
|`id`       |optional|The `id` attribute of the menu item link.
|========================

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

SEARCHBOX
---------
