blob: bb83048f2bacb81f3d25e52b6f515633eb6a642f [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 Kempin4425c742013-03-18 13:23:00 +0100486[[child-project-endpoints]]
487Child Project Endpoints
488-----------------------
489
490[[list-child-projects]]
491List Child Projects
492~~~~~~~~~~~~~~~~~~~
493[verse]
494'GET /projects/link:#project-name[\{project-name\}]/children/'
495
496List the direct child projects of a project.
497
498.Request
499----
500 GET /projects/Public-Plugins/children/ HTTP/1.0
501----
502
503As result a list of link:#project-info[ProjectInfo] entries is
504returned that describe the child projects.
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 "kind": "gerritcodereview#project",
516 "id": "plugins%2Freplication",
517 "name": "plugins/replication",
518 "parent": "Public-Plugins",
519 "description": "Copies to other servers using the Git protocol"
520 },
521 {
522 "kind": "gerritcodereview#project",
523 "id": "plugins%2Freviewnotes",
524 "name": "plugins/reviewnotes",
525 "parent": "Public-Plugins",
526 "description": "Annotates merged commits using notes on refs/notes/review."
527 },
528 {
529 "kind": "gerritcodereview#project",
530 "id": "plugins%2Fsingleusergroup",
531 "name": "plugins/singleusergroup",
532 "parent": "Public-Plugins",
533 "description": "GroupBackend enabling users to be directly added to access rules"
534 }
535 ]
536----
537
Edwin Kempinf95bd172013-03-19 11:10:57 +0100538To resolve the child projects of a project recursively the parameter
539`recursive` can be set.
540
541Child projects that are not visible to the calling user are ignored and
542are not resolved further.
543
544.Request
545----
546 GET /projects/Public-Projects/children/?recursive HTTP/1.0
547----
548
549.Response
550----
551 HTTP/1.1 200 OK
552 Content-Disposition: attachment
553 Content-Type: application/json;charset=UTF-8
554
555 )]}'
556 [
557 {
558 "kind": "gerritcodereview#project",
559 "id": "gerrit",
560 "name": "gerrit",
561 "parent": "Public-Projects",
562 "description": "Gerrit Code Review"
563 },
564 {
565 "kind": "gerritcodereview#project",
566 "id": "plugins%2Freplication",
567 "name": "plugins/replication",
568 "parent": "Public-Plugins",
569 "description": "Copies to other servers using the Git protocol"
570 },
571 {
572 "kind": "gerritcodereview#project",
573 "id": "plugins%2Freviewnotes",
574 "name": "plugins/reviewnotes",
575 "parent": "Public-Plugins",
576 "description": "Annotates merged commits using notes on refs/notes/review."
577 },
578 {
579 "kind": "gerritcodereview#project",
580 "id": "plugins%2Fsingleusergroup",
581 "name": "plugins/singleusergroup",
582 "parent": "Public-Plugins",
583 "description": "GroupBackend enabling users to be directly added to access rules"
584 },
585 {
586 "kind": "gerritcodereview#project",
587 "id": "Public-Plugins",
588 "name": "Public-Plugins",
589 "parent": "Public-Projects",
590 "description": "Parent project for plugins/*"
591 }
592 ]
593----
594
Edwin Kempin5b6c4062013-03-19 09:26:03 +0100595[[get-child-project]]
596Get Child Project
597~~~~~~~~~~~~~~~~~
598[verse]
599'GET /projects/link:#project-name[\{project-name\}]/children/link:#project-name[\{project-name\}]'
600
Edwin Kempin8a3fb5b2013-03-21 15:02:22 +0100601Retrieves a child project. If a non-direct child project should be
602retrieved the parameter `recursive` must be set.
Edwin Kempin5b6c4062013-03-19 09:26:03 +0100603
604.Request
605----
606 GET /projects/Public-Plugins/children/plugins%2Freplication HTTP/1.0
607----
608
609As response a link:#project-info[ProjectInfo] entity is returned that
610describes the child project.
611
612.Response
613----
614 HTTP/1.1 200 OK
615 Content-Disposition: attachment
616 Content-Type: application/json;charset=UTF-8
617
618 )]}'
619 {
620 "kind": "gerritcodereview#project",
621 "id": "plugins%2Freplication",
622 "name": "plugins/replication",
623 "parent": "Public-Plugins",
624 "description": "Copies to other servers using the Git protocol"
625 }
626----
627
Edwin Kempinc3fe3cb2013-02-13 15:09:23 +0100628[[dashboard-endpoints]]
629Dashboard Endpoints
630-------------------
631
Edwin Kempin76202742013-02-15 13:51:50 +0100632[[list-dashboards]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100633List Dashboards
634~~~~~~~~~~~~~~~
635[verse]
636'GET /projects/link:#project-name[\{project-name\}]/dashboards/'
637
Edwin Kempind0a63922013-01-23 16:32:59 +0100638List custom dashboards for a project.
639
Edwin Kempin55367622013-02-05 09:09:23 +0100640As result a list of link:#dashboard-info[DashboardInfo] entries is
641returned.
642
Edwin Kempind0a63922013-01-23 16:32:59 +0100643List all dashboards for the `work/my-project` project:
Edwin Kempin37440832013-02-06 11:36:00 +0100644
645.Request
Edwin Kempind0a63922013-01-23 16:32:59 +0100646----
647 GET /projects/work%2Fmy-project/dashboards/ HTTP/1.0
Edwin Kempin37440832013-02-06 11:36:00 +0100648----
Edwin Kempind0a63922013-01-23 16:32:59 +0100649
Edwin Kempin37440832013-02-06 11:36:00 +0100650.Response
651----
Edwin Kempind0a63922013-01-23 16:32:59 +0100652 HTTP/1.1 200 OK
653 Content-Disposition: attachment
654 Content-Type: application/json;charset=UTF-8
655
656 )]}'
657 [
658 {
659 "kind": "gerritcodereview#dashboard",
660 "id": "main:closed",
661 "ref": "main",
662 "path": "closed",
663 "description": "Merged and abandoned changes in last 7 weeks",
664 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
665 "default": true,
666 "title": "Closed changes",
667 "sections": [
668 {
669 "name": "Merged",
670 "query": "status:merged age:7w"
671 },
672 {
673 "name": "Abandoned",
674 "query": "status:abandoned age:7w"
675 }
676 ]
677 }
678 ]
679----
680
Edwin Kempina64c4b92013-01-23 11:30:40 +0100681.Get all dashboards of the 'All-Projects' project
682****
683get::/projects/All-Projects/dashboards/
684****
685
Edwin Kempin67e923c2013-02-14 13:57:12 +0100686[[get-dashboard]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100687Get Dashboard
688~~~~~~~~~~~~~
689[verse]
690'GET /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
691
Edwin Kempin67e923c2013-02-14 13:57:12 +0100692Retrieves a project dashboard. The dashboard can be defined on that
693project or be inherited from a parent project.
694
695.Request
696----
697 GET /projects/work%2Fmy-project/dashboards/main:closed HTTP/1.0
698----
699
700As response a link:#dashboard-info[DashboardInfo] entity is returned
701that describes the dashboard.
702
703.Response
704----
705 HTTP/1.1 200 OK
706 Content-Disposition: attachment
707 Content-Type: application/json;charset=UTF-8
708
709 )]}'
710 {
711 "kind": "gerritcodereview#dashboard",
712 "id": "main:closed",
713 "ref": "main",
714 "path": "closed",
715 "description": "Merged and abandoned changes in last 7 weeks",
716 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
717 "default": true,
718 "title": "Closed changes",
719 "sections": [
720 {
721 "name": "Merged",
722 "query": "status:merged age:7w"
723 },
724 {
725 "name": "Abandoned",
726 "query": "status:abandoned age:7w"
727 }
728 ]
729 }
730----
731
732To retrieve the default dashboard of a project use `default` as
733dashboard-id.
Edwin Kempin37440832013-02-06 11:36:00 +0100734
735.Request
Edwin Kempind0a63922013-01-23 16:32:59 +0100736----
737 GET /projects/work%2Fmy-project/dashboards/default HTTP/1.0
Edwin Kempin37440832013-02-06 11:36:00 +0100738----
Edwin Kempind0a63922013-01-23 16:32:59 +0100739
Edwin Kempin37440832013-02-06 11:36:00 +0100740.Response
741----
Edwin Kempind0a63922013-01-23 16:32:59 +0100742 HTTP/1.1 200 OK
743 Content-Disposition: attachment
744 Content-Type: application/json;charset=UTF-8
745
746 )]}'
747 {
748 "kind": "gerritcodereview#dashboard",
749 "id": "main:closed",
750 "ref": "main",
751 "path": "closed",
Edwin Kempin67e923c2013-02-14 13:57:12 +0100752 "description": "Merged and abandoned changes in last 7 weeks",
753 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
Edwin Kempind0a63922013-01-23 16:32:59 +0100754 "default": true,
Edwin Kempin67e923c2013-02-14 13:57:12 +0100755 "title": "Closed changes",
756 "sections": [
757 {
758 "name": "Merged",
759 "query": "status:merged age:7w"
760 },
761 {
762 "name": "Abandoned",
763 "query": "status:abandoned age:7w"
764 }
765 ]
Edwin Kempind0a63922013-01-23 16:32:59 +0100766 }
767----
768
Edwin Kempin67e923c2013-02-14 13:57:12 +0100769[[set-dashboard]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100770Set Dashboard
771~~~~~~~~~~~~~
772[verse]
773'PUT /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
774
Edwin Kempin67e923c2013-02-14 13:57:12 +0100775Updates/Creates a project dashboard.
776
777Currently only supported for the `default` dashboard.
778
779The creation/update information for the dashboard must be provided in
780the request body as a link:#dashboard-input[DashboardInput] entity.
781
782.Request
783----
784 PUT /projects/work%2Fmy-project/dashboards/default HTTP/1.0
785 Content-Type: application/json;charset=UTF-8
786
787 {
788 "id": "main:closed",
789 "commit_message": "Define the default dashboard"
790 }
791----
792
793As response the new/updated dashboard is returned as a
794link:#dashboard-info[DashboardInfo] entity.
795
796.Response
797----
798 HTTP/1.1 200 OK
799 Content-Disposition: attachment
800 Content-Type: application/json;charset=UTF-8
801
802 )]}'
803 {
804 "kind": "gerritcodereview#dashboard",
805 "id": "main:closed",
806 "ref": "main",
807 "path": "closed",
808 "description": "Merged and abandoned changes in last 7 weeks",
809 "url": "/dashboard/?title\u003dClosed+changes\u0026Merged\u003dstatus:merged+age:7w\u0026Abandoned\u003dstatus:abandoned+age:7w",
810 "default": true,
811 "title": "Closed changes",
812 "sections": [
813 {
814 "name": "Merged",
815 "query": "status:merged age:7w"
816 },
817 {
818 "name": "Abandoned",
819 "query": "status:abandoned age:7w"
820 }
821 ]
822 }
823----
824
825[[delete-dashboard]]
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100826Delete Dashboard
827~~~~~~~~~~~~~~~~
828[verse]
829'DELETE /projects/link:#project-name[\{project-name\}]/dashboards/link:#dashboard-id[\{dashboard-id\}]'
830
Edwin Kempin67e923c2013-02-14 13:57:12 +0100831Deletes a project dashboard.
832
833Currently only supported for the `default` dashboard.
834
Edwin Kempinefec4492013-02-22 10:09:23 +0100835The request body does not need to include a link:#dashboard-input[
John Spurlockd25fad12013-03-09 11:48:49 -0500836DashboardInput] entity if no commit message is specified.
Edwin Kempin67e923c2013-02-14 13:57:12 +0100837
838Please note that some proxies prohibit request bodies for DELETE
839requests.
840
841.Request
842----
843 DELETE /projects/work%2Fmy-project/dashboards/default HTTP/1.0
844----
845
846.Response
847----
848 HTTP/1.1 204 No Content
849----
850
Edwin Kempin34d83352013-02-06 10:40:17 +0100851
852[[ids]]
853IDs
854---
855
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100856[[dashboard-id]]
Edwin Kempin67e923c2013-02-14 13:57:12 +0100857\{dashboard-id\}
858~~~~~~~~~~~~~~~~
859The ID of a dashboard in the format '<ref>:<path>'.
860
861A special dashboard ID is `default` which represents the default
862dashboard of a project.
863
Edwin Kempin50d3d9b2013-03-06 16:38:26 +0100864[[project-name]]
Edwin Kempin34d83352013-02-06 10:40:17 +0100865\{project-name\}
866~~~~~~~~~~~~~~~~
867The name of the project.
868
869
Edwin Kempin51a6dc92013-02-04 15:43:59 +0100870[[json-entities]]
871JSON Entities
872-------------
873
Edwin Kempin55367622013-02-05 09:09:23 +0100874[[dashboard-info]]
875DashboardInfo
876~~~~~~~~~~~~~
877The `DashboardInfo` entity contains information about a project
878dashboard.
879
880[options="header",width="50%",cols="1,^2,4"]
881|===============================
882|Field Name ||Description
883|`kind` ||`gerritcodereview#dashboard`
884|`id` ||
885The ID of the dashboard. The ID has the format '<ref>:<path>',
886where ref and path are URL encoded.
887|`project` ||
888The name of the project for which this dashboard is returned.
889|`defining_project`||
890The name of the project in which this dashboard is defined.
891This is different from `project` if the dashboard is inherited from a
892parent project.
893|`ref` ||
894The name of the ref in which the dashboard is defined, without the
895`refs/meta/dashboards/` prefix, which is common for all dashboard refs.
896|`path` ||
897The path of the file in which the dashboard is defined.
898|`description` |optional|The description of the dashboard.
899|`foreach` |optional|
900Subquery that applies to all sections in the dashboard. +
901Tokens such as `${project}` are not resolved.
902|`url` ||
903The URL under which the dashboard can be opened in the Gerrit WebUI. +
904The URL is relative to the canonical web URL. +
905Tokens in the queries such as `${project}` are resolved.
906|`default` |not set if `false`|
907Whether this is the default dashboard of the project.
908|`title` |optional|The title of the dashboard.
909|`sections` ||
910The list of link:#dashboard-section-info[sections] in the dashboard.
911|===============================
912
Edwin Kempin67e923c2013-02-14 13:57:12 +0100913[[dashboard-input]]
914DashboardInput
915~~~~~~~~~~~~~~
916The `DashboardInput` entity contains information to create/update a
917project dashboard.
918
919[options="header",width="50%",cols="1,^2,4"]
920|=============================
921|Field Name ||Description
922|`id` |optional|
Edwin Kempinc95c5082013-03-12 16:56:25 +0100923URL encoded ID of a dashboard to which this dashboard should link to.
Edwin Kempin67e923c2013-02-14 13:57:12 +0100924|`commit_message`|optional|
925Message that should be used to commit the change of the dashboard.
926|=============================
927
Edwin Kempin55367622013-02-05 09:09:23 +0100928[[dashboard-section-info]]
929DashboardSectionInfo
930~~~~~~~~~~~~~~~~~~~~
931The `DashboardSectionInfo` entity contains information about a section
932in a dashboard.
933
934[options="header",width="50%",cols="1,6"]
935|===========================
936|Field Name |Description
937|`name` |The title of the section.
938|`query` |The query of the section. +
939Tokens such as `${project}` are not resolved.
940|===========================
941
Edwin Kempin6b813372013-03-13 17:07:33 +0100942[[head-input]]
943HeadInput
944~~~~~~~~~
945The `HeadInput` entity contains information for setting `HEAD` for a
946project.
947
948[options="header",width="50%",cols="1,6"]
949|============================
950|Field Name |Description
951|`ref` |
952The ref to which `HEAD` should be set, the `refs/heads` prefix can be
953omitted.
954|============================
955
Edwin Kempin57f303c2013-02-13 15:52:22 +0100956[[project-description-input]]
957ProjectDescriptionInput
958~~~~~~~~~~~~~~~~~~~~~~~
959The `ProjectDescriptionInput` entity contains information for setting a
960project description.
961
962[options="header",width="50%",cols="1,^2,4"]
963|=============================
964|Field Name ||Description
965|`description` |optional|The project description. +
966The project description will be deleted if not set.
967|`commit_message`|optional|
968Message that should be used to commit the change of the project
969description in the `project.config` file to the `refs/meta/config`
970branch.
971|=============================
972
Edwin Kempin51a6dc92013-02-04 15:43:59 +0100973[[project-info]]
974ProjectInfo
975~~~~~~~~~~~
976The `ProjectInfo` entity contains information about a project.
977
978[options="header",width="50%",cols="1,^2,4"]
979|===========================
980|Field Name ||Description
981|`kind` ||`gerritcodereview#project`
982|`id` ||The URL encoded project name.
983|`name` |
984not set if returned in a map where the project name is used as map key|
985The name of the project.
Edwin Kempinf3611822013-03-19 08:23:09 +0100986|`parent` |optional|
Edwin Kempin51a6dc92013-02-04 15:43:59 +0100987The name of the parent project. +
988`?-<n>` if the parent project is not visible (`<n>` is a number which
989is increased for each non-visible project).
990|`description` |optional|The description of the project.
991|`branches` |optional|Map of branch names to HEAD revisions.
992|===========================
993
Bruce Zu798ea122013-02-18 16:55:43 +0800994[[project-input]]
995ProjectInput
996~~~~~~~~~~~~
997The `ProjectInput` entity contains information for the creation of
998a new project.
999
1000[options="header",width="50%",cols="1,^2,4"]
1001|=========================================
1002|Field Name ||Description
1003|`name` |optional|
1004The name of the project (not encoded). +
1005If set, must match the project name in the URL.
1006|`parent` |optional|
1007The name of the parent project. +
1008If not set, the `All-Projects` project will be the parent project.
1009|`description` |optional|The description of the project.
1010|`permissions_only` |`false` if not set|
1011Whether a permission-only project should be created.
1012|`create_empty_commit` |`false` if not set|
1013Whether an empty initial commit should be created.
1014|`submit_type` |optional|
1015The submit type that should be set for the project
1016(`MERGE_IF_NECESSARY`, `REBASE_IF_NECESSARY`, `FAST_FORWARD_ONLY`,
1017`MERGE_ALWAYS`, `CHERRY_PICK`). +
1018If not set, `MERGE_IF_NECESSARY` is set as submit type.
1019|`branches` |optional|
1020A list of branches that should be initially created. +
1021For the branch names the `refs/heads/` prefix can be omitted.
1022|`owners` |optional|
1023A list of groups that should be assigned as project owner. +
1024Each group in the list must be specified as
1025link:rest-api-groups.html#group-id[group-id]. +
1026If not set, the link:config-gerrit.html#repository.name.ownerGroup[
1027groups that are configured as default owners] are set as project
1028owners.
1029|`use_contributor_agreements`|`INHERIT` if not set|
1030Whether contributor agreements should be used for the project (`TRUE`,
1031`FALSE`, `INHERIT`).
1032|`use_signed_off_by` |`INHERIT` if not set|
1033Whether the usage of 'Signed-Off-By' footers is required for the
1034project (`TRUE`, `FALSE`, `INHERIT`).
1035|`use_content_merge` |`INHERIT` if not set|
1036Whether content merge should be enabled for the project (`TRUE`,
1037`FALSE`, `INHERIT`). +
1038`FALSE`, if the `submit_type` is `FAST_FORWARD_ONLY`.
1039|`require_change_id` |`INHERIT` if not set|
1040Whether the usage of Change-Ids is required for the project (`TRUE`,
1041`FALSE`, `INHERIT`).
1042|=========================================
1043
Edwin Kempinecad88c2013-02-14 12:09:44 +01001044[[project-parent-input]]
1045ProjectParentInput
1046~~~~~~~~~~~~~~~~~~
1047The `ProjectParentInput` entity contains information for setting a
1048project parent.
1049
1050[options="header",width="50%",cols="1,^2,4"]
1051|=============================
1052|Field Name ||Description
1053|`parent` ||The name of the parent project.
1054|`commit_message`|optional|
1055Message that should be used to commit the change of the project parent
1056in the `project.config` file to the `refs/meta/config` branch.
1057|=============================
1058
Edwin Kempin19ea9b92013-03-20 13:20:26 +01001059[[repository-statistics-info]]
1060RepositoryStatisticsInfo
1061~~~~~~~~~~~~~~~~~~~~~~~~
1062The `RepositoryStatisticsInfo` entity contains information about
1063statistics of a Git repository.
1064
1065[options="header",width="50%",cols="1,6"]
1066|======================================
1067|Field Name |Description
1068|`number_of_loose_objects` |Number of loose objects.
1069|`number_of_loose_refs` |Number of loose refs.
1070|`number_of_pack_files` |Number of pack files.
1071|`number_of_packed_objects`|Number of packed objects.
1072|`number_of_packed_refs` |Number of packed refs.
1073|`size_of_loose_objects` |Size of loose objects in bytes.
1074|`size_of_packed_objects` |Size of packed objects in bytes.
1075|======================================
1076
Dave Borowitz237073a2013-04-04 16:52:27 -07001077[[config-info]]
1078ConfigInfo
1079~~~~~~~~~~
1080The `ConfigInfo` entity contains information about the effective project
1081configuration.
1082
1083Fields marked with * are only visible to users who have read access to
1084`refs/meta/config`.
1085
1086[options="header",width="50%",cols="1,6"]
1087|======================================
1088|Field Name |Description
1089|`use_contributor_agreements*`|
1090If set, authors must complete a contributor agreement on the site
1091before pushing any commits or changes to this project.
1092|`use_content_merge*`|
1093If set, Gerrit will try to perform a 3-way merge of text file content
1094when a file has been modified by both the destination branch and the
1095change being submitted. This option only takes effect if submit type is
1096not FAST_FORWARD_ONLY.
1097|`use_signed_off_by*`|
1098If set, each change must contain a Signed-off-by line from either the
1099author or the uploader in the commit message.
1100|`require_change_id*`|
1101If set, require a valid link:user-changeid.html[Change-Id] footer in any
1102commit uploaded for review. This does not apply to commits pushed
1103directly to a branch or tag.
Dave Borowitz20027892013-04-08 10:42:23 -07001104|`commentlinks`|
1105Comment link configuration for the project. Has the same format as the
1106link:config-gerrit.html#_a_id_commentlink_a_section_commentlink[commentlink section]
1107of `gerrit.config`.
Dave Borowitz237073a2013-04-04 16:52:27 -07001108|======================================
1109
Edwin Kempind0a63922013-01-23 16:32:59 +01001110
1111GERRIT
1112------
1113Part of link:index.html[Gerrit Code Review]