4610fcad4e
* stable-2.15: Polygerrit: Always create new changes as WIP ElasticIndexIT: replace member with local variable Elasticsearch tests: remove password duplication Fix call to the fail skylark global in junit.bzl Set version to 2.14.11-SNAPSHOT Set version to 2.14.10 AbstractQueryChangesTest: Add byMessageSubstring test AbstractQueryChangesTest: Expand byTopic with more 'intopic' tests Elasticsearch: Add char analyzer to ensure consistency of query results Elasticsearch: remove overridden build assignment Elasticsearch: run no other test at the same time ElasticVersionTest: run it through bazel as well Elasticsearch: cover V5 and flaky V6 tests -for CI Split Elasticsearch query tests into separate rules dev-contributing: Document that we format .bzl files with buildifier Add account setting for defaulting new changes to WIP Add project setting for defaulting new changes to WIP Apply buildifier to .bzl files. Update Bower to 1.8.2 Bump commons-io version to 2.2 Add missing elasticsearch dependency in pgm tests Highlight.js: style gr-syntax-name as gr-syntax-keyword Elasticsearch: remove unnecessary test build deps Clarify behavior of "Ignore" feature in REST API documentation Expose commons-compress in plugin API Bump commons-io version to 2.2 Change-Id: I99edb118d193ebe9150f89a902a1407e69711cfc
3487 lines
89 KiB
Plaintext
3487 lines
89 KiB
Plaintext
= 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"
|
|
}
|
|
}
|
|
----
|
|
|
|
All::
|
|
Get all projects, including those whose state is "HIDDEN". May not be used
|
|
together with the `state` option.
|
|
+
|
|
.Request
|
|
----
|
|
GET /projects/?all HTTP/1.0
|
|
----
|
|
+
|
|
.Response
|
|
----
|
|
HTTP/1.1 200 OK
|
|
Content-Disposition: attachment
|
|
Content-Type: application/json; charset=UTF-8
|
|
|
|
)]}'
|
|
{
|
|
"All-Projects" {
|
|
"id": "All-Projects",
|
|
"state": "ACTIVE"
|
|
},
|
|
"some-other-project": {
|
|
"id": "some-other-project",
|
|
"state": "HIDDEN"
|
|
}
|
|
}
|
|
----
|
|
|
|
State(s)::
|
|
Get all projects with the given state. May not be used together with the
|
|
`all` option.
|
|
+
|
|
.Request
|
|
----
|
|
GET /projects/?state=HIDDEN 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",
|
|
"state": "HIDDEN"
|
|
}
|
|
}
|
|
----
|
|
|
|
[[query-projects]]
|
|
=== Query Projects
|
|
--
|
|
'GET /projects/?query=<query>'
|
|
--
|
|
|
|
Queries projects visible to the caller. The
|
|
link:user-search-projects.html#_search_operators[query string] must be
|
|
provided by the `query` parameter. The `start` and `limit` parameters
|
|
can be used to skip/limit results.
|
|
|
|
As result a list of link:#project-info[ProjectInfo] entities is returned.
|
|
|
|
.Request
|
|
----
|
|
GET /projects/?query=name:test HTTP/1.0
|
|
----
|
|
|
|
.Response
|
|
----
|
|
HTTP/1.1 200 OK
|
|
Content-Disposition: attachment
|
|
Content-Type: application/json; charset=UTF-8
|
|
|
|
)]}'
|
|
{
|
|
"test": {
|
|
"id": "test",
|
|
"description": "\u003chtml\u003e is escaped"
|
|
}
|
|
}
|
|
----
|
|
|
|
[[project-query-limit]]
|
|
==== Project Limit
|
|
The `/projects/?query=<query>` URL also accepts a limit integer in the
|
|
`limit` parameter. This limits the results to `limit` projects.
|
|
|
|
Query the first 25 projects in project list.
|
|
----
|
|
GET /projects/?query=<query>&limit=25 HTTP/1.0
|
|
----
|
|
|
|
The `/projects/` URL also accepts a start integer in the `start`
|
|
parameter. The results will skip `start` groups from project list.
|
|
|
|
Query 25 projects starting from index 50.
|
|
----
|
|
GET /groups/?query=<query>&limit=25&start=50 HTTP/1.0
|
|
----
|
|
|
|
[[project-query-options]]
|
|
==== Project Options
|
|
Additional fields can be obtained by adding `o` parameters. Each option
|
|
requires more lookups and slows down the query response time to the
|
|
client so they are generally disabled by default. The supported fields
|
|
are described in the context of the link:#project-options[List Projects]
|
|
REST endpoint.
|
|
|
|
[[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": "INHERIT",
|
|
"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": "INHERIT",
|
|
"default_submit_type": {
|
|
"value": "MERGE_IF_NECESSARY",
|
|
"configured_value": "INHERIT",
|
|
"inherited_value": "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",
|
|
"default_submit_type": {
|
|
"value": "REBASE_IF_NECESSARY",
|
|
"configured_value": "INHERIT",
|
|
"inherited_value": "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:rest-api-access.html#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:rest-api-access.html#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_viewAccess[View Access]
|
|
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 access of the given user for the given project,
|
|
project-ref, or project-permission-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
|
|
}
|
|
----
|
|
|
|
This endpoint can also be accessed as a GET request, using the query
|
|
parameters `perm`, `account` and `ref`, for example:
|
|
|
|
----
|
|
GET /projects/MyProject/check.access?account=10024&ref=refs/heads/secret/bla
|
|
----
|
|
|
|
|
|
[[index]]
|
|
=== Index project
|
|
|
|
Adds or updates the current project (and children, if specified) in the secondary index.
|
|
The indexing task is executed asynchronously in background and this command returns
|
|
immediately if `async` is specified in the input.
|
|
|
|
As an input, a link:#index-project-input[IndexProjectInput] entity can be provided.
|
|
|
|
.Request
|
|
----
|
|
POST /projects/MyProject/index HTTP/1.0
|
|
Content-Type: application/json; charset=UTF-8
|
|
|
|
{
|
|
"index_children": "true"
|
|
"async": "true"
|
|
}
|
|
----
|
|
|
|
.Response
|
|
----
|
|
HTTP/1.1 202 Accepted
|
|
Content-Disposition: attachment
|
|
----
|
|
|
|
[[index.changes]]
|
|
=== 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.changes 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",
|
|
}
|
|
]
|
|
----
|
|
|
|
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",
|
|
}
|
|
]
|
|
----
|
|
|
|
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.
|
|
|
|
To cherry pick a change revision, see link:rest-api-changes.html#cherry-pick[CherryPick].
|
|
|
|
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
|
|
|`permission` |optional|The ref permission for which to
|
|
check. This defaults to `read`. If given, it `ref` must be given too.
|
|
|=========================================
|
|
|
|
[[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`|not set if `false`|
|
|
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.
|
|
|`work_in_progress_by_default`||
|
|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
|
|
all new changes are set as work-in-progress 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.
|
|
|`default_submit_type` ||
|
|
link:#submit-type-info[SubmitTypeInfo] that describes the default submit type of
|
|
the project, when not overridden at the change level.
|
|
|`submit_type` ||
|
|
Deprecated; equivalent to link:#submit-type-info[`value`] in
|
|
`default_submit_type`.
|
|
|`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
|
|
|`reject_empty_commit` |optional|
|
|
link:#inherited-boolean-info[InheritedBooleanInfo] that tells whether
|
|
empty commits should be rejected when a change is merged.
|
|
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.
|
|
|`reject_empty_commit` |optional|
|
|
Whether empty commits should be rejected when a change is merged.
|
|
Can be `TRUE`, `FALSE` or `INHERIT`. +
|
|
If not set, this setting is not updated.
|
|
|======================================================
|
|
|
|
[[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.
|
|
|============================
|
|
|
|
[[index-project-input]]
|
|
=== IndexProjectInput
|
|
The `IndexProjectInput` contains parameters for indexing a project.
|
|
|
|
[options="header",cols="1,^2,4"]
|
|
|================================
|
|
|Field Name ||Description
|
|
|`index_children` ||
|
|
If children should be indexed recursively.
|
|
|`async` ||
|
|
If projects should be indexed asynchronously.
|
|
|================================
|
|
|
|
[[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.
|
|
|`reject_empty_commit` |optional|
|
|
Whether empty commits should be rejected when a change is merged
|
|
(`TRUE`, `FALSE`, `INHERIT`).
|
|
|=========================================
|
|
|
|
[[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.
|
|
|======================================
|
|
|
|
[[submit-type-info]]
|
|
=== SubmitTypeInfo
|
|
Information about the link:project-configuration.html#submit_type[default submit
|
|
type of a project], taking into account project inheritance.
|
|
|
|
Valid values for each field are `MERGE_IF_NECESSARY`, `FAST_FORWARD_ONLY`,
|
|
`REBASE_IF_NECESSARY`, `REBASE_ALWAYS`, `MERGE_ALWAYS` or `CHERRY_PICK`, plus
|
|
`INHERIT` where applicable.
|
|
|
|
[options="header",cols="1,6"]
|
|
|===============================
|
|
|Field Name |Description
|
|
|`value` |
|
|
The effective submit type value. Never `INHERIT`.
|
|
|`configured_value` |
|
|
The configured value, can be one of the submit types, or `INHERIT` to inherit
|
|
from the parent project.
|
|
|`inherited_value` |
|
|
The effective value that would be inherited from the parent. Never `INHERIT`.
|
|
|===============================
|
|
|
|
[[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.
|
|
|`created`|optional|The link:rest-api.html#timestamp[timestamp] of when the tag
|
|
was created. For annotated and signed tags, this is the timestamp of the tag object
|
|
and is the same as the `date` field in the `tagger`. For lightweight tags, it is
|
|
the commit timestamp of the commit to which the tag points, when the object is a
|
|
commit. It is not set when the object is any other type.
|
|
|`can_delete`|not set if `false`|
|
|
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
|
|
---------
|