= Gerrit Code Review - /projects/ REST API

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

[[project-endpoints]]
== Project Endpoints

[[list-projects]]
=== List Projects
--
'GET /projects/'
--

Lists the projects accessible by the caller. This is the same as
using the link:cmd-ls-projects.html[ls-projects] command over SSH,
and accepts the same options as query parameters.

As result a map is returned that maps the project names to
link:#project-info[ProjectInfo] entries. The entries in the map are sorted
by project name.

.Request
----
  GET /projects/?d HTTP/1.0
----

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

  )]}'
  {
    "external/bison": {
      "id": "external%2Fbison",
      "description": "GNU parser generator"
    },
    "external/gcc": {
      "id": "external%2Fgcc"
    },
    "external/openssl": {
      "id": "external%2Fopenssl",
      "description": "encryption\ncrypto routines"
    },
    "test": {
      "id": "test",
      "description": "\u003chtml\u003e is escaped"
    }
  }
----

[[project-options]]
==== Project Options

Branch(b)::
Limit the results to the projects having the specified branch and
include the sha1 of the branch in the results.
+
Get projects that have a 'master' branch:
+
.Request
----
GET /projects/?b=master HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "some-project": {
      "id": "some-project",
      "branches": {
        "master": "c5ed9dfcbf002ca0e432d788dab6ca2387829ca7"
      }
    },
    "some-other-project": {
      "id": "some-other-project",
      "branches": {
        "master": "ef1c270142f9581ecf768f4193fc8f8a81102ec2"
      }
    },
  }
----

Description(d)::
Include project description in the results.
+
Get all the projects with their description:
+
.Request
----
GET /projects/?d HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "some-project": {
      "id": "some-project",
      "description": "Description of some project."
    },
    "some-other-project": {
      "id": "some-other-project",
       "description": "Description of some other project."
      }
    },
  }
----

Limit(n)::
Limit the number of projects to be included in the results.
+
Query the first project in the project list:
+
.Request
----
  GET /projects/?n=1 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "some-project": {
      "id": "some-project"
    }
  }
----


[[suggest-projects]]
Prefix(p)::
Limit the results to those projects that start with the specified
prefix.
+
The match is case sensitive. May not be used together with `m` or `r`.
+
List all projects that start with `platform/`:
+
.Request
----
  GET /projects/?p=platform%2F HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "platform/drivers": {
      "id": "platform%2Fdrivers"
    },
    "platform/tools": {
      "id": "platform%2Ftools"
    }
  }
----
+
E.g. this feature can be used by suggestion client UI's to limit results.

Regex(r)::
Limit the results to those projects that match the specified regex.
+
Boundary matchers '^' and '$' are implicit. For example: the regex 'test.*' will
match any projects 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 projects that match regex `test.*project`:
+
.Request
----
  GET /projects/?r=test.*project HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "test/some-project": {
      "id": "test%2Fsome-project"
    },
    "test/some-other-project": {
      "id": "test%2Fsome-other-project"
    }
  }

----

Skip(S)::
Skip the given number of projects from the beginning of the list.
+
Query the second project in the project list:
+
.Request
----
  GET /projects/?n=1&S=1 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "some-other-project": {
      "id": "some-other-project"
    }
  }
----

Substring(m)::
Limit the results to those projects that match the specified substring.
+
The match is case insensitive. May not be used together with `r` or `p`.
+
List all projects that match substring `test/`:
+
.Request
----
  GET /projects/?m=test%2F HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "test/some-project": {
      "id": "test%2Fsome-project"
    },
    "some-path/test/some-other-project": {
      "id": "some-path%2Ftest%2Fsome-other-project"
    }
  }
----

Tree(t)::
Get projects inheritance in a tree-like format. This option does
not work together with the branch option.
+
Get all the projects with tree option:
+
.Request
----
GET /projects/?t HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "All-Projects" {
      "id": "All-Projects"
    },
    "child-project": {
      "id": "child-project",
      "parent":"parent-project"
    },
    "parent-project": {
      "id": "parent-project",
      "parent":"All-Projects"
    }
  }
----

Type(type)::
Get projects with specified type: ALL, CODE, PERMISSIONS.
+
Get all the projects of type 'PERMISSIONS':
+
.Request
----
GET /projects/?type=PERMISSIONS HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "All-Projects" {
      "id": "All-Projects"
    },
    "some-parent-project": {
      "id": "some-parent-project"
    }
  }
----

[[get-project]]
=== Get Project
--
'GET /projects/link:#project-name[\{project-name\}]'
--

Retrieves a project.

.Request
----
  GET /projects/plugins%2Freplication HTTP/1.0
----

As response a link:#project-info[ProjectInfo] entity is returned that
describes the project.

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

  )]}'
  {
    "id": "plugins%2Freplication",
    "name": "plugins/replication",
    "parent": "Public-Plugins",
    "description": "Copies to other servers using the Git protocol",
    "state": "ACTIVE",
    "labels": {
      "Code-Review": {
        "values": {
          " 0": "No score",
          "+1": "Approved"
        },
        "default_value": 0
      }
    }
  }
----

[[create-project]]
=== Create Project
--
'PUT /projects/link:#project-name[\{project-name\}]'
--

Creates a new project.

In the request body additional data for the project can be provided as
link:#project-input[ProjectInput].

.Request
----
  PUT /projects/MyProject HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "description": "This is a demo project.",
    "submit_type": "CHERRY_PICK",
    "owners": [
      "MyProject-Owners"
    ]
  }
----

As response the link:#project-info[ProjectInfo] entity is returned that
describes the created project.

.Response
----
  HTTP/1.1 201 Created
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "id": "MyProject",
    "name": "MyProject",
    "parent": "All-Projects",
    "description": "This is a demo project.",
    "labels": {
      "Code-Review": {
        "values": {
          " 0": "No score",
          "+1": "Approved"
        },
        "default_value": 0
      }
    }
  }
----

[[get-project-description]]
=== Get Project Description
--
'GET /projects/link:#project-name[\{project-name\}]/description'
--

Retrieves the description of a project.

.Request
----
  GET /projects/plugins%2Freplication/description HTTP/1.0
----

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

  )]}'
  "Copies to other servers using the Git protocol"
----

If the project does not have a description an empty string is returned.

[[set-project-description]]
=== Set Project Description
--
'PUT /projects/link:#project-name[\{project-name\}]/description'
--

Sets the description of a project.

The new project description must be provided in the request body inside
a link:#project-description-input[ProjectDescriptionInput] entity.

.Request
----
  PUT /projects/plugins%2Freplication/description HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "description": "Plugin for Gerrit that handles the replication.",
    "commit_message": "Update the project description"
  }
----

As response the new project description is returned.

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

  )]}'
  "Plugin for Gerrit that handles the replication."
----

If the description was deleted the response is "`204 No Content`".

[[delete-project-description]]
=== Delete Project Description
--
'DELETE /projects/link:#project-name[\{project-name\}]/description'
--

Deletes the description of a project.

The request body does not need to include a
link:#project-description-input[ProjectDescriptionInput] entity if no
commit message is specified.

Please note that some proxies prohibit request bodies for DELETE
requests. In this case, if you want to specify a commit message, use
link:#set-project-description[PUT] to delete the description.

.Request
----
  DELETE /projects/plugins%2Freplication/description HTTP/1.0
----

.Response
----
  HTTP/1.1 204 No Content
----

[[get-project-parent]]
=== Get Project Parent
--
'GET /projects/link:#project-name[\{project-name\}]/parent'
--

Retrieves the name of a project's parent project. For the
`All-Projects` root project an empty string is returned.

.Request
----
  GET /projects/plugins%2Freplication/parent HTTP/1.0
----

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

  )]}'
  "All-Projects"
----

[[set-project-parent]]
=== Set Project Parent
--
'PUT /projects/link:#project-name[\{project-name\}]/parent'
--

Sets the parent project for a project.

The new name of the parent project must be provided in the request body
inside a link:#project-parent-input[ProjectParentInput] entity.

.Request
----
  PUT /projects/plugins%2Freplication/parent HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "parent": "Public-Plugins",
    "commit_message": "Update the project parent"
  }
----

As response the new parent project name is returned.

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

  )]}'
  "Public-Plugins"
----

[[get-head]]
=== Get HEAD
--
'GET /projects/link:#project-name[\{project-name\}]/HEAD'
--

Retrieves for a project the name of the branch to which `HEAD` points.

.Request
----
  GET /projects/plugins%2Freplication/HEAD HTTP/1.0
----

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

  )]}'
  "refs/heads/master"
----

[[set-head]]
=== Set HEAD
--
'PUT /projects/link:#project-name[\{project-name\}]/HEAD'
--

Sets `HEAD` for a project.

The new ref to which `HEAD` should point must be provided in the
request body inside a link:#head-input[HeadInput] entity.

.Request
----
  PUT /projects/plugins%2Freplication/HEAD HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "ref": "refs/heads/stable"
  }
----

As response the new ref to which `HEAD` points is returned.

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

  )]}'
  "refs/heads/stable"
----

[[get-repository-statistics]]
=== Get Repository Statistics
--
'GET /projects/link:#project-name[\{project-name\}]/statistics.git'
--

Return statistics for the repository of a project.

.Request
----
  GET /projects/plugins%2Freplication/statistics.git HTTP/1.0
----

