This page describes the project related REST endpoints. Please also take note of the general information on the REST API.
GET /projects/
Lists the projects accessible by the caller. This is the same as using the 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 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"
}
}
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"
}
}
Prefix(p)
Limit the results to those projects that start with the specified prefix.
The match is case sensitive. May not be used together with m or r.
List all projects that start with platform/:
Request.
GET /projects/?p=platform%2F HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"platform/drivers": {
"id": "platform%2Fdrivers"
},
"platform/tools": {
"id": "platform%2Ftools"
}
}
E.g. this feature can be used by suggestion client UI’s to limit results.
Regex(r)
Limit the results to those projects that match the specified regex.
Boundary matchers ^ and $ are implicit. For example: the regex test.* will match any projects that start with test and regex .*test will match any project that end with test.
The match is case sensitive. May not be used together with m or p.
List all projects that match regex test.*project:
Request.
GET /projects/?r=test.*project HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"test/some-project": {
"id": "test%2Fsome-project"
},
"test/some-other-project": {
"id": "test%2Fsome-other-project"
}
}
Skip(S)
Skip the given number of projects from the beginning of the list.
Query the second project in the project list:
Request.
GET /projects/?n=1&S=1 HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"some-other-project": {
"id": "some-other-project"
}
}
Substring(m)
Limit the results to those projects that match the specified substring.
The match is case insensitive. May not be used together with r or p.
List all projects that match substring test/:
Request.
GET /projects/?m=test%2F HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"test/some-project": {
"id": "test%2Fsome-project"
},
"some-path/test/some-other-project": {
"id": "some-path%2Ftest%2Fsome-other-project"
}
}
Tree(t)
Get projects inheritance in a tree-like format. This option does not work together with the branch option.
Get all the projects with tree option:
Request.
GET /projects/?t HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"All-Projects" {
"id": "All-Projects"
},
"child-project": {
"id": "child-project",
"parent":"parent-project"
},
"parent-project": {
"id": "parent-project",
"parent":"All-Projects"
}
}
Type(type)
Get projects with specified type: ALL, CODE, PERMISSIONS.
Get all the projects of type PERMISSIONS:
Request.
GET /projects/?type=PERMISSIONS HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"All-Projects" {
"id": "All-Projects"
},
"some-parent-project": {
"id": "some-parent-project"
}
}
GET /projects/{project-name}
Retrieves a project.
Request.
GET /projects/plugins%2Freplication HTTP/1.0
As response a 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
}
}
}
PUT /projects/{project-name}
Creates a new project.
In the request body additional data for the project can be provided as ProjectInput.
Request.
PUT /projects/MyProject HTTP/1.0
Content-Type: application/json; charset=UTF-8
{
"description": "This is a demo project.",
"submit_type": "CHERRY_PICK",
"owners": [
"MyProject-Owners"
]
}
As response the 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 /projects/{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.
PUT /projects/{project-name}/description
Sets the description of a project.
The new project description must be provided in the request body inside a 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 /projects/{project-name}/description
Deletes the description of a project.
The request body does not need to include a 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 PUT to delete the description.
Request.
DELETE /projects/plugins%2Freplication/description HTTP/1.0
Response.
HTTP/1.1 204 No Content
GET /projects/{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"
PUT /projects/{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 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 /projects/{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"
PUT /projects/{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 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 /projects/{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 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 /projects/{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 ConfigInfo entity is returned that describes the project configuration. Some fields are only visible to users that have read access to refs/meta/config.
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"description": "demo project",
"use_contributor_agreements": {
"value": true,
"configured_value": "TRUE",
"inherited_value": false
},
"use_content_merge": {
"value": true,
"configured_value": "INHERIT",
"inherited_value": true
},
"use_signed_off_by": {
"value": false,
"configured_value": "INHERIT",
"inherited_value": false
},
"create_new_change_for_all_not_in_target": {
"value": false,
"configured_value": "INHERIT",
"inherited_value": false
},
"require_change_id": {
"value": false,
"configured_value": "FALSE",
"inherited_value": true
},
"max_object_size_limit": {
"value": "15m",
"configured_value": "15m",
"inherited_value": "20m"
},
"submit_type": "MERGE_IF_NECESSARY",
"state": "ACTIVE",
"commentlinks": {},
"plugin_config": {
"helloworld": {
"language": {
"display_name": "Preferred Language",
"type": "STRING",
"value": "en"
}
}
},
"actions": {
"cookbook~hello-project": {
"method": "POST",
"label": "Say hello",
"title": "Say hello in different languages",
"enabled": true
}
}
}
PUT /projects/{project-name}/config
Sets the configuration of a project.
The new configuration must be provided in the request body as a 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 ConfigInfo entity.
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
{
"use_contributor_agreements": {
"value": false,
"configured_value": "FALSE",
"inherited_value": false
},
"use_content_merge": {
"value": true,
"configured_value": "INHERIT",
"inherited_value": true
},
"use_signed_off_by": {
"value": false,
"configured_value": "INHERIT",
"inherited_value": false
},
"create_new_change_for_all_not_in_target": {
"value": true,
"configured_value": "INHERIT",
"inherited_value": false
},
"require_change_id": {
"value": true,
"configured_value": "TRUE",
"inherited_value": true
},
"enable_signed_push": {
"value": true,
"configured_value": "INHERIT",
"inherited_value": false
},
"require_signed_push": {
"value": false,
"configured_value": "INHERIT",
"inherited_value": false
},
"reject_implicit_merges": {
"value": false,
"configured_value": "INHERIT",
"inherited_value": false
},
"max_object_size_limit": {
"value": "10m",
"configured_value": "10m",
"inherited_value": "20m"
},
"submit_type": "REBASE_IF_NECESSARY",
"state": "ACTIVE",
"commentlinks": {}
}
POST /projects/{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 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.
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 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
PUT /projects/{project-name}/ban
Marks commits as banned for the project. If a commit is banned Gerrit rejects every push that includes this commit with 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 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 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 /projects/{project-name}/access
Lists the access rights for a single project.
As result a 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"
}
}
}
POST /projects/{project-name}/access
Sets access rights for the project using the diff schema provided by 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 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"
}
}
}
'PUT /projects/{project-name}/access:review
Sets access rights for the project using the diff schema provided by ProjectAccessInput
This takes the same input as Update Access Rights, but creates a pending change for review. Like Create Change, it returns a 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
}
}
POST /projects/MyProject/check.access
Runs access checks for other users. This requires the Administrate Server global capability.
Input for the access checks that should be run must be provided in the request body inside a 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 AccessCheckInfo entity detailing the read access of the given user for the given project (or project-ref combination).
Response.
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
)]}'
{
"message": "user Kristen Burns \u003cKristen.Burns@gerritcodereview.com\u003e (1000098) cannot see ref refs/heads/secret/bla in project MyProject",
"status": 403
}
Adds or updates all the changes belonging to a project in the secondary index. The indexing task is executed asynchronously in background, so this command returns immediately.
Request.
POST /projects/MyProject/index HTTP/1.0
Response.
HTTP/1.1 202 Accepted Content-Disposition: attachment
GET /projects/{project-name}/branches/
List the branches of a project.
As result a list of 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
}
]
Limit(n)
Limit the number of branches to be included in the results.
Request.
GET /projects/testproject/branches?n=1 HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
[
{
"ref": "HEAD",
"revision": "master",
"can_delete": false
}
]
Skip(S)
Skip the given number of branches from the beginning of the list.
Request.
GET /projects/testproject/branches?n=1&s=0 HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
[
{
"ref": "HEAD",
"revision": "master",
"can_delete": false
}
]
Substring(m)
Limit the results to those branches that match the specified substring.
The match is case insensitive. May not be used together with r.
List all branches that match substring test:
Request.
GET /projects/testproject/branches?m=test HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
[
{
"ref": "refs/heads/test1",
"revision": "9c9d08a438e55e52f33b608415e6dddd9b18550d",
"can_delete": true
}
]
Regex(r)
Limit the results to those branches that match the specified regex. Boundary matchers ^ and $ are implicit. For example: the regex t* will match any branches that start with t and regex *t will match any branches that end with t.
The match is case sensitive. May not be used together with m.
List all branches that match regex t.*1:
Request.
GET /projects/testproject/branches?r=t.*1 HTTP/1.0
Response.
HTTP/1.1 200 OK
Content-Disposition: attachment
Content-Type: application/json; charset=UTF-8
)]}'
[
{
"ref": "refs/heads/test1",
"revision": "9c9d08a438e55e52f33b608415e6dddd9b18550d",
"can_delete": true
}
]
GET /projects/{project-name}/branches/{branch-id}
Retrieves a branch of a project.
Request.
GET /projects/work%2Fmy-project/branches/master HTTP/1.0
As response a 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"
}
PUT /projects/{project-name}/branches/{branch-id}
Creates a new branch.
In the request body additional data for the branch can be provided as BranchInput.
Request.
PUT /projects/MyProject/branches/stable HTTP/1.0
Content-Type: application/json; charset=UTF-8
{
"revision": "76016386a0d8ecc7b6be212424978bb45959d668"
}
As response a 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 /projects/{project-name}/branches/{branch-id}
Deletes a branch.
Request.
DELETE /projects/MyProject/branches/stable HTTP/1.0
Response.
HTTP/1.1 204 No Content
POST /projects/{project-name}/branches:delete
Delete one or more branches.
The branches to be deleted must be provided in the request body as a 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 /projects/{project-name}/branches/{branch-id}/files/{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 /projects/{project-name}/branches/{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 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 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 /projects/{project-name}/branches/{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 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
GET /projects/{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 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 /projects/{project-name}/children/{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 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"
}
PUT /projects/{project-name}/tags/{tag-id}
Create a new tag on the project.
In the request body additional data for the tag can be provided as 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 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"
}
GET /projects/{project-name}/tags/
List the tags of a project.
As result a list of 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
}
}
]
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 /projects/{project-name}/tags/{tag-id}
Retrieves a tag of a project.
Request.
GET /projects/work%2Fmy-project/tags/v1.0 HTTP/1.0
As response a 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 /projects/{project-name}/tags/{tag-id}
Deletes a tag.
Request.
DELETE /projects/MyProject/tags/v1.0 HTTP/1.0
Response.
HTTP/1.1 204 No Content
POST /projects/{project-name}/tags:delete
Delete one or more tags.
The tags to be deleted must be provided in the request body as a 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.
GET /projects/{project-name}/commits/{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 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 /projects/{project-name}/commits/{commit-id}/in
Retrieves the branches and tags in which a change is included. As result an 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 /projects/{project-name}/commits/{commit-id}/files/{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...
POST /projects/{project-name}/commits/{commit-id}/cherrypick
Cherry-picks a commit of a project to a destination branch.
The destination branch must be provided in the request body inside a 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 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"
}
}
GET /projects/{project-name}/dashboards/
List custom dashboards for a project.
As result a list of 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::/projects/All-Projects/dashboards/
GET /projects/{project-name}/dashboards/{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 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"
}
]
}
PUT /projects/{project-name}/dashboards/{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 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 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 /projects/{project-name}/dashboards/{dashboard-id}
Deletes a project dashboard.
Currently only supported for the default dashboard.
The request body does not need to include a 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
The name of a branch or HEAD. The prefix refs/heads/ can be omitted.
Commit ID.
The name of a tag. The prefix refs/tags/ can be omitted.
The ID of a dashboard in the format <ref>:<path>.
A special dashboard ID is default which represents the default dashboard of a project.
The name of the project.
If the name ends with .git, the suffix will be automatically removed.
The AccessCheckInfo entity is the result of an access check.
The AccessCheckInput entity is either an account or (account, ref) tuple for which we want to check access.
The BanInput entity contains information for banning commits in a project.
The BanResultInfo entity describes the result of banning commits.
The BranchInfo entity contains information about a branch.
The BranchInput entity contains information for the creation of a new branch.
The ConfigInfo entity contains information about the effective project configuration.
The ConfigInput entity describes a new project configuration.
The ConfigParameterInfo entity describes a project configuration parameter.
The DashboardInfo entity contains information about a project dashboard.
The DashboardInput entity contains information to create/update a project dashboard.
The DashboardSectionInfo entity contains information about a section in a dashboard.
The DeleteBranchesInput entity contains information about branches that should be deleted.
The DeleteTagsInput entity contains information about tags that should be deleted.
The GCInput entity contains information to run the Git garbage collection.
The HeadInput entity contains information for setting HEAD for a project.
A boolean value that can also be inherited.
The LabelTypeInfo entity contains metadata about the labels that a project has.
The MaxObjectSizeLimitInfo entity contains information about the max object size limit of a project.
The ProjectAccessInput describes changes that should be applied to a project access config.
The ProjectDescriptionInput entity contains information for setting a project description.
The ProjectInfo entity contains information about a project.
The ProjectInput entity contains information for the creation of a new project.
The ProjectParentInput entity contains information for setting a project parent.
The ReflogEntryInfo entity describes an entry in a reflog.
The RepositoryStatisticsInfo entity contains information about statistics of a Git repository.
The TagInfo entity contains information about a tag.
The TagInput entity contains information for creating a tag.
The ThemeInfo entity describes a theme.
GERRIT
Part of Gerrit Code Review