By GET on /access/?project=<project-name> it is now possible to retrieve the access rights of a project via REST. Having /access/ instead of /projects/<project-name>/access allows to retrieve the access rights for multiple projects at once by specifying the 'project' option multiple times. In future this REST endpoint may be extended to only return the access rights for a certain user or group by supporting a 'user' and 'group' option. Change-Id: Ibc57b2c006472a9f70699ae69e72f60317819bef Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
377 lines
11 KiB
Plaintext
377 lines
11 KiB
Plaintext
Gerrit Code Review - /access/ REST API
|
|
======================================
|
|
|
|
This page describes the access rights related REST endpoints.
|
|
Please also take note of the general information on the
|
|
link:rest-api.html[REST API].
|
|
|
|
[[access-endpoints]]
|
|
Access Rights Endpoints
|
|
-----------------------
|
|
|
|
[[list-access]]
|
|
List Access Rights
|
|
~~~~~~~~~~~~~~~~~~
|
|
[verse]
|
|
'GET /access/?project=link:rest-api-projects.html#project-name[\{project-name\}]'
|
|
|
|
Lists the access rights for projects. The projects for which the access
|
|
rights should be returned must be specified as `project` options. The
|
|
`project` can be specified multiple times.
|
|
|
|
As result a map is returned that maps the project name to
|
|
link:#project-access-info[ProjectAccessInfo] entities.
|
|
|
|
The entries in the map are sorted by project name.
|
|
|
|
.Request
|
|
----
|
|
GET /access/?project=MyProject&project=All-Projects HTTP/1.0
|
|
----
|
|
|
|
.Response
|
|
----
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json;charset=UTF-8
|
|
|
|
)]}'
|
|
{
|
|
"All-Projects": {
|
|
"revision": "edd453d18e08640e67a8c9a150cec998ed0ac9aa",
|
|
"local": {
|
|
"GLOBAL_CAPABILITIES": {
|
|
"permissions": {
|
|
"priority": {
|
|
"rules": {
|
|
"15bfcd8a6de1a69c50b30cedcdcc951c15703152": {
|
|
"action": "BATCH"
|
|
}
|
|
}
|
|
},
|
|
"streamEvents": {
|
|
"rules": {
|
|
"15bfcd8a6de1a69c50b30cedcdcc951c15703152": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"administrateServer": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"refs/meta/config": {
|
|
"permissions": {
|
|
"submit": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"label-Code-Review": {
|
|
"label": "Code-Review",
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW",
|
|
"min": -2,
|
|
"max": 2
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW",
|
|
"min": -2,
|
|
"max": 2
|
|
}
|
|
}
|
|
},
|
|
"read": {
|
|
"exclusive": true,
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"push": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"refs/for/refs/*": {
|
|
"permissions": {
|
|
"pushMerge": {
|
|
"rules": {
|
|
"global:Registered-Users": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"push": {
|
|
"rules": {
|
|
"global:Registered-Users": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"refs/tags/*": {
|
|
"permissions": {
|
|
"pushSignedTag": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"pushTag": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"refs/heads/*": {
|
|
"permissions": {
|
|
"forgeCommitter": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"forgeAuthor": {
|
|
"rules": {
|
|
"global:Registered-Users": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"submit": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"editTopicName": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW",
|
|
"force": true
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW",
|
|
"force": true
|
|
}
|
|
}
|
|
},
|
|
"label-Code-Review": {
|
|
"label": "Code-Review",
|
|
"rules": {
|
|
"global:Registered-Users": {
|
|
"action": "ALLOW",
|
|
"min": -1,
|
|
"max": 1
|
|
},
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW",
|
|
"min": -2,
|
|
"max": 2
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW",
|
|
"min": -2,
|
|
"max": 2
|
|
}
|
|
}
|
|
},
|
|
"create": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
},
|
|
"push": {
|
|
"rules": {
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
},
|
|
"global:Project-Owners": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"refs/*": {
|
|
"permissions": {
|
|
"read": {
|
|
"rules": {
|
|
"global:Anonymous-Users": {
|
|
"action": "ALLOW"
|
|
},
|
|
"53a4f647a89ea57992571187d8025f830625192a": {
|
|
"action": "ALLOW"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"owner_of": [
|
|
"GLOBAL_CAPABILITIES",
|
|
"refs/meta/config",
|
|
"refs/for/refs/*",
|
|
"refs/tags/*",
|
|
"refs/heads/*",
|
|
"refs/*"
|
|
],
|
|
"can_upload": true,
|
|
"can_add": true,
|
|
"config_visible": true
|
|
},
|
|
"MyProject": {
|
|
"revision": "61157ed63e14d261b6dca40650472a9b0bd88474",
|
|
"inherits_from": {
|
|
"kind": "gerritcodereview#project",
|
|
"id": "All-Projects",
|
|
"name": "All-Projects",
|
|
"description": "Access inherited by all other projects."
|
|
},
|
|
"local": {},
|
|
"owner_of": [
|
|
"refs/*"
|
|
],
|
|
"can_upload": true,
|
|
"can_add": true,
|
|
"config_visible": true
|
|
}
|
|
}
|
|
----
|
|
|
|
[[access-section-info]]
|
|
AccessSectionInfo
|
|
~~~~~~~~~~~~~~~~~
|
|
The `AccessSectionInfo` describes the access rights that are assigned
|
|
on a ref.
|
|
|
|
[options="header",width="50%",cols="1,^1,5"]
|
|
|==================================
|
|
|Field Name ||Description
|
|
|`permissions` ||
|
|
The permissions assigned on the ref of this access section as a map
|
|
that maps the permission names to link:#permission-info[PermissionInfo]
|
|
entities.
|
|
|==================================
|
|
|
|
[[permission-info]]
|
|
PermissionInfo
|
|
~~~~~~~~~~~~~~
|
|
The `PermissionInfo` entity contains information about an assigned
|
|
permission.
|
|
|
|
[options="header",width="50%",cols="1,^1,5"]
|
|
|==================================
|
|
|Field Name ||Description
|
|
|`label` |optional|
|
|
The name of the label. Not set if it's not a label permission.
|
|
|`exclusive` |not set if `false`|
|
|
Whether this permission is assigned exclusively.
|
|
|`rules` ||
|
|
The rules assigned for this permission as a map that maps the UUIDs of
|
|
the groups for which the permission are assigned to
|
|
link:#permission-info[PermissionRuleInfo] entities.
|
|
|==================================
|
|
|
|
[[permission-rule-info]]
|
|
PermissionRuleInfo
|
|
~~~~~~~~~~~~~~~~~~
|
|
The `PermissionRuleInfo` entity contains information about a permission
|
|
rule that is assigned to group.
|
|
|
|
[options="header",width="50%",cols="1,^1,5"]
|
|
|==================================
|
|
|Field Name ||Description
|
|
|`action` ||
|
|
The action of this rule. For normal permissions this can be `ALLOW`,
|
|
`DENY` or `BLOCK`. Special values for global capabilities are
|
|
`INTERACTIVE` and `BATCH`.
|
|
|`force` |not set if `false`|
|
|
Whether the force flag is set.
|
|
|`min` |
|
|
not set if range if empty (from `0` to `0`) or not set|
|
|
The min value of the permission range.
|
|
|`max` |
|
|
not set if range if empty (from `0` to `0`) or not set|
|
|
The max value of the permission range.
|
|
|==================================
|
|
|
|
[[project-access-info]]
|
|
ProjectAccessInfo
|
|
~~~~~~~~~~~~~~~~~
|
|
The `ProjectAccessInfo` entity contains information about the access
|
|
rights for a project.
|
|
|
|
[options="header",width="50%",cols="1,^1,5"]
|
|
|==================================
|
|
|Field Name ||Description
|
|
|`revision` ||
|
|
The revision of the `refs/meta/config` branch from which the access
|
|
rights were loaded.
|
|
|`inherits_from` |not set for the `All-Project` project|
|
|
The parent project from which permissions are inherited as a
|
|
link:rest-api-projects.html#project-info[ProjectInfo] entity.
|
|
|`local` ||
|
|
The local access rights of the project as a map that maps the refs to
|
|
link:#access-section-info[AccessSectionInfo] entities.
|
|
|`owner_of` ||The list of refs owned by the calling user.
|
|
|`can_upload` |not set if `false`|
|
|
Whether the calling user can upload to any ref.
|
|
|`can_add` |not set if `false`|
|
|
Whether the calling user can add any ref.
|
|
|`config_visible` |not set if `false`|
|
|
Whether the calling user can see the `refs/meta/config` branch of the
|
|
project.
|
|
|==================================
|
|
|
|
|
|
GERRIT
|
|
------
|
|
Part of link:index.html[Gerrit Code Review]
|