blob: 879a35e3185aa1164ffca68e15425c13fc65e8c1 [file] [log] [blame]
Edwin Kempin2eebd142013-03-06 15:28:34 +01001Gerrit Code Review - /projects/ REST API
2========================================
Edwin Kempind0a63922013-01-23 16:32:59 +01003
4This page describes the project related REST endpoints.
5Please also take note of the general information on the
6link:rest-api.html[REST API].
7
8Endpoints
9---------
10
Edwin Kempinc3fe3cb2013-02-13 15:09:23 +010011[[project-endpoints]]
12Project Endpoints
13-----------------
14
Edwin Kempin76202742013-02-15 13:51:50 +010015[[list-projects]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +010016List Projects
17~~~~~~~~~~~~~
18[verse]
19'GET /projects/'
20
Edwin Kempind0a63922013-01-23 16:32:59 +010021Lists the projects accessible by the caller. This is the same as
22using the link:cmd-ls-projects.html[ls-projects] command over SSH,
23and accepts the same options as query parameters.
24
Edwin Kempin51a6dc92013-02-04 15:43:59 +010025As result a map is returned that maps the project names to
26link:#project-info[ProjectInfo] entries. The entries in the map are sorted
27by project name.
28
Edwin Kempin37440832013-02-06 11:36:00 +010029.Request
Edwin Kempind0a63922013-01-23 16:32:59 +010030----
31 GET /projects/?d HTTP/1.0
Edwin Kempin37440832013-02-06 11:36:00 +010032----
Edwin Kempind0a63922013-01-23 16:32:59 +010033
Edwin Kempin37440832013-02-06 11:36:00 +010034.Response
35----
Edwin Kempind0a63922013-01-23 16:32:59 +010036 HTTP/1.1 200 OK
37 Content-Disposition: attachment
38 Content-Type: application/json;charset=UTF-8
39
40 )]}'
41 {
42 "external/bison": {
43 "kind": "gerritcodereview#project",
44 "id": "external%2Fbison",
45 "description": "GNU parser generator"
46 },
47 "external/gcc": {
48 "kind": "gerritcodereview#project",
49 "id": "external%2Fgcc",
50 },
51 "external/openssl": {
52 "kind": "gerritcodereview#project",
53 "id": "external%2Fopenssl",
54 "description": "encryption\ncrypto routines"
55 },
56 "test": {
57 "kind": "gerritcodereview#project",
58 "id": "test",
59 "description": "\u003chtml\u003e is escaped"
60 }
61 }
62----
63
Edwin Kempina64c4b92013-01-23 11:30:40 +010064.Get all projects with their description
65****
66get::/projects/?d
67****
68
Edwin Kempind0a63922013-01-23 16:32:59 +010069[[suggest-projects]]
70The `/projects/` URL also accepts a prefix string in the `p` parameter.
71This limits the results to those projects that start with the specified
72prefix.
73List all projects that start with `platform/`:
Edwin Kempin37440832013-02-06 11:36:00 +010074
75.Request
Edwin Kempind0a63922013-01-23 16:32:59 +010076----
77 GET /projects/?p=platform%2F HTTP/1.0
Edwin Kempin37440832013-02-06 11:36:00 +010078----
Edwin Kempind0a63922013-01-23 16:32:59 +010079
Edwin Kempin37440832013-02-06 11:36:00 +010080.Response
81----
Edwin Kempind0a63922013-01-23 16:32:59 +010082 HTTP/1.1 200 OK
83 Content-Disposition: attachment
84 Content-Type: application/json;charset=UTF-8
85
86 )]}'
87 {
88 "platform/drivers": {
89 "kind": "gerritcodereview#project",
90 "id": "platform%2Fdrivers",
91 },
92 "platform/tools": {
93 "kind": "gerritcodereview#project",
94 "id": "platform%2Ftools",
95 }
96 }
97----
98E.g. this feature can be used by suggestion client UI's to limit results.
99
Edwin Kempin5c544e22013-03-06 13:35:45 +0100100[[get-project]]
101Get Project
102~~~~~~~~~~~
103[verse]
104'GET /projects/link:#project-name[\{project-name\}]'
105
106Retrieves a project.
107
108.Request
109----
110 GET /projects/plugins%2Freplication HTTP/1.0
111----
112
113As response a link:#project-info[ProjectInfo] entity is returned that
114describes the project.
115
116.Response
117----
118 HTTP/1.1 200 OK
119 Content-Disposition: attachment
120 Content-Type: application/json;charset=UTF-8
121
122 )]}'
123 {
124 "kind": "gerritcodereview#project",
125 "id": "plugins%2Freplication",
126 "name": "plugins/replication",
127 "parent": "Public-Plugins",
128 "description": "Copies to other servers using the Git protocol"
129 }
130----
131
Bruce Zu798ea122013-02-18 16:55:43 +0800132[[create-project]]
133Create Project
134~~~~~~~~~~~~~~
135[verse]
136'PUT /projects/link:#project-name[\{project-name\}]'
137
138Creates a new project.
139
140In the request body additional data for the project can be provided as
141link:#project-input[ProjectInput].
142
143.Request
144----
145 PUT /projects/MyProject HTTP/1.0
146 Content-Type: application/json;charset=UTF-8
147
148 {
149 "description": "This is a demo project.",
150 "submit_type": "CHERRY_PICK",
151 "owners": [
152 "MyProject-Owners"
153 ]
154 }
155----
156
157As response the link:#project-info[ProjectInfo] entity is returned that
158describes the created project.
159
160.Response
161----
162 HTTP/1.1 201 Created
163 Content-Disposition: attachment
164 Content-Type: application/json;charset=UTF-8
165
166 )]}'
167 {
168 "kind": "gerritcodereview#project",
169 "id": "MyProject",
170 "name": "MyProject",
171 "parent": "All-Projects",
172 "description": "This is a demo project."
173 }
174----
175
Edwin Kempin57f303c2013-02-13 15:52:22 +0100176[[get-project-description]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100177Get Project Description
178~~~~~~~~~~~~~~~~~~~~~~~
179[verse]
180'GET /projects/link:#project-name[\{project-name\}]/description'
181
Edwin Kempin57f303c2013-02-13 15:52:22 +0100182Retrieves the description of a project.
183
184.Request
185----
186 GET /projects/plugins%2Freplication/description HTTP/1.0
187----
188
189.Response
190----
191 HTTP/1.1 200 OK
192 Content-Disposition: attachment
193 Content-Type: application/json;charset=UTF-8
194
195 )]}'
196 "Copies to other servers using the Git protocol"
197----
198
Edwin Kempinefec4492013-02-22 10:09:23 +0100199If the project does not have a description an empty string is returned.
200
Edwin Kempin57f303c2013-02-13 15:52:22 +0100201[[set-project-description]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100202Set Project Description
203~~~~~~~~~~~~~~~~~~~~~~~
204[verse]
205'PUT /projects/link:#project-name[\{project-name\}]/description'
206
Edwin Kempin57f303c2013-02-13 15:52:22 +0100207Sets the description of a project.
208
209The new project description must be provided in the request body inside
210a link:#project-description-input[ProjectDescriptionInput] entity.
211
212.Request
213----
214 PUT /projects/plugins%2Freplication/description HTTP/1.0
215 Content-Type: application/json;charset=UTF-8
216
217 {
218 "description": "Plugin for Gerrit that handles the replication.",
219 "commit_message": "Update the project description"
220 }
221----
222
223As response the new project description is returned.
224
225.Response
226----
227 HTTP/1.1 200 OK
228 Content-Disposition: attachment
229 Content-Type: application/json;charset=UTF-8
230
231 )]}'
232 "Plugin for Gerrit that handles the replication."
233----
234
Edwin Kempin114ab162013-02-28 09:25:37 +0100235If the description was deleted the response is "`204 No Content`".
236
Edwin Kempin57f303c2013-02-13 15:52:22 +0100237[[delete-project-description]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100238Delete Project Description
239~~~~~~~~~~~~~~~~~~~~~~~~~~
240[verse]
241'DELETE /projects/link:#project-name[\{project-name\}]/description'
242
Edwin Kempin57f303c2013-02-13 15:52:22 +0100243Deletes the description of a project.
244
Edwin Kempinefec4492013-02-22 10:09:23 +0100245The request body does not need to include a
246link:#project-description-input[ProjectDescriptionInput] entity if no
247commit message is specified.
Edwin Kempin57f303c2013-02-13 15:52:22 +0100248
Edwin Kempinefec4492013-02-22 10:09:23 +0100249Please note that some proxies prohibit request bodies for DELETE
Edwin Kempin57f303c2013-02-13 15:52:22 +0100250requests. In this case, if you want to specify a commit message, use
251link:#set-project-description[PUT] to delete the description.
252
253.Request
254----
255 DELETE /projects/plugins%2Freplication/description HTTP/1.0
256----
257
258.Response
259----
260 HTTP/1.1 204 No Content
261----
262
Edwin Kempinecad88c2013-02-14 12:09:44 +0100263[[get-project-parent]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100264Get Project Parent
265~~~~~~~~~~~~~~~~~~
266[verse]
267'GET /projects/link:#project-name[\{project-name\}]/parent'
268
Edwin Kempinecad88c2013-02-14 12:09:44 +0100269Retrieves the name of a project's parent project. For the
270`All-Projects` root project an empty string is returned.
271
272.Request
273----
274 GET /projects/plugins%2Freplication/parent HTTP/1.0
275----
276
277.Response
278----
279 HTTP/1.1 200 OK
280 Content-Disposition: attachment
281 Content-Type: application/json;charset=UTF-8
282
283 )]}'
284 "All-Projects"
285----
286
287[[set-project-parent]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100288Set Project Parent
289~~~~~~~~~~~~~~~~~~
290[verse]
291'PUT /projects/link:#project-name[\{project-name\}]/parent'
292
Edwin Kempinecad88c2013-02-14 12:09:44 +0100293Sets the parent project for a project.
294
295The new name of the parent project must be provided in the request body
296inside a link:#project-parent-input[ProjectParentInput] entity.
297
298.Request
299----
300 PUT /projects/plugins%2Freplication/parent HTTP/1.0
301 Content-Type: application/json;charset=UTF-8
302
303 {
304 "parent": "Public-Plugins",
305 "commit_message": "Update the project parent"
306 }
307----
308
309As response the new parent project name is returned.
310
311.Response
312----
313 HTTP/1.1 200 OK
314 Content-Disposition: attachment
315 Content-Type: application/json;charset=UTF-8
316
317 )]}'
318 "Public-Plugins"
319----
320
Edwin Kempin6b813372013-03-13 17:07:33 +0100321[[get-head]]
322Get HEAD
323~~~~~~~~
324[verse]
325'GET /projects/link:#project-name[\{project-name\}]/HEAD'
326
327Retrieves for a project the name of the branch to which `HEAD` points.
328
329.Request
330----
331 GET /projects/plugins%2Freplication/HEAD HTTP/1.0
332----
333
334.Response
335----
336 HTTP/1.1 200 OK
337 Content-Disposition: attachment
338 Content-Type: application/json;charset=UTF-8
339
340 )]}'
341 "refs/heads/master"
342----
343
344[[set-head]]
345Set HEAD
346~~~~~~~~
347[verse]
348'PUT /projects/link:#project-name[\{project-name\}]/HEAD'
349
350Sets `HEAD` for a project.
351
352The new ref to which `HEAD` should point must be provided in the
353request body inside a link:#head-input[HeadInput] entity.
354
355.Request
356----
357 PUT /projects/plugins%2Freplication/HEAD HTTP/1.0
358 Content-Type: application/json;charset=UTF-8
359
360 {
361 "ref": "refs/heads/stable"
362 }
363----
364
365As response the new ref to which `HEAD` points is returned.
366
367.Response
368----
369 HTTP/1.1 200 OK
370 Content-Disposition: attachment
371 Content-Type: application/json;charset=UTF-8
372
373 )]}'
374 "refs/heads/stable"
375----
376
Edwin Kempin19ea9b92013-03-20 13:20:26 +0100377[[get-repository-statistics]]
378Get Repository Statistics
379~~~~~~~~~~~~~~~~~~~~~~~~~
380[verse]
381'GET /projects/link:#project-name[\{project-name\}]/statistics.git'
382
383Return statistics for the repository of a project.
384
385.Request
386----
387 GET /projects/plugins%2Freplication/statistics.git HTTP/1.0
388----
389
390The repository statistics are returned as a
391link:#repository-statistics-info[RepositoryStatisticsInfo] entity.
392
393.Response
394----
395 HTTP/1.1 200 OK
396 Content-Disposition: attachment
397 Content-Type: application/json;charset=UTF-8
398
399 )]}'
400 {
401 "number_of_loose_objects": 127,
402 "number_of_loose_refs": 15,
403 "number_of_pack_files": 15,
404 "number_of_packed_objects": 67,
405 "number_of_packed_refs": 0,
406 "size_of_loose_objects": 29466,
407 "size_of_packed_objects": 9646
408 }
409----
410
Dave Borowitz237073a2013-04-04 16:52:27 -0700411[[get-config]]
412Get Config
413~~~~~~~~~~
414[verse]
415'GET /projects/link:#project-name[\{project-name\}]/config'
416
417Gets some configuration information about a project. Note that this
418config info is not simply the contents of `project.config`; it generally
419contains fields that may have been inherited from parent projects.
420
421.Request
422----
423 GET /projects/myproject/config
424----
425
426A link:#config-info[ConfigInfo] entity is returned that describes the
427project configuration. Some fields are only visible to users that have
428read access to `refs/meta/config`.
429
430.Response
431----
432 HTTP/1.1 200 OK
433 Content-Disposition: attachment
434 Content-Type: application/json;charset=UTF-8
435
436 )]}'
437 {
438 "kind": "gerritcodereview#project_config",
439 "use_contributor_agreements": false,
440 "use_content_merge": true,
441 "use_signed_off_by": false,
Dave Borowitz20027892013-04-08 10:42:23 -0700442 "require_change_id": true,
443 "commentlinks": {}
Dave Borowitz237073a2013-04-04 16:52:27 -0700444 }
445----
446
Edwin Kempinef3542f2013-03-19 13:31:49 +0100447[[run-gc]]
448Run GC
449~~~~~~
450[verse]
451'POST /projects/link:#project-name[\{project-name\}]/gc'
452
453Run the Git garbage collection for the repository of a project.
454
455.Request
456----
457 POST /projects/plugins%2Freplication/gc HTTP/1.0
458----
459
460The response is the streamed output of the garbage collection.
461
462.Response
463----
464 HTTP/1.1 200 OK
465 Content-Disposition: attachment
466 Content-Type: text/plain;charset=UTF-8
467
468 collecting garbage for "plugins/replication":
469 Pack refs: 100% (21/21)
470 Counting objects: 20
471 Finding sources: 100% (20/20)
472 Getting sizes: 100% (13/13)
473 Compressing objects: 83% (5/6)
474 Writing objects: 100% (20/20)
475 Selecting commits: 100% (7/7)
476 Building bitmaps: 100% (7/7)
477 Finding sources: 100% (41/41)
478 Getting sizes: 100% (25/25)
479 Compressing objects: 52% (12/23)
480 Writing objects: 100% (41/41)
481 Prune loose objects also found in pack files: 100% (36/36)
482 Prune loose, unreferenced objects: 100% (36/36)
483 done.
484----
485
Edwin Kempina686de92013-05-09 15:12:34 +0200486[[branch-endpoints]]
487Branch Endpoints
488----------------
489
490[[list-branches]]
491List Branches
492~~~~~~~~~~~~~
493[verse]
494'GET /projects/link:#project-name[\{project-name\}]/branches/'
495
496List the branches of a project.
497
498As result a list of link:#branch-info[BranchInfo] entries is
499returned.
500
501.Request
502----
503 GET /projects/work%2Fmy-project/branches/ HTTP/1.0
504----
505
506.Response
507----
508 HTTP/1.1 200 OK
509 Content-Disposition: attachment
510 Content-Type: application/json;charset=UTF-8
511
512 )]}'
513 [
514 {
515 "ref": "HEAD",
516 "revision": "master"
517 },
518 {
519 "ref": "refs/meta/config",
520 "revision": "76016386a0d8ecc7b6be212424978bb45959d668"
521 },
522 {
523 "ref": "refs/heads/master",
524 "revision": "67ebf73496383c6777035e374d2d664009e2aa5c"
525 },
526 {
527 "ref": "refs/heads/stable",
528 "revision": "64ca533bd0eb5252d2fee83f63da67caae9b4674",
529 "can_delete": true
530 }
531 ]
532----
533
Edwin Kempin4425c742013-03-18 13:23:00 +0100534[[child-project-endpoints]]
535Child Project Endpoints
536-----------------------
537
538[[list-child-projects]]
539List Child Projects
540~~~~~~~~~~~~~~~~~~~
541[verse]
542'GET /projects/link:#project-name[\{project-name\}]/children/'
543
544List the direct child projects of a project.
545
546.Request
547----
548 GET /projects/Public-Plugins/children/ HTTP/1.0
549----
550
551As result a list of link:#project-info[ProjectInfo] entries is
552returned that describe the child projects.
553
554.Response
555----
556 HTTP/1.1 200 OK
557 Content-Disposition: attachment
558 Content-Type: application/json;charset=UTF-8
559
560 )]}'
561 [
562 {
563 "kind": "gerritcodereview#project",
564 "id": "plugins%2Freplication",
565 "name": "plugins/replication",
566 "parent": "Public-Plugins",
567 "description": "Copies to other servers using the Git protocol"
568 },
569 {
570 "kind": "gerritcodereview#project",
571 "id": "plugins%2Freviewnotes",
572 "name": "plugins/reviewnotes",
573 "parent": "Public-Plugins",
574 "description": "Annotates merged commits using notes on refs/notes/review."
575 },
576 {
577 "kind": "gerritcodereview#project",
578 "id": "plugins%2Fsingleusergroup",
579 "name": "plugins/singleusergroup",
580 "parent": "Public-Plugins",
581 "description": "GroupBackend enabling users to be directly added to access rules"
582 }
583 ]
584----
585
Edwin Kempinf95bd172013-03-19 11:10:57 +0100586To resolve the child projects of a project recursively the parameter
587`recursive` can be set.
588
589Child projects that are not visible to the calling user are ignored and
590are not resolved further.
591
592.Request
593----
594 GET /projects/Public-Projects/children/?recursive HTTP/1.0
595----
596
597.Response
598----
599 HTTP/1.1 200 OK
600 Content-Disposition: attachment
601 Content-Type: application/json;charset=UTF-8
602
603 )]}'
604 [
605 {
606 "kind": "gerritcodereview#project",
607 "id": "gerrit",
608 "name": "gerrit",
609 "parent": "Public-Projects",
610 "description": "Gerrit Code Review"
611 },
612 {
613 "kind": "gerritcodereview#project",
614 "id": "plugins%2Freplication",
615 "name": "plugins/replication",
616 "parent": "Public-Plugins",
617 "description": "Copies to other servers using the Git protocol"
618 },
619 {
620 "kind": "gerritcodereview#project",
621 "id": "plugins%2Freviewnotes",
622 "name": "plugins/reviewnotes",
623 "parent": "Public-Plugins",
624 "description": "Annotates merged commits using notes on refs/notes/review."
625 },
626 {
627 "kind": "gerritcodereview#project",
628 "id": "plugins%2Fsingleusergroup",
629 "name": "plugins/singleusergroup",
630 "parent": "Public-Plugins",
631 "description": "GroupBackend enabling users to be directly added to access rules"
632 },
633 {
634 "kind": "gerritcodereview#project",
635 "id": "Public-Plugins",
636 "name": "Public-Plugins",
637 "parent": "Public-Projects",
638 "description": "Parent project for plugins/*"
639 }
640 ]
641----
642
Edwin Kempin5b6c4062013-03-19 09:26:03 +0100643[[get-child-project]]
644Get Child Project
645~~~~~~~~~~~~~~~~~
646[verse]
647'GET /projects/link:#project-name[\{project-name\}]/children/link:#project-name[\{project-name\}]'
648
Edwin Kempin8a3fb5b2013-03-21 15:02:22 +0100649Retrieves a child project. If a non-direct child project should be
650retrieved the parameter `recursive` must be set.
Edwin Kempin5b6c4062013-03-19 09:26:03 +0100651
652.Request
653----
654 GET /projects/Public-Plugins/children/plugins%2Freplication HTTP/1.0
655----
656
657As response a link:#project-info[ProjectInfo] entity is returned that
658describes the child project.
659
660.Response
661----
662 HTTP/1.1 200 OK
663 Content-Disposition: attachment
664 Content-Type: application/json;charset=UTF-8
665
666 )]}'
667 {
668 "kind": "gerritcodereview#project",
669 "id": "plugins%2Freplication",
670 "name": "plugins/replication",
671 "parent": "Public-Plugins",
672 "description": "Copies to other servers using the Git protocol"
673 }
674----
675
Edwin Kempinc3fe3cb2013-02-13 15:09:23 +0100676[[dashboard-endpoints]]
677Dashboard Endpoints
678-------------------
679
Edwin Kempin76202742013-02-15 13:51:50 +0100680[[list-dashboards]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100681List Dashboards
682~~~~~~~~~~~~~~~
683[verse]
684'GET /projects/link:#project-name[\{project-name\}]/dashboards/'
685
Edwin Kempind0a63922013-01-23 16:32:59 +0100686List custom dashboards for a project.
687
Edwin Kempin55367622013-02-05 09:09:23 +0100688As result a list of link:#dashboard-info[DashboardInfo] entries is
689returned.
690
Edwin Kempind0a63922013-01-23 16:32:59 +0100691List all dashboards for the `work/my-project` project:
Edwin Kempin37440832013-02-06 11:36:00 +0100692
693.Request
Edwin Kempind0a63922013-01-23 16:32:59 +0100694----
695 GET /projects/work%2Fmy-project/dashboards/ HTTP/1.0
Edwin Kempin37440832013-02-06 11:36:00 +0100696----
Edwin Kempind0a63922013-01-23 16:32:59 +0100697
Edwin Kempin37440832013-02-06 11:36:00 +0100698.Response
699----
Edwin Kempind0a63922013-01-23 16:32:59 +0100700 HTTP/1.1 200 OK
701 Content-Disposition: attachment
702 Content-Type: application/json;charset=UTF-8
703
704 )]}'
705 [
706 {
707 "kind": "gerritcodereview#dashboard",
708 "id": "main:closed",
709 "ref": "main",
710 "path": "closed",
711 "description": "Merged and abandoned changes in last 7 weeks",
712 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
713 "default": true,
714 "title": "Closed changes",
715 "sections": [
716 {
717 "name": "Merged",
718 "query": "status:merged age:7w"
719 },
720 {
721 "name": "Abandoned",
722 "query": "status:abandoned age:7w"
723 }
724 ]
725 }
726 ]
727----
728
Edwin Kempina64c4b92013-01-23 11:30:40 +0100729.Get all dashboards of the 'All-Projects' project
730****
731get::/projects/All-Projects/dashboards/
732****
733
Edwin Kempin67e923c2013-02-14 13:57:12 +0100734[[get-dashboard]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100735Get Dashboard
736~~~~~~~~~~~~~
737[verse]
738'GET /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
739
Edwin Kempin67e923c2013-02-14 13:57:12 +0100740Retrieves a project dashboard. The dashboard can be defined on that
741project or be inherited from a parent project.
742
743.Request
744----
745 GET /projects/work%2Fmy-project/dashboards/main:closed HTTP/1.0
746----
747
748As response a link:#dashboard-info[DashboardInfo] entity is returned
749that describes the dashboard.
750
751.Response
752----
753 HTTP/1.1 200 OK
754 Content-Disposition: attachment
755 Content-Type: application/json;charset=UTF-8
756
757 )]}'
758 {
759 "kind": "gerritcodereview#dashboard",
760 "id": "main:closed",
761 "ref": "main",
762 "path": "closed",
763 "description": "Merged and abandoned changes in last 7 weeks",
764 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
765 "default": true,
766 "title": "Closed changes",
767 "sections": [
768 {
769 "name": "Merged",
770 "query": "status:merged age:7w"
771 },
772 {
773 "name": "Abandoned",
774 "query": "status:abandoned age:7w"
775 }
776 ]
777 }
778----
779
780To retrieve the default dashboard of a project use `default` as
781dashboard-id.
Edwin Kempin37440832013-02-06 11:36:00 +0100782
783.Request
Edwin Kempind0a63922013-01-23 16:32:59 +0100784----
785 GET /projects/work%2Fmy-project/dashboards/default HTTP/1.0
Edwin Kempin37440832013-02-06 11:36:00 +0100786----
Edwin Kempind0a63922013-01-23 16:32:59 +0100787
Edwin Kempin37440832013-02-06 11:36:00 +0100788.Response
789----
Edwin Kempind0a63922013-01-23 16:32:59 +0100790 HTTP/1.1 200 OK
791 Content-Disposition: attachment
792 Content-Type: application/json;charset=UTF-8
793
794 )]}'
795 {
796 "kind": "gerritcodereview#dashboard",
797 "id": "main:closed",
798 "ref": "main",
799 "path": "closed",
Edwin Kempin67e923c2013-02-14 13:57:12 +0100800 "description": "Merged and abandoned changes in last 7 weeks",
801 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
Edwin Kempind0a63922013-01-23 16:32:59 +0100802 "default": true,
Edwin Kempin67e923c2013-02-14 13:57:12 +0100803 "title": "Closed changes",
804 "sections": [
805 {
806 "name": "Merged",
807 "query": "status:merged age:7w"
808 },
809 {
810 "name": "Abandoned",
811 "query": "status:abandoned age:7w"
812 }
813 ]
Edwin Kempind0a63922013-01-23 16:32:59 +0100814 }
815----
816
Edwin Kempin67e923c2013-02-14 13:57:12 +0100817[[set-dashboard]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100818Set Dashboard
819~~~~~~~~~~~~~
820[verse]
821'PUT /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
822
Edwin Kempin67e923c2013-02-14 13:57:12 +0100823Updates/Creates a project dashboard.
824
825Currently only supported for the `default` dashboard.
826
827The creation/update information for the dashboard must be provided in
828the request body as a link:#dashboard-input[DashboardInput] entity.
829
830.Request
831----
832 PUT /projects/work%2Fmy-project/dashboards/default HTTP/1.0
833 Content-Type: application/json;charset=UTF-8
834
835 {
836 "id": "main:closed",
837 "commit_message": "Define the default dashboard"
838 }
839----
840
841As response the new/updated dashboard is returned as a
842link:#dashboard-info[DashboardInfo] entity.
843
844.Response
845----
846 HTTP/1.1 200 OK
847 Content-Disposition: attachment
848 Content-Type: application/json;charset=UTF-8
849
850 )]}'
851 {
852 "kind": "gerritcodereview#dashboard",
853 "id": "main:closed",
854 "ref": "main",
855 "path": "closed",
856 "description": "Merged and abandoned changes in last 7 weeks",
857 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
858 "default": true,
859 "title": "Closed changes",
860 "sections": [
861 {
862 "name": "Merged",
863 "query": "status:merged age:7w"
864 },
865 {
866 "name": "Abandoned",
867 "query": "status:abandoned age:7w"
868 }
869 ]
870 }
871----
872
873[[delete-dashboard]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100874Delete Dashboard
875~~~~~~~~~~~~~~~~
876[verse]
877'DELETE /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
878
Edwin Kempin67e923c2013-02-14 13:57:12 +0100879Deletes a project dashboard.
880
881Currently only supported for the `default` dashboard.
882
Edwin Kempinefec4492013-02-22 10:09:23 +0100883The request body does not need to include a link:#dashboard-input[
John Spurlockd25fad12013-03-09 11:48:49 -0500884DashboardInput] entity if no commit message is specified.
Edwin Kempin67e923c2013-02-14 13:57:12 +0100885
886Please note that some proxies prohibit request bodies for DELETE
887requests.
888
889.Request
890----
891 DELETE /projects/work%2Fmy-project/dashboards/default HTTP/1.0
892----
893
894.Response
895----
896 HTTP/1.1 204 No Content
897----
898
Edwin Kempin34d83352013-02-06 10:40:17 +0100899
900[[ids]]
901IDs
902---
903
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100904[[dashboard-id]]
Edwin Kempin67e923c2013-02-14 13:57:12 +0100905\{dashboard-id\}
906~~~~~~~~~~~~~~~~
907The ID of a dashboard in the format '<ref>:<path>'.
908
909A special dashboard ID is `default` which represents the default
910dashboard of a project.
911
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100912[[project-name]]
Edwin Kempin34d83352013-02-06 10:40:17 +0100913\{project-name\}
914~~~~~~~~~~~~~~~~
915The name of the project.
916
917
Edwin Kempin51a6dc92013-02-04 15:43:59 +0100918[[json-entities]]
919JSON Entities
920-------------
921
Edwin Kempina686de92013-05-09 15:12:34 +0200922[[branch-info]]
923BranchInfo
924~~~~~~~~~~
925The `BranchInfo` entity contains information about a branch.
926
927[options="header",width="50%",cols="1,^2,4"]
928|=========================
929|Field Name ||Description
930|`ref` ||The ref of the branch.
931|`revision` ||The revision to which the branch points.
932|`can_delete`|`false` if not set|
933Whether the calling user can delete this branch.
934|=========================
935
Edwin Kempin55367622013-02-05 09:09:23 +0100936[[dashboard-info]]
937DashboardInfo
938~~~~~~~~~~~~~
939The `DashboardInfo` entity contains information about a project
940dashboard.
941
942[options="header",width="50%",cols="1,^2,4"]
943|===============================
944|Field Name ||Description
945|`kind` ||`gerritcodereview#dashboard`
946|`id` ||
947The ID of the dashboard. The ID has the format '<ref>:<path>',
948where ref and path are URL encoded.
949|`project` ||
950The name of the project for which this dashboard is returned.
951|`defining_project`||
952The name of the project in which this dashboard is defined.
953This is different from `project` if the dashboard is inherited from a
954parent project.
955|`ref` ||
956The name of the ref in which the dashboard is defined, without the
957`refs/meta/dashboards/` prefix, which is common for all dashboard refs.
958|`path` ||
959The path of the file in which the dashboard is defined.
960|`description` |optional|The description of the dashboard.
961|`foreach` |optional|
962Subquery that applies to all sections in the dashboard. +
963Tokens such as `${project}` are not resolved.
964|`url` ||
965The URL under which the dashboard can be opened in the Gerrit WebUI. +
966The URL is relative to the canonical web URL. +
967Tokens in the queries such as `${project}` are resolved.
968|`default` |not set if `false`|
969Whether this is the default dashboard of the project.
970|`title` |optional|The title of the dashboard.
971|`sections` ||
972The list of link:#dashboard-section-info[sections] in the dashboard.
973|===============================
974
Edwin Kempin67e923c2013-02-14 13:57:12 +0100975[[dashboard-input]]
976DashboardInput
977~~~~~~~~~~~~~~
978The `DashboardInput` entity contains information to create/update a
979project dashboard.
980
981[options="header",width="50%",cols="1,^2,4"]
982|=============================
983|Field Name ||Description
984|`id` |optional|
Edwin Kempinc95c5082013-03-12 16:56:25 +0100985URL encoded ID of a dashboard to which this dashboard should link to.
Edwin Kempin67e923c2013-02-14 13:57:12 +0100986|`commit_message`|optional|
987Message that should be used to commit the change of the dashboard.
988|=============================
989
Edwin Kempin55367622013-02-05 09:09:23 +0100990[[dashboard-section-info]]
991DashboardSectionInfo
992~~~~~~~~~~~~~~~~~~~~
993The `DashboardSectionInfo` entity contains information about a section
994in a dashboard.
995
996[options="header",width="50%",cols="1,6"]
997|===========================
998|Field Name |Description
999|`name` |The title of the section.
1000|`query` |The query of the section. +
1001Tokens such as `${project}` are not resolved.
1002|===========================
1003
Edwin Kempin6b813372013-03-13 17:07:33 +01001004[[head-input]]
1005HeadInput
1006~~~~~~~~~
1007The `HeadInput` entity contains information for setting `HEAD` for a
1008project.
1009
1010[options="header",width="50%",cols="1,6"]
1011|============================
1012|Field Name |Description
1013|`ref` |
1014The ref to which `HEAD` should be set, the `refs/heads` prefix can be
1015omitted.
1016|============================
1017
Edwin Kempin57f303c2013-02-13 15:52:22 +01001018[[project-description-input]]
1019ProjectDescriptionInput
1020~~~~~~~~~~~~~~~~~~~~~~~
1021The `ProjectDescriptionInput` entity contains information for setting a
1022project description.
1023
1024[options="header",width="50%",cols="1,^2,4"]
1025|=============================
1026|Field Name ||Description
1027|`description` |optional|The project description. +
1028The project description will be deleted if not set.
1029|`commit_message`|optional|
1030Message that should be used to commit the change of the project
1031description in the `project.config` file to the `refs/meta/config`
1032branch.
1033|=============================
1034
Edwin Kempin51a6dc92013-02-04 15:43:59 +01001035[[project-info]]
1036ProjectInfo
1037~~~~~~~~~~~
1038The `ProjectInfo` entity contains information about a project.
1039
1040[options="header",width="50%",cols="1,^2,4"]
1041|===========================
1042|Field Name ||Description
1043|`kind` ||`gerritcodereview#project`
1044|`id` ||The URL encoded project name.
1045|`name` |
1046not set if returned in a map where the project name is used as map key|
1047The name of the project.
Edwin Kempinf3611822013-03-19 08:23:09 +01001048|`parent` |optional|
Edwin Kempin51a6dc92013-02-04 15:43:59 +01001049The name of the parent project. +
1050`?-<n>` if the parent project is not visible (`<n>` is a number which
1051is increased for each non-visible project).
1052|`description` |optional|The description of the project.
1053|`branches` |optional|Map of branch names to HEAD revisions.
1054|===========================
1055
Bruce Zu798ea122013-02-18 16:55:43 +08001056[[project-input]]
1057ProjectInput
1058~~~~~~~~~~~~
1059The `ProjectInput` entity contains information for the creation of
1060a new project.
1061
1062[options="header",width="50%",cols="1,^2,4"]
1063|=========================================
1064|Field Name ||Description
1065|`name` |optional|
1066The name of the project (not encoded). +
1067If set, must match the project name in the URL.
1068|`parent` |optional|
1069The name of the parent project. +
1070If not set, the `All-Projects` project will be the parent project.
1071|`description` |optional|The description of the project.
1072|`permissions_only` |`false` if not set|
1073Whether a permission-only project should be created.
1074|`create_empty_commit` |`false` if not set|
1075Whether an empty initial commit should be created.
1076|`submit_type` |optional|
1077The submit type that should be set for the project
1078(`MERGE_IF_NECESSARY`, `REBASE_IF_NECESSARY`, `FAST_FORWARD_ONLY`,
1079`MERGE_ALWAYS`, `CHERRY_PICK`). +
1080If not set, `MERGE_IF_NECESSARY` is set as submit type.
1081|`branches` |optional|
1082A list of branches that should be initially created. +
1083For the branch names the `refs/heads/` prefix can be omitted.
1084|`owners` |optional|
1085A list of groups that should be assigned as project owner. +
1086Each group in the list must be specified as
1087link:rest-api-groups.html#group-id[group-id]. +
1088If not set, the link:config-gerrit.html#repository.name.ownerGroup[
1089groups that are configured as default owners] are set as project
1090owners.
1091|`use_contributor_agreements`|`INHERIT` if not set|
1092Whether contributor agreements should be used for the project (`TRUE`,
1093`FALSE`, `INHERIT`).
1094|`use_signed_off_by` |`INHERIT` if not set|
1095Whether the usage of 'Signed-Off-By' footers is required for the
1096project (`TRUE`, `FALSE`, `INHERIT`).
1097|`use_content_merge` |`INHERIT` if not set|
1098Whether content merge should be enabled for the project (`TRUE`,
1099`FALSE`, `INHERIT`). +
1100`FALSE`, if the `submit_type` is `FAST_FORWARD_ONLY`.
1101|`require_change_id` |`INHERIT` if not set|
1102Whether the usage of Change-Ids is required for the project (`TRUE`,
1103`FALSE`, `INHERIT`).
1104|=========================================
1105
Edwin Kempinecad88c2013-02-14 12:09:44 +01001106[[project-parent-input]]
1107ProjectParentInput
1108~~~~~~~~~~~~~~~~~~
1109The `ProjectParentInput` entity contains information for setting a
1110project parent.
1111
1112[options="header",width="50%",cols="1,^2,4"]
1113|=============================
1114|Field Name ||Description
1115|`parent` ||The name of the parent project.
1116|`commit_message`|optional|
1117Message that should be used to commit the change of the project parent
1118in the `project.config` file to the `refs/meta/config` branch.
1119|=============================
1120
Edwin Kempin19ea9b92013-03-20 13:20:26 +01001121[[repository-statistics-info]]
1122RepositoryStatisticsInfo
1123~~~~~~~~~~~~~~~~~~~~~~~~
1124The `RepositoryStatisticsInfo` entity contains information about
1125statistics of a Git repository.
1126
1127[options="header",width="50%",cols="1,6"]
1128|======================================
1129|Field Name |Description
1130|`number_of_loose_objects` |Number of loose objects.
1131|`number_of_loose_refs` |Number of loose refs.
1132|`number_of_pack_files` |Number of pack files.
1133|`number_of_packed_objects`|Number of packed objects.
1134|`number_of_packed_refs` |Number of packed refs.
1135|`size_of_loose_objects` |Size of loose objects in bytes.
1136|`size_of_packed_objects` |Size of packed objects in bytes.
1137|======================================
1138
Dave Borowitz237073a2013-04-04 16:52:27 -07001139[[config-info]]
1140ConfigInfo
1141~~~~~~~~~~
1142The `ConfigInfo` entity contains information about the effective project
1143configuration.
1144
1145Fields marked with * are only visible to users who have read access to
1146`refs/meta/config`.
1147
1148[options="header",width="50%",cols="1,6"]
1149|======================================
1150|Field Name |Description
1151|`use_contributor_agreements*`|
1152If set, authors must complete a contributor agreement on the site
1153before pushing any commits or changes to this project.
1154|`use_content_merge*`|
1155If set, Gerrit will try to perform a 3-way merge of text file content
1156when a file has been modified by both the destination branch and the
1157change being submitted. This option only takes effect if submit type is
1158not FAST_FORWARD_ONLY.
1159|`use_signed_off_by*`|
1160If set, each change must contain a Signed-off-by line from either the
1161author or the uploader in the commit message.
1162|`require_change_id*`|
1163If set, require a valid link:user-changeid.html[Change-Id] footer in any
1164commit uploaded for review. This does not apply to commits pushed
1165directly to a branch or tag.
Dave Borowitz20027892013-04-08 10:42:23 -07001166|`commentlinks`|
1167Comment link configuration for the project. Has the same format as the
1168link:config-gerrit.html#_a_id_commentlink_a_section_commentlink[commentlink section]
1169of `gerrit.config`.
Dave Borowitz237073a2013-04-04 16:52:27 -07001170|======================================
1171
Edwin Kempind0a63922013-01-23 16:32:59 +01001172
1173GERRIT
1174------
1175Part of link:index.html[Gerrit Code Review]