access_requests.md 4.63 KB
Newer Older
Marcia Ramos's avatar
Marcia Ramos committed
1
# Group and project access requests API
2 3 4

 >**Note:** This feature was introduced in GitLab 8.11

5
## Valid access levels
6 7 8

 The access levels are defined in the `Gitlab::Access` module. Currently, these levels are recognized:

9
```plaintext
Mike Jang's avatar
Mike Jang committed
10
0 => No access
11 12 13
10 => Guest access
20 => Reporter access
30 => Developer access
Mark Chao's avatar
Mark Chao committed
14
40 => Maintainer access
15 16 17 18 19 20 21
50 => Owner access # Only valid for groups
```

## List access requests for a group or project

Gets a list of access requests viewable by the authenticated user.

22
```plaintext
23 24 25 26
GET /groups/:id/access_requests
GET /projects/:id/access_requests
```

27 28 29 30 31
| Attribute | Type           | Required | Description |
| --------- | -------------- | -------- | ----------- |
| `id`      | integer/string | yes      | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |

Example request:
32

33
```shell
Greg Myers's avatar
Greg Myers committed
34 35
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/access_requests"
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/access_requests"
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
```

Example response:

```json
[
 {
   "id": 1,
   "username": "raymond_smith",
   "name": "Raymond Smith",
   "state": "active",
   "created_at": "2012-10-22T14:13:35Z",
   "requested_at": "2012-10-22T14:13:35Z"
 },
 {
   "id": 2,
   "username": "john_doe",
   "name": "John Doe",
   "state": "active",
   "created_at": "2012-10-22T14:13:35Z",
   "requested_at": "2012-10-22T14:13:35Z"
 }
]
```

## Request access to a group or project

Requests access for the authenticated user to a group or project.

65
```plaintext
66 67 68 69
POST /groups/:id/access_requests
POST /projects/:id/access_requests
```

70 71 72 73 74
| Attribute | Type           | Required | Description |
| --------- | -------------- | -------- | ----------- |
| `id`      | integer/string | yes      | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |

Example request:
75

76
```shell
Greg Myers's avatar
Greg Myers committed
77 78
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/access_requests"
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/access_requests"
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
```

Example response:

```json
{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "created_at": "2012-10-22T14:13:35Z",
  "requested_at": "2012-10-22T14:13:35Z"
}
```

## Approve an access request

Approves an access request for the given user.

98
```plaintext
99 100 101 102
PUT /groups/:id/access_requests/:user_id/approve
PUT /projects/:id/access_requests/:user_id/approve
```

103 104 105 106 107 108 109
| Attribute      | Type           | Required | Description |
| -------------- | -------------- | -------- | ----------- |
| `id`           | integer/string | yes      | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `user_id`      | integer        | yes      | The user ID of the access requester                                                                             |
| `access_level` | integer        | no       | A valid access level (defaults: `30`, developer access level)                                                   |

Example request:
110

111
```shell
Greg Myers's avatar
Greg Myers committed
112 113
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/access_requests/:user_id/approve?access_level=20"
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/access_requests/:user_id/approve?access_level=20"
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
```

Example response:

```json
{
  "id": 1,
  "username": "raymond_smith",
  "name": "Raymond Smith",
  "state": "active",
  "created_at": "2012-10-22T14:13:35Z",
  "access_level": 20
}
```

## Deny an access request

Denies an access request for the given user.

133
```plaintext
134 135 136 137
DELETE /groups/:id/access_requests/:user_id
DELETE /projects/:id/access_requests/:user_id
```

138 139 140 141 142 143
| Attribute | Type           | Required | Description |
| --------- | -------------- | -------- | ----------- |
| `id`      | integer/string | yes      | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user |
| `user_id` | integer        | yes      | The user ID of the access requester                                                                             |

Example request:
144

145
```shell
Greg Myers's avatar
Greg Myers committed
146 147
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/access_requests/:user_id"
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/access_requests/:user_id"
148
```