The repository statistics are returned as a
link:#repository-statistics-info[RepositoryStatisticsInfo] entity.

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

  )]}'
  {
    "number_of_loose_objects": 127,
    "number_of_loose_refs": 15,
    "number_of_pack_files": 15,
    "number_of_packed_objects": 67,
    "number_of_packed_refs": 0,
    "size_of_loose_objects": 29466,
    "size_of_packed_objects": 9646
  }
----

[[get-config]]
=== Get Config
--
'GET /projects/link:#project-name[\{project-name\}]/config'
--

Gets some configuration information about a project. Note that this
config info is not simply the contents of `project.config`; it generally
contains fields that may have been inherited from parent projects.

.Request
----
  GET /projects/myproject/config
----

A link:#config-info[ConfigInfo] entity is returned that describes the
project configuration. Some fields are only visible to users that have
read access to `refs/meta/config`.

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

  )]}'
  {
    "description": "demo project",
    "use_contributor_agreements": {
      "value": true,
      "configured_value": "TRUE",
      "inherited_value": false
    },
    "use_content_merge": {
      "value": true,
      "configured_value": "INHERIT",
      "inherited_value": true
    },
    "use_signed_off_by": {
      "value": false,
      "configured_value": "INHERIT",
      "inherited_value": false
    },
    "create_new_change_for_all_not_in_target": {
      "value": false,
      "configured_value": "INHERIT",
      "inherited_value": false
    },
    "require_change_id": {
      "value": false,
      "configured_value": "FALSE",
      "inherited_value": true
    },
    "max_object_size_limit": {
      "value": "15m",
      "configured_value": "15m",
      "inherited_value": "20m"
    },
    "submit_type": "MERGE_IF_NECESSARY",
    "state": "ACTIVE",
    "commentlinks": {},
    "plugin_config": {
      "helloworld": {
        "language": {
          "display_name": "Preferred Language",
          "type": "STRING",
          "value": "en"
        }
      }
    },
    "actions": {
      "cookbook~hello-project": {
        "method": "POST",
        "label": "Say hello",
        "title": "Say hello in different languages",
        "enabled": true
      }
    }
  }
----

[[set-config]]
=== Set Config
--
'PUT /projects/link:#project-name[\{project-name\}]/config'
--

Sets the configuration of a project.

The new configuration must be provided in the request body as a
link:#config-input[ConfigInput] entity.

.Request
----
  PUT /projects/myproject/config HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "description": "demo project",
    "use_contributor_agreements": "FALSE",
    "use_content_merge": "INHERIT",
    "use_signed_off_by": "INHERIT",
    "create_new_change_for_all_not_in_target": "INHERIT",
    "enable_signed_push": "INHERIT",
    "require_signed_push": "INHERIT",
    "reject_implicit_merges": "INHERIT",
    "require_change_id": "TRUE",
    "max_object_size_limit": "10m",
    "submit_type": "REBASE_IF_NECESSARY",
    "state": "ACTIVE"
  }
----

As response the new configuration is returned as a link:#config-info[
ConfigInfo] entity.

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

  )]}'
  {
    "use_contributor_agreements": {
      "value": false,
      "configured_value": "FALSE",
      "inherited_value": false
    },
    "use_content_merge": {
      "value": true,
      "configured_value": "INHERIT",
      "inherited_value": true
    },
    "use_signed_off_by": {
      "value": false,
      "configured_value": "INHERIT",
      "inherited_value": false
    },
    "create_new_change_for_all_not_in_target": {
      "value": true,
      "configured_value": "INHERIT",
      "inherited_value": false
    },
    "require_change_id": {
      "value": true,
      "configured_value": "TRUE",
      "inherited_value": true
    },
    "enable_signed_push": {
      "value": true,
      "configured_value": "INHERIT",
      "inherited_value": false
    },
    "require_signed_push": {
      "value": false,
      "configured_value": "INHERIT",
      "inherited_value": false
    },
    "reject_implicit_merges": {
      "value": false,
      "configured_value": "INHERIT",
      "inherited_value": false
    },
    "max_object_size_limit": {
      "value": "10m",
      "configured_value": "10m",
      "inherited_value": "20m"
    },
    "submit_type": "REBASE_IF_NECESSARY",
    "state": "ACTIVE",
    "commentlinks": {}
  }
----

[[run-gc]]
=== Run GC
--
'POST /projects/link:#project-name[\{project-name\}]/gc'
--

Run the Git garbage collection for the repository of a project.

Options for the Git garbage collection can be specified in the
request body as a link:#gc-input[GCInput] entity.

.Request
----
  POST /projects/plugins%2Freplication/gc HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "show_progress": true
  }
----

The response is the streamed output of the garbage collection.

.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: text/plain; charset=UTF-8

  collecting garbage for "plugins/replication":
  Pack refs:              100% (21/21)
  Counting objects:       20
  Finding sources:        100% (20/20)
  Getting sizes:          100% (13/13)
  Compressing objects:     83% (5/6)
  Writing objects:        100% (20/20)
  Selecting commits:      100% (7/7)
  Building bitmaps:       100% (7/7)
  Finding sources:        100% (41/41)
  Getting sizes:          100% (25/25)
  Compressing objects:     52% (12/23)
  Writing objects:        100% (41/41)
  Prune loose objects also found in pack files: 100% (36/36)
  Prune loose, unreferenced objects: 100% (36/36)
  done.
----

==== Asynchronous Execution

The option `async` allows to schedule a background task that asynchronously
executes a Git garbage collection.

The `Location` header of the response refers to the link:rest-api-config.html#get-task[background task]
which allows to inspect the progress of its execution. In case of asynchronous
execution the `show_progress` option is ignored.

.Request
----
  POST /projects/plugins%2Freplication/gc HTTP/1.0
  Content-Type: application/json;charset=UTF-8

  {
    "async": true
  }
----

The response is empty.

.Response
----
  HTTP/1.1 202 Accepted
  Content-Disposition: attachment
  Location: https:<host>/a/config/server/tasks/383a0602
----

[[ban-commit]]
=== Ban Commit
--
'PUT /projects/link:#project-name[\{project-name\}]/ban'
--

Marks commits as banned for the project. If a commit is banned Gerrit
rejects every push that includes this commit with
link:error-contains-banned-commit.html[contains banned commit ...].

[NOTE]
This REST endpoint only marks the commits as banned, but it does not
remove the commits from the history of any central branch. This needs
to be done manually.

The commits to be banned must be specified in the request body as a
link:#ban-input[BanInput] entity.

The caller must be project owner.

.Request
----
  PUT /projects/plugins%2Freplication/ban HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "commits": [
      "a8a477efffbbf3b44169bb9a1d3a334cbbd9aa96",
      "cf5b56541f84b8b57e16810b18daca9c3adc377b"
    ],
    "reason": "Violates IP"
  }
----

As response a link:#ban-result-info[BanResultInfo] entity is returned.

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

  )]}'
  {
    "newly_banned": [
      "a8a477efffbbf3b44169bb9a1d3a334cbbd9aa96",
      "cf5b56541f84b8b57e16810b18daca9c3adc377b"
    ]
  }
----

[[get-access]]
=== List Access Rights for Project
--
'GET /projects/link:rest-api-projects.html#project-name[\{project-name\}]/access'
--

Lists the access rights for a single project.

As result a link:#project-access-info[ProjectAccessInfo] entity is returned.

.Request
----
  GET /projects/MyProject/access HTTP/1.0
----

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

  )]}'
  {
    "revision": "61157ed63e14d261b6dca40650472a9b0bd88474",
    "inherits_from": {
      "id": "All-Projects",
      "name": "All-Projects",
      "description": "Access inherited by all other projects."
    },
    "local": {
        "refs/*": {
          "permissions": {
            "read": {
              "rules": {
                "c2ce4749a32ceb82cd6adcce65b8216e12afb41c": {
                  "action": "ALLOW",
                  "force": false
                },
                "global:Anonymous-Users": {
                  "action": "ALLOW",
                  "force": false
                }
              }
            }
          }
        }
    },
    "is_owner": true,
    "owner_of": [
      "refs/*"
    ],
    "can_upload": true,
    "can_add": true,
    "config_visible": true,
    "groups": {
      "c2ce4749a32ceb82cd6adcce65b8216e12afb41c": {
        "url": "#/admin/groups/uuid-c2ce4749a32ceb82cd6adcce65b8216e12afb41c",
        "options": {},
        "description": "Users who perform batch actions on Gerrit",
        "group_id": 2,
        "owner": "Administrators",
        "owner_id": "d5b7124af4de52924ed397913e2c3b37bf186948",
        "created_on": "2009-06-08 23:31:00.000000000",
        "name": "Non-Interactive Users"
      },
      "global:Anonymous-Users": {
        "options": {},
        "name": "Anonymous Users"
      }
    }
  }
----

[[set-access]]
=== Add, Update and Delete Access Rights for Project
--
'POST /projects/link:rest-api-projects.html#project-name[\{project-name\}]/access'
--

Sets access rights for the project using the diff schema provided by
link:#project-access-input[ProjectAccessInput]. Deductions are used to
remove access sections, permissions or permission rules. The backend will remove
the entity with the finest granularity in the request, meaning that if an
access section without permissions is posted, the access section will be
removed; if an access section with a permission but no permission rules is
posted, the permission will be removed; if an access section with a permission
and a permission rule is posted, the permission rule will be removed.

Additionally, access sections and permissions will be cleaned up after applying
the deductions by removing items that have no child elements.

After removals have been applied, additions will be applied.

As result a link:#project-access-info[ProjectAccessInfo] entity is returned.

