Skip to content

Commit d77088b

Browse files
committed
Default /merge_request API endpoint to scope=created-by-me
This matches the behavior of the /issues endpoint.
1 parent d7505de commit d77088b

File tree

3 files changed

+31
-8
lines changed

3 files changed

+31
-8
lines changed

doc/api/merge_requests.md

+13-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ Every API call to merge requests must be authenticated.
44

55
## List merge requests
66

7-
Get all merge requests the authenticated user has access to.
7+
> [Introduced][ce-13060] in GitLab 9.5.
8+
9+
Get all merge requests the authenticated user has access to. By
10+
default it returns only merge requests created by the current user. To
11+
get all merge requests, use parameter `scope=all`.
12+
813
The `state` parameter can be used to get only merge requests with a
914
given state (`opened`, `closed`, or `merged`) or all of them (`all`).
1015
The pagination parameters `page` and `per_page` can be used to
@@ -32,9 +37,9 @@ Parameters:
3237
| `labels` | string | no | Return merge requests matching a comma separated list of labels |
3338
| `created_after` | datetime | no | Return merge requests created after the given time (inclusive) |
3439
| `created_before` | datetime | no | Return merge requests created before the given time (inclusive) |
35-
| `author_id` | integer | no | Returns merge requests created by the given user `id` |
40+
| `scope` | string | no | Return merge requests for the given scope: `created-by-me`, `assigned-to-me` or `all`. Defaults to `created-by-me` |
41+
| `author_id` | integer | no | Returns merge requests created by the given user `id`. Combine with `scope=all` or `scope=assigned-to-me` |
3642
| `assignee_id` | integer | no | Returns merge requests assigned to the given user `id` |
37-
| `scope` | string | no | Return merge requests for the given scope: `created-by-me`, `assigned-to-me` or `all` |
3843

3944
```json
4045
[
@@ -121,6 +126,9 @@ Parameters:
121126
| `labels` | string | no | Return merge requests matching a comma separated list of labels |
122127
| `created_after` | datetime | no | Return merge requests created after the given time (inclusive) |
123128
| `created_before` | datetime | no | Return merge requests created before the given time (inclusive) |
129+
| `scope` | string | no | Return merge requests for the given scope: `created-by-me`, `assigned-to-me` or `all` _([Introduced][ce-13060] in GitLab 9.5)_ |
130+
| `author_id` | integer | no | Returns merge requests created by the given user `id` _([Introduced][ce-13060] in GitLab 9.5)_ |
131+
| `assignee_id` | integer | no | Returns merge requests assigned to the given user `id` _([Introduced][ce-13060] in GitLab 9.5)_ |
124132

125133
```json
126134
[
@@ -1257,3 +1265,5 @@ Example response:
12571265
"total_time_spent": 3600
12581266
}
12591267
```
1268+
1269+
[ce-13060]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/13060

lib/api/merge_requests.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def find_merge_requests(args = {})
3838
optional :view, type: String, values: %w[simple], desc: 'If simple, returns the `iid`, URL, title, description, and basic state of merge request'
3939
optional :author_id, type: Integer, desc: 'Return merge requests which are authored by the user with the given ID'
4040
optional :assignee_id, type: Integer, desc: 'Return merge requests which are assigned to the user with the given ID'
41-
optional :scope, type: String, values: %w[created-by-me assigned-to-me all], default: 'all',
41+
optional :scope, type: String, values: %w[created-by-me assigned-to-me all],
4242
desc: 'Return merge requests for the given scope: `created-by-me`, `assigned-to-me` or `all`'
4343
use :pagination
4444
end
@@ -50,6 +50,8 @@ def find_merge_requests(args = {})
5050
end
5151
params do
5252
use :merge_requests_params
53+
optional :scope, type: String, values: %w[created-by-me assigned-to-me all], default: 'created-by-me',
54+
desc: 'Return merge requests for the given scope: `created-by-me`, `assigned-to-me` or `all`'
5355
end
5456
get do
5557
merge_requests = find_merge_requests

spec/requests/api/merge_requests_spec.rb

+15-4
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
let(:user2) { create(:user) }
4242

4343
it 'returns an array of all merge requests' do
44-
get api('/merge_requests', user)
44+
get api('/merge_requests', user), scope: :all
4545

4646
expect(response).to have_http_status(200)
4747
expect(response).to include_pagination_headers
@@ -54,7 +54,7 @@
5454
private_project = create(:empty_project, :private)
5555
merge_request3 = create(:merge_request, :simple, source_project: private_project, target_project: private_project, source_branch: 'other-branch')
5656

57-
get api('/merge_requests', user)
57+
get api('/merge_requests', user), scope: :all
5858

5959
expect(response).to have_http_status(200)
6060
expect(response).to include_pagination_headers
@@ -63,10 +63,21 @@
6363
.not_to include(merge_request3.id)
6464
end
6565

66+
it 'returns an array of merge requests created by current user if no scope is given' do
67+
merge_request3 = create(:merge_request, :simple, author: user2, assignee: user, source_project: project2, target_project: project2, source_branch: 'other-branch')
68+
69+
get api('/merge_requests', user2)
70+
71+
expect(response).to have_http_status(200)
72+
expect(json_response).to be_an Array
73+
expect(json_response.length).to eq(1)
74+
expect(json_response.first['id']).to eq(merge_request3.id)
75+
end
76+
6677
it 'returns an array of merge requests authored by the given user' do
6778
merge_request3 = create(:merge_request, :simple, author: user2, assignee: user, source_project: project2, target_project: project2, source_branch: 'other-branch')
6879

69-
get api('/merge_requests', user), author_id: user2.id
80+
get api('/merge_requests', user), author_id: user2.id, scope: :all
7081

7182
expect(response).to have_http_status(200)
7283
expect(json_response).to be_an Array
@@ -77,7 +88,7 @@
7788
it 'returns an array of merge requests assigned to the given user' do
7889
merge_request3 = create(:merge_request, :simple, author: user, assignee: user2, source_project: project2, target_project: project2, source_branch: 'other-branch')
7990

80-
get api('/merge_requests', user), assignee_id: user2.id
91+
get api('/merge_requests', user), assignee_id: user2.id, scope: :all
8192

8293
expect(response).to have_http_status(200)
8394
expect(json_response).to be_an Array

0 commit comments

Comments
 (0)