blob: 41829e5ea56ff8e10bcbdbfb05ce32b69a3f9fc5 [file] [log] [blame] [view]
REST API to Get Owners Info
===========================
Any Gerrit UI clients or tools can use the
`/changes/<id>/owners` API to get
OWNERS information of a change.
### Request
```bash
GET /changes/<id>/owners HTTP/1.0
```
The `<id>` is a Gerrit change ID. This API can have three parameters:
* **patchset**: is the patchset number of the change to look for changed files.
By default the current (latest) patchset of given change is used.
* **debug**: can be set to true/1 or false/0 to override the configuration variable
**addDebugMsg**.
* **nocache**: can be set to true to collect owerns info without using the cached OwnersDb.
For example,
```bash
http://<gerrit_server>/changes/29/owners?debug=true&patchset=3
```
### Response
This API returns a JSON object with the following attributes:
* **addDebugMsg**: is false by default. It can be set to true in a
development/test gerrit.config file, or with the `debug=1`
REST URL parameter. When it is true, extra **dbgmsgs** attributes
are included in this JSON object.
* **maxCacheAge**: has default value 0; can be defined in gerrit.config.
It is the number of seconds OWNERS info that will stay in a cache.
* **maxCacheSize**: has default value 100; can be defined in gerrit.config.
It is the number of most recently accessed CLs OWNERS info that will stay in a cache.
* **minOwnerVoteLevel**: is 1 by default; can be set to 2 in gerrit.config.
It is the minimal Code-Review vote value all changed files must get
from at least one owner to make a change submittable.
* **ownersFileName**: is "OWNERS" by default; can be redefined in project.config
or gerrit.config. It is the name of OWNERS file.
* **rejectErrorInOwners**: is false by default; can be redefined in
project.config or gerrit.config.
When enabled, the CL uploader will check and reject OWNERS file with
wrong syntax or unknown email address.
* **change**: is the change number.
* **patchset**: is the change patchset number.
* **owner\_revision**: is the revision where OWNERS files were searched.
It is the tip of the given change's destination branch.
Due to caching this revision might be behind recent branches changes.
* **dbgmsgs**: returned only when addDebugMsg is true,
a JSON object with the following members:
* **user**: the change's creator.
* **project**: the change's project name.
* **branch**: the change's destination branch name.
* **errors**: error messages from OWNERS files.
* **path2owners**:
a map from directory path or file glob to an array of owner emails.
Note that `*` is a special owner email address.
It means that there is no owner and anyone can be the owner.
Included directories are those affected by the change revision.
* **owner2paths**:
a map from owner email to an array of directory path or file glob.
This is opposite to the path2owners map.
* **logs**:
trace messages during the search of OWNERS files.
* **file2owners**: a map from each file path in the change patchset to
an array of the file's owner emails.
* **reviewers**: an array of current reviewer emails.
* **owners**: an array of owner info objects.
Each owner info object has "email" and "weights" attributes.
The weights attribute is an array of integers like [n1, n2, n3],
which are the number of level 1, 2, 3+ controlled files.
The email attributes are the keys in the owner2paths map.
This owners array is sorted by owner weights.
Users should try to pick owners with more weights to review a change.
* **files**: an alphabetically sorted files changed
in the given change patchset.