.Request
----
  POST /projects/MyProject/access HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "remove": [
      "refs/*": {
        "permissions": {
          "read": {
            "rules": {
              "c2ce4749a32ceb82cd6adcce65b8216e12afb41c": {
                "action": "ALLOW"
              }
            }
          }
        }
      }
    ]
  }
----

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

  )]}'
  {
    "revision": "61157ed63e14d261b6dca40650472a9b0bd88474",
    "inherits_from": {
      "id": "All-Projects",
      "name": "All-Projects",
      "description": "Access inherited by all other projects."
    },
    "local": {
        "refs/*": {
          "permissions": {
            "read": {
              "rules": {
                "global:Anonymous-Users": {
                  "action": "ALLOW",
                  "force": false
                }
              }
            }
          }
        }
    },
    "is_owner": true,
    "owner_of": [
      "refs/*"
    ],
    "can_upload": true,
    "can_add": true,
    "config_visible": true,
    "groups": {
      "global:Anonymous-Users": {
        "options": {},
        "name": "Anonymous Users"
      }
    }
  }
----

[[create-access-change]]
=== Create Access Rights Change for review.
--
'PUT /projects/link:rest-api-projects.html#project-name[\{project-name\}]/access:review
--

Sets access rights for the project using the diff schema provided by
link:#project-access-input[ProjectAccessInput]

This takes the same input as link:#set-access[Update Access Rights], but creates a pending
change for review. Like link:#create-change[Create Change], it returns
a link:#change-info[ChangeInfo] entity describing the resulting change.

.Request
----
  PUT /projects/MyProject/access:review HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "add":{
      "refs/heads/*":{
        "permissions":{
          "read":{
            "rules":{
              "global:Anonymous-Users": {
                "action":"DENY",
                "force":false
              }
            }
          }
        }
      }
    }
  }
----

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

  )]}'
  {
    "id": "testproj~refs%2Fmeta%2Fconfig~Ieaf185bf90a1fc3b58461e399385e158a20b31a2",
    "project": "testproj",
    "branch": "refs/meta/config",
    "hashtags": [],
    "change_id": "Ieaf185bf90a1fc3b58461e399385e158a20b31a2",
    "subject": "Review access change",
    "status": "NEW",
    "created": "2017-09-07 14:31:11.852000000",
    "updated": "2017-09-07 14:31:11.852000000",
    "submit_type": "CHERRY_PICK",
    "mergeable": true,
    "insertions": 2,
    "deletions": 0,
    "unresolved_comment_count": 0,
    "has_review_started": true,
    "_number": 7,
    "owner": {
      "_account_id": 1000000
    }
  }
----

[[check-access]]
=== Check Access
--
'POST /projects/MyProject/check.access'
--

Runs access checks for other users. This requires the
link:access-control.html#capability_administrateServer[Administrate Server]
global capability.

Input for the access checks that should be run must be provided in
the request body inside a
link:#access-check-input[AccessCheckInput] entity.

.Request
----
  POST /projects/MyProject/check.access HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "account": "Kristen.Burns@gerritcodereview.com",
    "ref": "refs/heads/secret/bla"
  }
----

The result is a link:#access-check-info[AccessCheckInfo] entity
detailing the read access of the given user for the given project (or
project-ref combination).

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

  )]}'
  {
    "message": "user Kristen Burns \u003cKristen.Burns@gerritcodereview.com\u003e (1000098) cannot see ref refs/heads/secret/bla in project MyProject",
    "status": 403
  }
----

[[index]]
=== Index all changes in a project

Adds or updates all the changes belonging to a project in the secondary index.
The indexing task is executed asynchronously in background, so this command
returns immediately.

.Request
----
  POST /projects/MyProject/index HTTP/1.0
----

.Response
----
HTTP/1.1 202 Accepted
Content-Disposition: attachment
----

[[branch-endpoints]]
== Branch Endpoints

[[list-branches]]
=== List Branches
--
'GET /projects/link:#project-name[\{project-name\}]/branches/'
--

List the branches of a project.

As result a list of link:#branch-info[BranchInfo] entries is
returned.

.Request
----
  GET /projects/work%2Fmy-project/branches/ HTTP/1.0
----

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

  )]}'
  [
    {
      "ref": "HEAD",
      "revision": "master"
    },
    {
      "ref": "refs/meta/config",
      "revision": "76016386a0d8ecc7b6be212424978bb45959d668"
    },
    {
      "ref": "refs/heads/master",
      "revision": "67ebf73496383c6777035e374d2d664009e2aa5c"
    },
    {
      "ref": "refs/heads/stable",
      "revision": "64ca533bd0eb5252d2fee83f63da67caae9b4674",
      "can_delete": true
    }
  ]
----

[[branch-options]]
==== Branch Options

Limit(n)::
Limit the number of branches to be included in the results.
+
.Request
----
  GET /projects/testproject/branches?n=1 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "HEAD",
      "revision": "master",
      "can_delete": false
    }
  ]
----

Skip(S)::
Skip the given number of branches from the beginning of the list.
+
.Request
----
  GET /projects/testproject/branches?n=1&s=0 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "HEAD",
      "revision": "master",
      "can_delete": false
    }
  ]
----

Substring(m)::
Limit the results to those branches that match the specified substring.
+
The match is case insensitive. May not be used together with `r`.
+
List all branches that match substring `test`:
+
.Request
----
  GET /projects/testproject/branches?m=test HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "refs/heads/test1",
      "revision": "9c9d08a438e55e52f33b608415e6dddd9b18550d",
      "can_delete": true
    }
  ]
----

Regex(r)::
Limit the results to those branches that match the specified regex.
Boundary matchers '^' and '$' are implicit. For example: the regex 't*' will
match any branches that start with 't' and regex '*t' will match any
branches that end with 't'.
+
The match is case sensitive. May not be used together with `m`.
+
List all branches that match regex `t.*1`:
+
.Request
----
  GET /projects/testproject/branches?r=t.*1 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "refs/heads/test1",
      "revision": "9c9d08a438e55e52f33b608415e6dddd9b18550d",
      "can_delete": true
    }
  ]
----

[[get-branch]]
=== Get Branch
--
'GET /projects/link:#project-name[\{project-name\}]/branches/link:#branch-id[\{branch-id\}]'
--

Retrieves a branch of a project.

.Request
----
  GET /projects/work%2Fmy-project/branches/master HTTP/1.0
----

As response a link:#branch-info[BranchInfo] entity is returned that
describes the branch.

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

  )]}'
  {
    "ref": "refs/heads/master",
    "revision": "67ebf73496383c6777035e374d2d664009e2aa5c"
  }
----

[[create-branch]]
=== Create Branch
--
'PUT /projects/link:#project-name[\{project-name\}]/branches/link:#branch-id[\{branch-id\}]'
--

Creates a new branch.

In the request body additional data for the branch can be provided as
link:#branch-input[BranchInput].

.Request
----
  PUT /projects/MyProject/branches/stable HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "revision": "76016386a0d8ecc7b6be212424978bb45959d668"
  }
----

As response a link:#branch-info[BranchInfo] entity is returned that
describes the created branch.

.Response
----
  HTTP/1.1 201 Created
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  {
    "ref": "refs/heads/stable",
    "revision": "76016386a0d8ecc7b6be212424978bb45959d668",
    "can_delete": true
  }
----

[[delete-branch]]
=== Delete Branch
--
'DELETE /projects/link:#project-name[\{project-name\}]/branches/link:#branch-id[\{branch-id\}]'
--

Deletes a branch.

.Request
----
  DELETE /projects/MyProject/branches/stable HTTP/1.0
----

.Response
----
  HTTP/1.1 204 No Content
----

[[delete-branches]]
=== Delete Branches
--
'POST /projects/link:#project-name[\{project-name\}]/branches:delete'
--

Delete one or more branches.

The branches to be deleted must be provided in the request body as a
link:#delete-branches-input[DeleteBranchesInput] entity.

.Request
----
  POST /projects/MyProject/branches:delete HTTP/1.0
  Content-Type: application/json;charset=UTF-8

  {
    "branches": [
      "stable-1.0",
      "stable-2.0"
    ]
  }
----

.Response
----
  HTTP/1.1 204 No Content
----

If some branches could not be deleted, the response is "`409 Conflict`" and the
error message is contained in the response body.

[[get-content]]
=== Get Content
--
'GET /projects/link:#project-name[\{project-name\}]/branches/link:#branch-id[\{branch-id\}]/files/link:rest-api-changes.html#file-id[\{file-id\}]/content'
--

Gets the content of a file from the HEAD revision of a certain branch.

.Request
----
  GET /projects/gerrit/branches/master/files/gerrit-server%2Fsrc%2Fmain%2Fjava%2Fcom%2Fgoogle%2Fgerrit%2Fserver%2Fproject%2FRefControl.java/content HTTP/1.0
----

The content is returned as base64 encoded string.

.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: text/plain; charset=UTF-8

  Ly8gQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY...
----


[[get-mergeable-info]]
=== Get Mergeable Information
--
'GET /projects/link:#project-name[\{project-name\}]/branches/link:#branch-id[\{branch-id\}]/mergeable'
--

Gets whether the source is mergeable with the target branch.

The `source` query parameter is required, which can be anything that could be
resolved to a commit, see examples of the `source` attribute in
link:rest-api-changes.html#merge-input[MergeInput].

Also takes an optional parameter `strategy`, which can be `recursive`, `resolve`,
`simple-two-way-in-core`, `ours` or `theirs`, default will use project settings.

.Request
----
  GET /projects/test/branches/master/mergeable?source=testbranch&strategy=recursive HTTP/1.0
----

As response a link:rest-api-changes.html#mergeable-info[MergeableInfo] entity is returned.

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

  )]}'
  {
    "submit_type": "MERGE_IF_NECESSARY",
    "strategy": "recursive",
    "mergeable": true,
    "commit_merged": false,
    "content_merged": false
  }
----

or when there were conflicts.

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

  )]}'
  {
    "submit_type": "MERGE_IF_NECESSARY",
    "strategy": "recursive",
    "mergeable": false,
    "conflicts": [
      "common.txt",
      "shared.txt"
    ]
  }
----

or when the 'testbranch' has been already merged.

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

  )]}'
  {
    "submit_type": "MERGE_IF_NECESSARY",
    "strategy": "recursive",
    "mergeable": true,
    "commit_merged": true,
    "content_merged": true
  }
----

or when only the content of 'testbranch' has been merged.

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

  )]}'
  {
    "submit_type": "MERGE_IF_NECESSARY",
    "strategy": "recursive",
    "mergeable": true,
    "commit_merged": false,
    "content_merged": true
  }
----

[[get-reflog]]
=== Get Reflog
--
'GET /projects/link:#project-name[\{project-name\}]/branches/link:#branch-id[\{branch-id\}]/reflog'
--

Gets the reflog of a certain branch.

The caller must be project owner.

.Request
----
  GET /projects/gerrit/branches/master/reflog HTTP/1.0
----

As response a list of link:#reflog-entry-info[ReflogEntryInfo] entities
is returned that describe the reflog entries. The reflog entries are
returned in reverse order.

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

  )]}'
  [
    {
      "old_id": "976ced8f4fc0909d7e1584d18455299545881d60",
      "new_id": "2eaa94bac536654eb592c941e33b91f925698d16",
      "who": {
        "name": "Jane Roe",
        "email": "jane.roe@example.com",
        "date": "2014-06-30 11:53:43.000000000",
        "tz": 120
      },
      "comment": "merged: fast forward"
    },
    {
      "old_id": "c271c6a7161b74f85560c5899c8c73ee89ca5e29",
      "new_id": "976ced8f4fc0909d7e1584d18455299545881d60",
      "who": {
        "name": "John Doe",
        "email": "john.doe@example.com",
        "date": "2013-10-02 10:45:26.000000000",
        "tz": 120
      },
      "comment": "merged: fast forward"
    },
    {
      "old_id": "0000000000000000000000000000000000000000",
      "new_id": "c271c6a7161b74f85560c5899c8c73ee89ca5e29",
      "who": {
        "name": "John Doe",
        "email": "john.doe@example.com",
        "date": "2013-09-30 19:08:44.000000000",
        "tz": 120
      },
      "comment": ""
    }
  ]
----

The get reflog endpoint also accepts a limit integer in the `n`
parameter. This limits the results to show the last `n` reflog entries.

Query the last 25 reflog entries.
----
  GET /projects/gerrit/branches/master/reflog?n=25 HTTP/1.0
----

The reflog can also be filtered by timestamp by specifying the `from`
and `to` parameters. The timestamp for `from` and `to` must be given as
UTC in the following format: `yyyyMMdd_HHmm`.

----
  GET /projects/gerrit/branches/master/reflog?from=20130101_0000&to=20140101_0000=25 HTTP/1.0
----

[[child-project-endpoints]]
== Child Project Endpoints

[[list-child-projects]]
=== List Child Projects
--
'GET /projects/link:#project-name[\{project-name\}]/children/'
--

List the direct child projects of a project.

.Request
----
  GET /projects/Public-Plugins/children/ HTTP/1.0
----

As result a list of link:#project-info[ProjectInfo] entries is
returned that describe the child projects.

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

  )]}'
  [
    {
      "id": "plugins%2Freplication",
      "name": "plugins/replication",
      "parent": "Public-Plugins",
      "description": "Copies to other servers using the Git protocol"
    },
    {
      "id": "plugins%2Freviewnotes",
      "name": "plugins/reviewnotes",
      "parent": "Public-Plugins",
      "description": "Annotates merged commits using notes on refs/notes/review."
    },
    {
      "id": "plugins%2Fsingleusergroup",
      "name": "plugins/singleusergroup",
      "parent": "Public-Plugins",
      "description": "GroupBackend enabling users to be directly added to access rules"
    }
  ]
----

To resolve the child projects of a project recursively the parameter
`recursive` can be set.

Child projects that are not visible to the calling user are ignored and
are not resolved further.

.Request
----
  GET /projects/Public-Projects/children/?recursive HTTP/1.0
----

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

  )]}'
  [
    {
      "id": "gerrit",
      "name": "gerrit",
      "parent": "Public-Projects",
      "description": "Gerrit Code Review"
    },
    {
      "id": "plugins%2Freplication",
      "name": "plugins/replication",
      "parent": "Public-Plugins",
      "description": "Copies to other servers using the Git protocol"
    },
    {
      "id": "plugins%2Freviewnotes",
      "name": "plugins/reviewnotes",
      "parent": "Public-Plugins",
      "description": "Annotates merged commits using notes on refs/notes/review."
    },
    {
      "id": "plugins%2Fsingleusergroup",
      "name": "plugins/singleusergroup",
      "parent": "Public-Plugins",
      "description": "GroupBackend enabling users to be directly added to access rules"
    },
    {
      "id": "Public-Plugins",
      "name": "Public-Plugins",
      "parent": "Public-Projects",
      "description": "Parent project for plugins/*"
    }
  ]
----

[[get-child-project]]
=== Get Child Project
--
'GET /projects/link:#project-name[\{project-name\}]/children/link:#project-name[\{project-name\}]'
--

Retrieves a child project. If a non-direct child project should be
retrieved the parameter `recursive` must be set.

.Request
----
  GET /projects/Public-Plugins/children/plugins%2Freplication HTTP/1.0
----

As response a link:#project-info[ProjectInfo] entity is returned that
describes the child project.

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

  )]}'
  {
    "id": "plugins%2Freplication",
    "name": "plugins/replication",
    "parent": "Public-Plugins",
    "description": "Copies to other servers using the Git protocol"
  }
----

[[tag-endpoints]]
== Tag Endpoints

[[create-tag]]
=== Create Tag

--
'PUT /projects/link:#project-name[\{project-name\}]/tags/link:#tag-id[\{tag-id\}]'
--

Create a new tag on the project.

In the request body additional data for the tag can be provided as
link:#tag-input[TagInput].

If a message is provided in the input, the tag is created as an
annotated tag with the current user as tagger. Signed tags are not
supported.

.Request
----
  PUT /projects/MyProject/tags/v1.0 HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "message": "annotation",
    "revision": "c83117624b5b5d8a7f86093824e2f9c1ed309d63"
  }
----

As response a link:#tag-info[TagInfo] entity is returned that describes
the created tag.

.Response
----
  HTTP/1.1 201 Created
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'

  "object": "d48d304adc4b6674e11dc2c018ea05fcbdda32fd",
  "message": "annotation",
  "tagger": {
    "name": "David Pursehouse",
    "email": "dpursehouse@collab.net",
    "date": "2016-06-06 01:22:03.000000000",
    "tz": 540
  },
  "ref": "refs/tags/v1.0",
  "revision": "c83117624b5b5d8a7f86093824e2f9c1ed309d63"
  }
----

[[list-tags]]
=== List Tags
--
'GET /projects/link:#project-name[\{project-name\}]/tags/'
--

List the tags of a project.

As result a list of link:#tag-info[TagInfo] entries is returned.

Only includes tags under the `refs/tags/` namespace.

.Request
----
  GET /projects/work%2Fmy-project/tags/ HTTP/1.0
----

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

  )]}'
  [
    {
      "ref": "refs/tags/v1.0",
      "revision": "49ce77fdcfd3398dc0dedbe016d1a425fd52d666",
      "object": "1624f5af8ae89148d1a3730df8c290413e3dcf30",
      "message": "Annotated tag",
      "tagger": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "date": "2014-10-06 07:35:03.000000000",
        "tz": 540
      }
    },
    {
      "ref": "refs/tags/v2.0",
      "revision": "1624f5af8ae89148d1a3730df8c290413e3dcf30"
    },
    {
      "ref": "refs/tags/v3.0",
      "revision": "c628685b3c5a3614571ecb5c8fceb85db9112313",
      "object": "1624f5af8ae89148d1a3730df8c290413e3dcf30",
      "message": "Signed tag\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.11 (GNU/Linux)\n\niQEcBAABAgAGBQJUMlqYAAoJEPI2qVPgglptp7MH/j+KFcittFbxfSnZjUl8n5IZ\nveZo7wE+syjD9sUbMH4EGv0WYeVjphNTyViBof+stGTNkB0VQzLWI8+uWmOeiJ4a\nzj0LsbDOxodOEMI5tifo02L7r4Lzj++EbqtKv8IUq2kzYoQ2xjhKfFiGjeYOn008\n9PGnhNblEHZgCHguGR6GsfN8bfA2XNl9B5Ysl5ybX1kAVs/TuLZR4oDMZ/pW2S75\nhuyNnSgcgq7vl2gLGefuPs9lxkg5Fj3GZr7XPZk4pt/x1oiH7yXxV4UzrUwg2CC1\nfHrBlNbQ4uJNY8TFcwof52Z0cagM5Qb/ZSLglHbqEDGA68HPqbwf5z2hQyU2/U4\u003d\n\u003dZtUX\n-----END PGP SIGNATURE-----",
      "tagger": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "date": "2014-10-06 09:02:16.000000000",
        "tz": 540
      }
    }
  ]
----

[[tag-options]]
==== Tag Options

Limit(n)::
Limit the number of tags to be included in the results.
+
.Request
----
  GET /projects/work%2Fmy-project/tags?n=2 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "refs/tags/v1.0",
      "revision": "49ce77fdcfd3398dc0dedbe016d1a425fd52d666",
      "object": "1624f5af8ae89148d1a3730df8c290413e3dcf30",
      "message": "Annotated tag",
      "tagger": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "date": "2014-10-06 07:35:03.000000000",
        "tz": 540
      }
    },
    {
      "ref": "refs/tags/v2.0",
      "revision": "1624f5af8ae89148d1a3730df8c290413e3dcf30"
    }
  ]
----

Skip(S)::
Skip the given number of tags from the beginning of the list.
+
.Request
----
  GET /projects/work%2Fmy-project/tags?n=2&s=1 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "refs/tags/v2.0",
      "revision": "1624f5af8ae89148d1a3730df8c290413e3dcf30"
    },
    {
      "ref": "refs/tags/v3.0",
      "revision": "c628685b3c5a3614571ecb5c8fceb85db9112313",
      "object": "1624f5af8ae89148d1a3730df8c290413e3dcf30",
      "message": "Signed tag\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.11 (GNU/Linux)\n\niQEcBAABAgAGBQJUMlqYAAoJEPI2qVPgglptp7MH/j+KFcittFbxfSnZjUl8n5IZ\nveZo7wE+syjD9sUbMH4EGv0WYeVjphNTyViBof+stGTNkB0VQzLWI8+uWmOeiJ4a\nzj0LsbDOxodOEMI5tifo02L7r4Lzj++EbqtKv8IUq2kzYoQ2xjhKfFiGjeYOn008\n9PGnhNblEHZgCHguGR6GsfN8bfA2XNl9B5Ysl5ybX1kAVs/TuLZR4oDMZ/pW2S75\nhuyNnSgcgq7vl2gLGefuPs9lxkg5Fj3GZr7XPZk4pt/x1oiH7yXxV4UzrUwg2CC1\nfHrBlNbQ4uJNY8TFcwof52Z0cagM5Qb/ZSLglHbqEDGA68HPqbwf5z2hQyU2/U4\u003d\n\u003dZtUX\n-----END PGP SIGNATURE-----",
      "tagger": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "date": "2014-10-06 09:02:16.000000000",
        "tz": 540
      }
    }
  ]
----

Substring(m)::
Limit the results to those tags that match the specified substring.
+
The match is case insensitive.  May not be used together with `r`.
+
List all tags that match substring `v2`:

+
.Request
----
  GET /projects/testproject/tags?m=v2 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "refs/tags/v2.0",
      "revision": "1624f5af8ae89148d1a3730df8c290413e3dcf30"
    },
  ]
----

Regex(r)::
Limit the results to those tags that match the specified regex.
Boundary matchers '^' and '$' are implicit. For example: the regex 't*' will
match any tags that start with 't' and regex '*t' will match any
tags that end with 't'.
+
The match is case sensitive.  May not be used together with `m`.
+
List all tags that match regex `v.*0`:
+
.Request
----
  GET /projects/testproject/tags?r=v.*0 HTTP/1.0
----
+
.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: application/json; charset=UTF-8

  )]}'
  [
    {
      "ref": "refs/tags/v1.0",
      "revision": "49ce77fdcfd3398dc0dedbe016d1a425fd52d666",
      "object": "1624f5af8ae89148d1a3730df8c290413e3dcf30",
      "message": "Annotated tag",
      "tagger": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "date": "2014-10-06 07:35:03.000000000",
        "tz": 540
      }
    },
    {
      "ref": "refs/tags/v2.0",
      "revision": "1624f5af8ae89148d1a3730df8c290413e3dcf30"
    },
    {
      "ref": "refs/tags/v3.0",
      "revision": "c628685b3c5a3614571ecb5c8fceb85db9112313",
      "object": "1624f5af8ae89148d1a3730df8c290413e3dcf30",
      "message": "Signed tag\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.11 (GNU/Linux)\n\niQEcBAABAgAGBQJUMlqYAAoJEPI2qVPgglptp7MH/j+KFcittFbxfSnZjUl8n5IZ\nveZo7wE+syjD9sUbMH4EGv0WYeVjphNTyViBof+stGTNkB0VQzLWI8+uWmOeiJ4a\nzj0LsbDOxodOEMI5tifo02L7r4Lzj++EbqtKv8IUq2kzYoQ2xjhKfFiGjeYOn008\n9PGnhNblEHZgCHguGR6GsfN8bfA2XNl9B5Ysl5ybX1kAVs/TuLZR4oDMZ/pW2S75\nhuyNnSgcgq7vl2gLGefuPs9lxkg5Fj3GZr7XPZk4pt/x1oiH7yXxV4UzrUwg2CC1\nfHrBlNbQ4uJNY8TFcwof52Z0cagM5Qb/ZSLglHbqEDGA68HPqbwf5z2hQyU2/U4\u003d\n\u003dZtUX\n-----END PGP SIGNATURE-----",
      "tagger": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "date": "2014-10-06 09:02:16.000000000",
        "tz": 540
      }
    }
  ]
----

[[get-tag]]
=== Get Tag
--
'GET /projects/link:#project-name[\{project-name\}]/tags/link:#tag-id[\{tag-id\}]'
--

Retrieves a tag of a project.

.Request
----
  GET /projects/work%2Fmy-project/tags/v1.0 HTTP/1.0
----

As response a link:#tag-info[TagInfo] entity is returned that describes the tag.

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

  )]}'
  {
    "ref": "refs/tags/v1.0",
    "revision": "49ce77fdcfd3398dc0dedbe016d1a425fd52d666",
    "object": "1624f5af8ae89148d1a3730df8c290413e3dcf30",
    "message": "Annotated tag",
    "tagger": {
      "name": "David Pursehouse",
      "email": "david.pursehouse@sonymobile.com",
      "date": "2014-10-06 07:35:03.000000000",
      "tz": 540
    }
  }
----

[[delete-tag]]
=== Delete Tag
--
'DELETE /projects/link:#project-name[\{project-name\}]/tags/link:#tag-id[\{tag-id\}]'
--

Deletes a tag.

.Request
----
  DELETE /projects/MyProject/tags/v1.0 HTTP/1.0
----

.Response
----
  HTTP/1.1 204 No Content
----

[[delete-tags]]
=== Delete Tags
--
'POST /projects/link:#project-name[\{project-name\}]/tags:delete'
--

Delete one or more tags.

The tags to be deleted must be provided in the request body as a
link:#delete-tags-input[DeleteTagsInput] entity.

.Request
----
  POST /projects/MyProject/tags:delete HTTP/1.0
  Content-Type: application/json;charset=UTF-8

  {
    "tags": [
      "v1.0",
      "v2.0"
    ]
  }
----

.Response
----
  HTTP/1.1 204 No Content
----

If some tags could not be deleted, the response is "`409 Conflict`" and the
error message is contained in the response body.

[[commit-endpoints]]
== Commit Endpoints

[[get-commit]]
=== Get Commit
--
'GET /projects/link:#project-name[\{project-name\}]/commits/link:#commit-id[\{commit-id\}]'
--

Retrieves a commit of a project.

The commit must be visible to the caller.

.Request
----
  GET /projects/work%2Fmy-project/commits/a8a477efffbbf3b44169bb9a1d3a334cbbd9aa96 HTTP/1.0
----

As response a link:rest-api-changes.html#commit-info[CommitInfo] entity
is returned that describes the commit.

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

  )]}'
  {
    "commit": "184ebe53805e102605d11f6b143486d15c23a09c",
    "parents": [
      {
        "commit": "1eee2c9d8f352483781e772f35dc586a69ff5646",
        "subject": "Migrate contributor agreements to All-Projects."
      }
    ],
    "author": {
      "name": "Shawn O. Pearce",
      "email": "sop@google.com",
      "date": "2012-04-24 18:08:08.000000000",
      "tz": -420
    },
    "committer": {
      "name": "Shawn O. Pearce",
      "email": "sop@google.com",
      "date": "2012-04-24 18:08:08.000000000",
      "tz": -420
    },
    "subject": "Use an EventBus to manage star icons",
    "message": "Use an EventBus to manage star icons\n\nImage widgets that need to ..."
  }
----

[[get-included-in]]
=== Get Included In
--
'GET /projects/link:#project-name[\{project-name\}]/commits/link:#commit-id[\{commit-id\}]/in'
--

Retrieves the branches and tags in which a change is included. As result
an link:rest-api-changes.html#included-in-info[IncludedInInfo] entity is returned.

.Request
----
  GET /projects/work%2Fmy-project/commits/a8a477efffbbf3b44169bb9a1d3a334cbbd9aa96/in HTTP/1.0
----

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

  )]}'
  {
    "branches": [
      "master"
    ],
    "tags": []
  }
----

[[get-content-from-commit]]
=== Get Content
--
'GET /projects/link:#project-name[\{project-name\}]/commits/link:#commit-id[\{commit-id\}]/files/link:rest-api-changes.html#file-id[\{file-id\}]/content'
--

Gets the content of a file from a certain commit.

.Request
----
  GET /projects/work%2Fmy-project/commits/a8a477efffbbf3b44169bb9a1d3a334cbbd9aa96/files/gerrit-server%2Fsrc%2Fmain%2Fjava%2Fcom%2Fgoogle%2Fgerrit%2Fserver%2Fproject%2FRefControl.java/content HTTP/1.0
----

The content is returned as base64 encoded string.

.Response
----
  HTTP/1.1 200 OK
  Content-Disposition: attachment
  Content-Type: text/plain; charset=UTF-8

  Ly8gQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY...
----


[[cherry-pick-commit]]
=== Cherry Pick Commit
--
'POST /projects/link:#project-name[\{project-name\}]/commits/link:#commit-id[\{commit-id\}]/cherrypick'
--

Cherry-picks a commit of a project to a destination branch.

The destination branch must be provided in the request body inside a
link:rest-api-changes.html#cherrypick-input[CherryPickInput] entity.
If the commit message is not set, the commit message of the source
commit will be used.

.Request
----
  POST /projects/work%2Fmy-project/commits/a8a477efffbbf3b44169bb9a1d3a334cbbd9aa96/cherrypick HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "message" : "Implementing Feature X",
    "destination" : "release-branch"
  }
----

As response a link:rest-api-changes.html#change-info[ChangeInfo] entity is returned that
describes the resulting cherry-picked change.

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

  )]}'
  {
    "id": "myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9941",
    "project": "myProject",
    "branch": "release-branch",
    "change_id": "I8473b95934b5732ac55d26311a706c9c2bde9941",
    "subject": "Implementing Feature X",
    "status": "NEW",
    "created": "2013-02-01 09:59:32.126000000",
    "updated": "2013-02-21 11:16:36.775000000",
    "mergeable": true,
    "insertions": 12,
    "deletions": 11,
    "_number": 3965,
    "owner": {
      "name": "John Doe"
    }
  }
----

[[dashboard-endpoints]]
== Dashboard Endpoints

[[list-dashboards]]
=== List Dashboards
--
'GET /projects/link:#project-name[\{project-name\}]/dashboards/'
--

List custom dashboards for a project.

As result a list of link:#dashboard-info[DashboardInfo] entries is
returned.

List all dashboards for the `work/my-project` project:

.Request
----
  GET /projects/work%2Fmy-project/dashboards/ HTTP/1.0
----

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

  )]}'
  [
    {
      "id": "main:closed",
      "ref": "main",
      "path": "closed",
      "description": "Merged and abandoned changes in last 7 weeks",
      "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
      "is_default": true,
      "title": "Closed changes",
      "sections": [
        {
          "name": "Merged",
          "query": "status:merged age:7w"
        },
        {
          "name": "Abandoned",
          "query": "status:abandoned age:7w"
        }
      ]
    }
  ]
----

.Get all dashboards of the 'All-Projects' project
****
get::/projects/All-Projects/dashboards/
****

[[get-dashboard]]
=== Get Dashboard
--
'GET /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
--

Retrieves a project dashboard. The dashboard can be defined on that
project or be inherited from a parent project.

.Request
----
  GET /projects/work%2Fmy-project/dashboards/main:closed HTTP/1.0
----

As response a link:#dashboard-info[DashboardInfo] entity is returned
that describes the dashboard.

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

  )]}'
  {
    "id": "main:closed",
    "ref": "main",
    "path": "closed",
    "description": "Merged and abandoned changes in last 7 weeks",
    "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
    "is_default": true,
    "title": "Closed changes",
    "sections": [
      {
        "name": "Merged",
        "query": "status:merged age:7w"
      },
      {
        "name": "Abandoned",
        "query": "status:abandoned age:7w"
      }
    ]
  }
----

To retrieve the default dashboard of a project use `default` as
dashboard-id.

.Request
----
  GET /projects/work%2Fmy-project/dashboards/default HTTP/1.0
----

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

  )]}'
  {
    "id": "main:closed",
    "ref": "main",
    "path": "closed",
    "description": "Merged and abandoned changes in last 7 weeks",
    "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
    "is_default": true,
    "title": "Closed changes",
    "sections": [
      {
        "name": "Merged",
        "query": "status:merged age:7w"
      },
      {
        "name": "Abandoned",
        "query": "status:abandoned age:7w"
      }
    ]
  }
----

[[set-dashboard]]
=== Set Dashboard
--
'PUT /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
--

Updates/Creates a project dashboard.

Currently only supported for the `default` dashboard.

The creation/update information for the dashboard must be provided in
the request body as a link:#dashboard-input[DashboardInput] entity.

.Request
----
  PUT /projects/work%2Fmy-project/dashboards/default HTTP/1.0
  Content-Type: application/json; charset=UTF-8

  {
    "id": "main:closed",
    "commit_message": "Define the default dashboard"
  }
----

As response the new/updated dashboard is returned as a
link:#dashboard-info[DashboardInfo] entity.

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

  )]}'
  {
    "id": "main:closed",
    "ref": "main",
    "path": "closed",
    "description": "Merged and abandoned changes in last 7 weeks",
    "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
    "is_default": true,
    "title": "Closed changes",
    "sections": [
      {
        "name": "Merged",
        "query": "status:merged age:7w"
      },
      {
        "name": "Abandoned",
        "query": "status:abandoned age:7w"
      }
    ]
  }
----

[[delete-dashboard]]
=== Delete Dashboard
--
'DELETE /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
--

Deletes a project dashboard.

Currently only supported for the `default` dashboard.

The request body does not need to include a link:#dashboard-input[
DashboardInput] entity if no commit message is specified.

Please note that some proxies prohibit request bodies for DELETE
requests.

.Request
----
  DELETE /projects/work%2Fmy-project/dashboards/default HTTP/1.0
----

.Response
----
  HTTP/1.1 204 No Content
----


[[ids]]
== IDs

[[branch-id]]
=== \{branch-id\}
The name of a branch or `HEAD`. The prefix `refs/heads/` can be
omitted.

[[commit-id]]
=== \{commit-id\}
Commit ID.

[[tag-id]]
=== \{tag-id\}
The name of a tag. The prefix `refs/tags/` can be omitted.

[[dashboard-id]]
=== \{dashboard-id\}
The ID of a dashboard in the format '<ref>:<path>'.

A special dashboard ID is `default` which represents the default
dashboard of a project.

[[project-name]]
=== \{project-name\}
The name of the project.

If the name ends with `.git`, the suffix will be automatically removed.


[[json-entities]]
== JSON Entities

[[access-check-info]]
=== AccessCheckInfo

The `AccessCheckInfo` entity is the result of an access check.

[options="header",cols="1,^1,5"]
|=========================================
|Field Name                  ||Description
|`status`                    ||The HTTP status code for the access.
200 means success, 403 means denied and 404 means the project does not exist.
|`message`                   |optional|A clarifying message if `status` is not 200.
|=========================================

[[access-check-input]]
=== AccessCheckInput
The `AccessCheckInput` entity is either an account or
(account, ref) tuple for which we want to check access.

[options="header",cols="1,^1,5"]
|=========================================
|Field Name                  ||Description
|`account`                   ||The account for which to check access
|`ref`                       |optional|The refname for which to check access
|=========================================

[[ban-input]]
=== BanInput
The `BanInput` entity contains information for banning commits in a
project.

[options="header",cols="1,^2,4"]
|=======================
|Field Name||Description
|`commits` ||List of commits to be banned.
|`reason`  |optional|Reason for banning the commits.
|=======================

[[ban-result-info]]
=== BanResultInfo
The `BanResultInfo` entity describes the result of banning commits.

[options="header",cols="1,^2,4"]
|=============================
|Field Name      ||Description
|`newly_banned`  |optional|List of newly banned commits.
|`already_banned`|optional|List of commits that were already banned.
|`ignored`       |optional|List of object IDs that were ignored.
|=============================

[[branch-info]]
=== BranchInfo
The `BranchInfo` entity contains information about a branch.

[options="header",cols="1,^2,4"]
|=========================
|Field Name  ||Description
|`ref`       ||The ref of the branch.
|`revision`  ||The revision to which the branch points.
|`can_delete`|`false` if not set|
Whether the calling user can delete this branch.
|`web_links` |optional|
Links to the branch in external sites as a list of
link:rest-api-changes.html#web-link-info[WebLinkInfo] entries.
|=========================

[[branch-input]]
=== BranchInput
The `BranchInput` entity contains information for the creation of
a new branch.

[options="header",cols="1,^2,4"]
|=======================
|Field Name||Description
|`ref`     |optional|
The name of the branch. The prefix `refs/heads/` can be
omitted. +
If set, must match the branch ID in the URL.
|`revision`|optional|
The base revision of the new branch. +
If not set, `HEAD` will be used as base revision.
|=======================

[[config-info]]
=== ConfigInfo
The `ConfigInfo` entity contains information about the effective project
configuration.

[options="header",cols="1,^2,4"]
|=======================================================
|Field Name                                ||Description
|`description`                             |optional|
The description of the project.
|`use_contributor_agreements`              |optional|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
authors must complete a contributor agreement on the site before
pushing any commits or changes to this project.
|`use_content_merge`                       |optional|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
Gerrit will try to perform a 3-way merge of text file content when a
file has been modified by both the destination branch and the change
being submitted. This option only takes effect if submit type is not
FAST_FORWARD_ONLY.
|`use_signed_off_by`                       |optional|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
each change must contain a Signed-off-by line from either the author or
the uploader in the commit message.
|`create_new_change_for_all_not_in_target` |optional|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
a new change is created for every commit not in target branch.
|`require_change_id`                       |optional|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether a
valid link:user-changeid.html[Change-Id] footer in any commit uploaded
for review is required. This does not apply to commits pushed directly
to a branch or tag.
|`enable_signed_push`|optional, not set if signed push is disabled|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
signed push validation is enabled on the project.
|`require_signed_push`|optional, not set if signed push is disabled|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
signed push validation is required on the project.
|`reject_implicit_merges`|optional|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
implicit merges should be rejected on changes pushed to the project.
|`private_by_default`     ||
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
all new changes are set as private by default.
|`max_object_size_limit`     ||
The link:config-gerrit.html#receive.maxObjectSizeLimit[max object size
limit] of this project as a link:#max-object-size-limit-info[
MaxObjectSizeLimitInfo] entity.
|`submit_type`               ||
The default submit type of the project, can be `MERGE_IF_NECESSARY`,
`FAST_FORWARD_ONLY`, `REBASE_IF_NECESSARY`, `REBASE_ALWAYS`, `MERGE_ALWAYS` or
`CHERRY_PICK`.
|`match_author_to_committer_date` |optional|
link:#inherited-boolean-info[InheritedBooleanInfo] that indicates whether
a change's author date will be changed to match its submitter date upon submit.
|`state`                     |optional|
The state of the project, can be `ACTIVE`, `READ_ONLY` or `HIDDEN`. +
Not set if the project state is `ACTIVE`.
|`commentlinks`              ||
Map with the comment link configurations of the project. The name of
the comment link configuration is mapped to the comment link
configuration, which has the same format as the
link:config-gerrit.html#_a_id_commentlink_a_section_commentlink[
commentlink section] of `gerrit.config`.
|`theme`                                   |optional|
The theme that is configured for the project as a link:#theme-info[
ThemeInfo] entity.
|`plugin_config`                           |optional|
Plugin configuration as map which maps the plugin name to a map of
parameter names to link:#config-parameter-info[ConfigParameterInfo]
entities.
|`actions`                                 |optional|
Actions the caller might be able to perform on this project. The
information is a map of view names to
link:rest-api-changes.html#action-info[ActionInfo] entities.
|=======================================================

[[config-input]]
=== ConfigInput
The `ConfigInput` entity describes a new project configuration.

[options="header",cols="1,^2,4"]
|======================================================
|Field Name                               ||Description
|`description`                            |optional|
The new description of the project. +
If not set, the description is removed.
|`use_contributor_agreements`             |optional|
Whether authors must complete a contributor agreement on the site
before pushing any commits or changes to this project. +
Can be `TRUE`, `FALSE` or `INHERIT`. +
If not set, this setting is not updated.
|`use_content_merge`                       |optional|
Whether Gerrit will try to perform a 3-way merge of text file content
when a file has been modified by both the destination branch and the
change being submitted. This option only takes effect if submit type is
not FAST_FORWARD_ONLY. +
Can be `TRUE`, `FALSE` or `INHERIT`. +
If not set, this setting is not updated.
|`use_signed_off_by`                       |optional|
Whether each change must contain a Signed-off-by line from either the
author or the uploader in the commit message. +
Can be `TRUE`, `FALSE` or `INHERIT`. +
If not set, this setting is not updated.
|`create_new_change_for_all_not_in_target` |optional|
Whether a new change will be created for every commit not in target
branch. +
Can be `TRUE`, `FALSE` or `INHERIT`. +
If not set, this setting is not updated.
|`require_change_id`                       |optional|
Whether a valid link:user-changeid.html[Change-Id] footer in any commit
uploaded for review is required. This does not apply to commits pushed
directly to a branch or tag. +
Can be `TRUE`, `FALSE` or `INHERIT`. +
If not set, this setting is not updated.
|`reject_implicit_merges`                  |optional|
Whether a check for implicit merges will be performed when changes
are pushed for review. +
Can be `TRUE`, `FALSE` or `INHERIT`. +
If not set, this setting is not updated.
|`max_object_size_limit`                   |optional|
The link:config-gerrit.html#receive.maxObjectSizeLimit[max object size
limit] of this project as a link:#max-object-size-limit-info[
MaxObjectSizeLimitInfo] entity. +
If set to `0`, the max object size limit is removed. +
If not set, this setting is not updated.
|`submit_type`                             |optional|
The default submit type of the project, can be `MERGE_IF_NECESSARY`,
`FAST_FORWARD_ONLY`, `REBASE_IF_NECESSARY`, `REBASE_ALWAYS`, `MERGE_ALWAYS` or
`CHERRY_PICK`. +
If not set, the submit type is not updated.
|`state`                                   |optional|
The state of the project, can be `ACTIVE`, `READ_ONLY` or `HIDDEN`. +
Not set if the project state is `ACTIVE`. +
If not set, the project state is not updated.
|`plugin_config_values`                    |optional|
Plugin configuration values as map which maps the plugin name to a map
of parameter names to values.
|======================================================

[[config-parameter-info]]
=== ConfigParameterInfo
The `ConfigParameterInfo` entity describes a project configuration
parameter.

[options="header",cols="1,^2,4"]
|===============================
|Field Name        ||Description
|`display_name`    |optional|
The display name of the configuration parameter.
|`description`     |optional|
The description of the configuration parameter.
|`warning`         |optional|
Warning message for the configuration parameter.
|`type`            ||
The type of the configuration parameter. Can be `STRING`, `INT`,
`LONG`, `BOOLEAN`, `LIST` or `ARRAY`.
|`value`           |optional|
The value of the configuration parameter as string. If the parameter
is inheritable this is the effective value which is deduced from
`configured_value` and `inherited_value`.
|`values`          |optional|
The list of values. Only set if the `type` is `ARRAY`.
|`editable`         |`false` if not set|
Whether the value is editable.
|`permitted_values`|optional|
The list of permitted values. Only set if the `type` is `LIST`.
|`inheritable`     |`false` if not set|
Whether the configuration parameter can be inherited.
|`configured_value`|optional|
The value of the configuration parameter that is configured on this
project, only set if `inheritable` is true.
|`inherited_value` |optional|
The inherited value of the configuration parameter, only set if
`inheritable` is true.
|`permitted_values` |optional|
The list of permitted values, only set if the `type` is `LIST`.
|===============================

[[dashboard-info]]
=== DashboardInfo
The `DashboardInfo` entity contains information about a project
dashboard.

[options="header",cols="1,^2,4"]
|===============================
|Field Name        ||Description
|`id`              ||
The ID of the dashboard. The ID has the format '<ref>:<path>',
where ref and path are URL encoded.
|`project`         ||
The name of the project for which this dashboard is returned.
|`defining_project`||
The name of the project in which this dashboard is defined.
This is different from `project` if the dashboard is inherited from a
parent project.
|`ref`             ||
The name of the ref in which the dashboard is defined, without the
`refs/meta/dashboards/` prefix, which is common for all dashboard refs.
|`path`            ||
The path of the file in which the dashboard is defined.
|`description`     |optional|The description of the dashboard.
|`foreach`         |optional|
Subquery that applies to all sections in the dashboard. +
Tokens such as `${project}` are not resolved.
|`url`             ||
The URL under which the dashboard can be opened in the Gerrit Web UI. +
The URL is relative to the canonical web URL. +
Tokens in the queries such as `${project}` are resolved.
|`is_default`      |not set if `false`|
Whether this is the default dashboard of the project.
|`title`           |optional|The title of the dashboard.
|`sections`        ||
The list of link:#dashboard-section-info[sections] in the dashboard.
|===============================

[[dashboard-input]]
=== DashboardInput
The `DashboardInput` entity contains information to create/update a
project dashboard.

[options="header",cols="1,^2,4"]
|=============================
|Field Name      ||Description
|`id`            |optional|
URL encoded ID of a dashboard to which this dashboard should link to.
|`commit_message`|optional|
Message that should be used to commit the change of the dashboard.
|=============================

[[dashboard-section-info]]
=== DashboardSectionInfo
The `DashboardSectionInfo` entity contains information about a section
in a dashboard.

[options="header",cols="1,6"]
|===========================
|Field Name    |Description
|`name`        |The title of the section.
|`query`       |The query of the section. +
Tokens such as `${project}` are not resolved.
|===========================

[[delete-branches-input]]
=== DeleteBranchesInput
The `DeleteBranchesInput` entity contains information about branches that should
be deleted.

[options="header",width="50%",cols="1,6"]
|==========================
|Field Name   |Description
|`branches`   |A list of branch names that identify the branches that should be
deleted.
|==========================

[[delete-tags-input]]
=== DeleteTagsInput
The `DeleteTagsInput` entity contains information about tags that should
be deleted.

[options="header",width="50%",cols="1,6"]
|==========================
|Field Name   |Description
|`tags`       |A list of tag names that identify the tags that should be
deleted.
|==========================

[[gc-input]]
=== GCInput
The `GCInput` entity contains information to run the Git garbage
collection.

[options="header",cols="1,^2,4"]
|=============================
|Field Name      ||Description
|`show_progress` |`false` if not set|
Whether progress information should be shown.
|`aggressive`    |`false` if not set|
Whether an aggressive garbage collection should be done.
|`async`         |`false` if not set|
Whether the garbage collection should run asynchronously.
|=============================

[[head-input]]
=== HeadInput
The `HeadInput` entity contains information for setting `HEAD` for a
project.

[options="header",cols="1,6"]
|============================
|Field Name      |Description
|`ref`           |
The ref to which `HEAD` should be set, the `refs/heads` prefix can be
omitted.
|============================

[[inherited-boolean-info]]
=== InheritedBooleanInfo
A boolean value that can also be inherited.

[options="header",cols="1,^2,4"]
|================================
|Field Name         ||Description
|`value`            ||
The effective boolean value.
|`configured_value` ||
The configured value, can be `TRUE`, `FALSE` or `INHERITED`.
|`inherited_value`  |optional|
The boolean value inherited from the parent. +
Not set if there is no parent.
|================================


[[label-type-info]]
=== LabelTypeInfo
The `LabelTypeInfo` entity contains metadata about the labels that a
project has.

[options="header",cols="1,^2,4"]
|================================
|Field Name         ||Description
|`values`           ||Map of the available values to their description.
|`default_value`    ||The default value of this label.
|================================

[[max-object-size-limit-info]]
=== MaxObjectSizeLimitInfo
The `MaxObjectSizeLimitInfo` entity contains information about the
link:config-gerrit.html#receive.maxObjectSizeLimit[max object size
limit] of a project.

[options="header",cols="1,^2,4"]
|===============================
|Field Name        ||Description
|`value`           |optional|
The effective value of the max object size limit as a formatted string. +
Not set if there is no limit for the object size.
|`configured_value`|optional|
The max object size limit that is configured on the project as a
formatted string. +
Not set if there is no limit for the object size configured on project
level.
|`inherited_value` |optional|
The max object size limit that is inherited as a formatted string. +
Not set if there is no global limit for the object size.
|===============================

[[project-access-input]]
=== ProjectAccessInput
The `ProjectAccessInput` describes changes that should be applied to a project
access config.

[options="header",cols="1,^2,4"]
|=============================
|Field Name          |        |Description
|`remove`            |optional|
A list of deductions to be applied to the project access as
link:rest-api-access.html#project-access-info[ProjectAccessInfo] entities.
|`add`               |optional|
A list of additions to be applied to the project access as
link:rest-api-access.html#project-access-info[ProjectAccessInfo] entities.
|`message`           |optional|
A commit message for this change.
|`parent`            |optional|
A new parent for the project to inherit from. Changing the parent project
requires administrative privileges.
|=============================

[[project-description-input]]
=== ProjectDescriptionInput
The `ProjectDescriptionInput` entity contains information for setting a
project description.

[options="header",cols="1,^2,4"]
|=============================
|Field Name      ||Description
|`description`   |optional|The project description. +
The project description will be deleted if not set.
|`commit_message`|optional|
Message that should be used to commit the change of the project
description in the `project.config` file to the `refs/meta/config`
branch.
|=============================

[[project-info]]
=== ProjectInfo
The `ProjectInfo` entity contains information about a project.

[options="header",cols="1,^2,4"]
|===========================
|Field Name    ||Description
|`id`          ||The URL encoded project name.
|`name`        |
not set if returned in a map where the project name is used as map key|
The name of the project.
|`parent`      |optional|
The name of the parent project. +
`?-<n>` if the parent project is not visible (`<n>` is a number which
is increased for each non-visible project).
|`description` |optional|The description of the project.
|`state`       |optional|`ACTIVE`, `READ_ONLY` or `HIDDEN`.
|`branches`    |optional|Map of branch names to HEAD revisions.
|`labels`      |optional|
Map of label names to
link:#label-type-info[LabelTypeInfo] entries.
This field is filled for link:#create-project[Create Project] and
link:#get-project[Get Project] calls.
|`web_links`   |optional|
Links to the project in external sites as a list of
link:rest-api-changes.html#web-link-info[WebLinkInfo] entries.
|===========================

[[project-input]]
=== ProjectInput
The `ProjectInput` entity contains information for the creation of
a new project.

[options="header",cols="1,^2,4"]
|=========================================
|Field Name                  ||Description
|`name`                      |optional|
The name of the project (not encoded). +
If set, must match the project name in the URL. +
If name ends with `.git` the suffix will be automatically removed.
|`parent`                    |optional|
The name of the parent project. +
If not set, the `All-Projects` project will be the parent project.
|`description`               |optional|The description of the project.
|`permissions_only`          |`false` if not set|
Whether a permission-only project should be created.
|`create_empty_commit`       |`false` if not set|
Whether an empty initial commit should be created.
|`submit_type`               |optional|
The submit type that should be set for the project
(`MERGE_IF_NECESSARY`, `REBASE_IF_NECESSARY`, `REBASE_ALWAYS`,
`FAST_FORWARD_ONLY`, `MERGE_ALWAYS`, `CHERRY_PICK`). +
If not set, `MERGE_IF_NECESSARY` is set as submit type unless
link:config-gerrit.html#repository.name.defaultSubmitType[
repository.<name>.defaultSubmitType] is set to a different value.
|`branches`                  |optional|
A list of branches that should be initially created. +
For the branch names the `refs/heads/` prefix can be omitted.
|`owners`                    |optional|
A list of groups that should be assigned as project owner. +
Each group in the list must be specified as
link:rest-api-groups.html#group-id[group-id]. +
If not set, the link:config-gerrit.html#repository.name.ownerGroup[
groups that are configured as default owners] are set as project
owners.
|`use_contributor_agreements`                  |`INHERIT` if not set|
Whether contributor agreements should be used for the project  (`TRUE`,
`FALSE`, `INHERIT`).
|`use_signed_off_by`                           |`INHERIT` if not set|
Whether the usage of 'Signed-Off-By' footers is required for the
project (`TRUE`, `FALSE`, `INHERIT`).
|`create_new_change_for_all_not_in_target`     |`INHERIT` if not set|
Whether a new change is created for every commit not in target branch
for the project (`TRUE`, `FALSE`, `INHERIT`).
|`use_content_merge`                           |`INHERIT` if not set|
Whether content merge should be enabled for the project (`TRUE`,
`FALSE`, `INHERIT`). +
`FALSE`, if the `submit_type` is `FAST_FORWARD_ONLY`.
|`require_change_id`                           |`INHERIT` if not set|
Whether the usage of Change-Ids is required for the project (`TRUE`,
`FALSE`, `INHERIT`).
|`max_object_size_limit`     |optional|
Max allowed Git object size for this project.
Common unit suffixes of 'k', 'm', or 'g' are supported.
|`plugin_config_values`      |optional|
Plugin configuration values as map which maps the plugin name to a map
of parameter names to values.
|=========================================

[[project-parent-input]]
=== ProjectParentInput
The `ProjectParentInput` entity contains information for setting a
project parent.

[options="header",cols="1,^2,4"]
|=============================
|Field Name      ||Description
|`parent`        ||The name of the parent project.
|`commit_message`|optional|
Message that should be used to commit the change of the project parent
in the `project.config` file to the `refs/meta/config` branch.
|=============================

[[reflog-entry-info]]
=== ReflogEntryInfo
The `ReflogEntryInfo` entity describes an entry in a reflog.

[options="header",cols="1,6"]
|============================
|Field Name      |Description
|`old_id`        |The old commit ID.
|`new_id`        |The new commit ID.
|`who`           |
The user performing the change as a
link:rest-api-changes.html#git-person-info[GitPersonInfo] entity.
|`comment`       |Comment of the reflog entry.
|============================

[[repository-statistics-info]]
=== RepositoryStatisticsInfo
The `RepositoryStatisticsInfo` entity contains information about
statistics of a Git repository.

[options="header",cols="1,6"]
|======================================
|Field Name                |Description
|`number_of_loose_objects` |Number of loose objects.
|`number_of_loose_refs`    |Number of loose refs.
|`number_of_pack_files`    |Number of pack files.
|`number_of_packed_objects`|Number of packed objects.
|`number_of_packed_refs`   |Number of packed refs.
|`size_of_loose_objects`   |Size of loose objects in bytes.
|`size_of_packed_objects`  |Size of packed objects in bytes.
|======================================

[[tag-info]]
=== TagInfo
The `TagInfo` entity contains information about a tag.

[options="header",cols="1,^2,4"]
|=========================
|Field Name  ||Description
|`ref`       ||The ref of the tag.
|`revision`  ||For lightweight tags, the revision of the commit to which the tag
points. For annotated tags, the revision of the tag object.
|`object`|Only set for annotated tags.|The revision of the object to which the
tag points.
|`message`|Only set for annotated tags.|The tag message. For signed tags, includes
the signature.
|`tagger`|Only set for annotated tags, if present in the tag.|The tagger as a
link:rest-api-changes.html#git-person-info[GitPersonInfo] entity.
|`can_delete`|`false` if not set|
Whether the calling user can delete this tag.
|`web_links` |optional|
Links to the tag in external sites as a list of
link:rest-api-changes.html#web-link-info[WebLinkInfo] entries.
|=========================

[[tag-input]]
=== TagInput

The `TagInput` entity contains information for creating a tag.

[options="header",cols="1,^2,4"]
|=========================
|Field Name  ||Description
|`ref`       ||The name of the tag. The leading `refs/tags/` is optional.
|`revision`  |optional|The revision to which the tag should point. If not
specified, the project's `HEAD` will be used.
|`message`   |optional|The tag message. When set, the tag will be created
as an annotated tag.
|=========================


[[theme-info]]
=== ThemeInfo
The `ThemeInfo` entity describes a theme.

[options="header",cols="1,^2,4"]
|=============================
|Field Name      ||Description
|`css`           |optional|
The path to the `GerritSite.css` file.
|`header`        |optional|
The path to the `GerritSiteHeader.html` file.
|`footer`        |optional|
The path to the `GerritSiteFooter.html` file.
|=============================

----

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

SEARCHBOX
---------
