Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
gitlab-ce
Commits
fa300909
Commit
fa300909
authored
Apr 12, 2016
by
Robert Schilling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make subscription API more RESTful
parent
f875189b
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
68 additions
and
72 deletions
+68
-72
doc/api/issues.md
doc/api/issues.md
+14
-13
doc/api/merge_requests.md
doc/api/merge_requests.md
+14
-14
lib/api/helpers.rb
lib/api/helpers.rb
+1
-1
lib/api/issues.rb
lib/api/issues.rb
+6
-23
lib/api/merge_requests.rb
lib/api/merge_requests.rb
+7
-7
spec/requests/api/issues_spec.rb
spec/requests/api/issues_spec.rb
+19
-7
spec/requests/api/merge_requests_spec.rb
spec/requests/api/merge_requests_spec.rb
+7
-7
No files found.
doc/api/issues.md
View file @
fa300909
...
...
@@ -408,13 +408,14 @@ Example response:
## Subscribe to an issue
Subscribes to an issue to receive notifications. If the operation is successful,
status code
`201`
together with the updated issue is returned. If the user is
already subscribed to the issue, the status code
`304`
is returned. If the
project or issue is not found, status code
`404`
is returned.
Subscribes the authenticated user to an issue to receive notifications. If the
operation is successful, status code
`201`
together with the updated issue is
returned. If the user is already subscribed to the issue, the status code
`304`
is returned. If the project or issue is not found, status code
`404`
is
returned.
```
POST /projects/:id/issues/:issue_id/subscri
be
POST /projects/:id/issues/:issue_id/subscri
ption
```
| Attribute | Type | Required | Description |
...
...
@@ -423,7 +424,7 @@ POST /projects/:id/issues/:issue_id/subscribe
|
`issue_id`
| integer | yes | The ID of a project's issue |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/subscri
be
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/subscri
ption
```
Example response:
...
...
@@ -461,14 +462,14 @@ Example response:
## Unsubscribe from an issue
Unsubscribes
from an issue to not receive notifications from that issue. If the
operation is successful, status code
`201`
together with the updated issue is
returned. If the user is not subscribed to the issue, the status code
`304`
is returned. If the project or issue is not found, status code
`404`
is
returned.
Unsubscribes
the authenticated user from the issue to not receive notifications
from it. If the operation is successful, status code
`200`
together with the
updated issue is returned. If the user is not subscribed to the issue, the
status code
`304`
is returned. If the project or issue is not found, status code
`404`
is
returned.
```
POST /projects/:id/issues/:issue_id/unsubscribe
DELETE /projects/:id/issues/:issue_id/subscription
```
| Attribute | Type | Required | Description |
...
...
@@ -477,7 +478,7 @@ POST /projects/:id/issues/:issue_id/unsubscribe
|
`issue_id`
| integer | yes | The ID of a project's issue |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/unsubscribe
curl
-X
DELETE
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/subscription
```
Example response:
...
...
doc/api/merge_requests.md
View file @
fa300909
...
...
@@ -609,14 +609,14 @@ Example response:
## Subscribe to a merge request
Subscribes t
o a merge request to receive notification. If the operation is
successful, status code
`201`
together with the updated merge request is
re
turned. If the user is already subscribed to the merge request, the status
code
`304`
is returned. If the project or merge request is not found, status
code
`404`
is returned.
Subscribes t
he authenticated user to a merge request to receive notification. If
the operation is successful, status code
`201`
together with the updated merge
re
quest is returned. If the user is already subscribed to the merge request, the
status code
`304`
is returned. If the project or merge request is not found,
status
code
`404`
is returned.
```
POST /projects/:id/merge_requests/:merge_request_id/subscri
be
POST /projects/:id/merge_requests/:merge_request_id/subscri
ption
```
| Attribute | Type | Required | Description |
...
...
@@ -625,7 +625,7 @@ POST /projects/:id/merge_requests/:merge_request_id/subscribe
|
`merge_request_id`
| integer | yes | The ID of the merge request |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscri
be
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscri
ption
```
Example response:
...
...
@@ -682,14 +682,14 @@ Example response:
```
## Unsubscribe from a merge request
Unsubscribes
from a merge request to not receive notifications from that merg
e
request. If the operation is successful, status code
`201`
together with the
updated merge request is returned. If the user is not subscribed to the merge
request, the status code
`304`
is returned. If the project or merge request is
not found, status code
`404`
is returned.
Unsubscribes
the authenticated user from a merge request to not receiv
e
notifications from that merge request. If the operation is successful, status
code
`200`
together with the updated merge request is returned. If the user is
not subscribed to the merge request, the status code
`304`
is returned. If the
project or merge request is
not found, status code
`404`
is returned.
```
POST /projects/:id/merge_requests/:merge_request_id/unsubscribe
DELETE /projects/:id/merge_requests/:merge_request_id/subscription
```
| Attribute | Type | Required | Description |
...
...
@@ -698,7 +698,7 @@ POST /projects/:id/merge_requests/:merge_request_id/unsubscribe
|
`merge_request_id`
| integer | yes | The ID of the merge request |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscribe
curl
-X
DELETE
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscription
```
Example response:
...
...
lib/api/helpers.rb
View file @
fa300909
...
...
@@ -242,7 +242,7 @@ module API
end
def
not_modified!
render_api_error!
(
'304 Not
m
odified'
,
304
)
render_api_error!
(
'304 Not
M
odified'
,
304
)
end
def
render_validation_error!
(
model
)
...
...
lib/api/issues.rb
View file @
fa300909
...
...
@@ -238,32 +238,15 @@ module API
# id (required) - The ID of a project
# issue_id (required) - The ID of a project issue
# Example Request:
# POST /projects/:id/issues/:issue_id
post
":id/issues/:issue_id
subscribe
"
do
# POST /projects/:id/issues/:issue_id
/subscription
post
":id/issues/:issue_id
/subscription
"
do
issue
=
user_project
.
issues
.
find_by
(
id:
params
[
:issue_id
])
if
!
issue
.
subscribed?
(
current_user
)
present
issue
,
with:
Entities
::
Issue
,
current_user:
current_user
else
if
issue
.
subscribed?
(
current_user
)
not_modified!
end
end
# Subscribes to a project issue
#
# Parameters:
# id (required) - The ID of a project
# issue_id (required) - The ID of a project issue
# Example Request:
# POST /projects/:id/issues/:issue_id/subscribe
post
":id/issues/:issue_id/subscribe"
do
issue
=
user_project
.
issues
.
find_by
(
id:
params
[
:issue_id
])
if
!
issue
.
subscribed?
(
current_user
)
else
issue
.
toggle_subscription
(
current_user
)
present
issue
,
with:
Entities
::
Issue
,
current_user:
current_user
else
not_modified!
end
end
...
...
@@ -273,8 +256,8 @@ module API
# id (required) - The ID of a project
# issue_id (required) - The ID of a project issue
# Example Request:
#
POST /projects/:id/issues/:issue_id/unsubscribe
post
":id/issues/:issue_id/unsubscribe
"
do
#
DELETE /projects/:id/issues/:issue_id/subscription
delete
":id/issues/:issue_id/subscription
"
do
issue
=
user_project
.
issues
.
find_by
(
id:
params
[
:issue_id
])
if
issue
.
subscribed?
(
current_user
)
...
...
lib/api/merge_requests.rb
View file @
fa300909
...
...
@@ -334,15 +334,15 @@ module API
# id (required) - The ID of a project
# merge_request_id (required) - The ID of a merge request
# Example Request:
# POST /projects/:id/issues/:merge_request_id/subscri
be
post
"
#{
path
}
/subscri
be
"
do
# POST /projects/:id/issues/:merge_request_id/subscri
ption
post
"
#{
path
}
/subscri
ption
"
do
merge_request
=
user_project
.
merge_requests
.
find
(
params
[
:merge_request_id
])
if
!
merge_request
.
subscribed?
(
current_user
)
if
merge_request
.
subscribed?
(
current_user
)
not_modified!
else
merge_request
.
toggle_subscription
(
current_user
)
present
merge_request
,
with:
Entities
::
MergeRequest
,
current_user:
current_user
else
not_modified!
end
end
...
...
@@ -352,8 +352,8 @@ module API
# id (required) - The ID of a project
# merge_request_id (required) - The ID of a merge request
# Example Request:
#
POST /projects/:id/merge_requests/:merge_request_id/unsubscribe
post
"
#{
path
}
/unsubscribe
"
do
#
DELETE /projects/:id/merge_requests/:merge_request_id/subscription
delete
"
#{
path
}
/subscription
"
do
merge_request
=
user_project
.
merge_requests
.
find
(
params
[
:merge_request_id
])
if
merge_request
.
subscribed?
(
current_user
)
...
...
spec/requests/api/issues_spec.rb
View file @
fa300909
...
...
@@ -571,33 +571,45 @@ describe API::API, api: true do
end
end
describe
'POST :id/issues/:issue_id/subscri
be
'
do
describe
'POST :id/issues/:issue_id/subscri
ption
'
do
it
'subscribes to an issue'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
be
"
,
user2
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
ption
"
,
user2
)
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
true
)
end
it
'returns 304 if already subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
be
"
,
user
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
ption
"
,
user
)
expect
(
response
.
status
).
to
eq
(
304
)
end
it
'returns 404 if the issue is not found'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/123/subscription"
,
user
)
expect
(
response
.
status
).
to
eq
(
404
)
end
end
describe
'
POST :id/issues/:issue_id/unsubscribe
'
do
describe
'
DELETE :id/issues/:issue_id/subscription
'
do
it
'unsubscribes from an issue'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
unsubscribe
"
,
user
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
subscription
"
,
user
)
expect
(
response
.
status
).
to
eq
(
20
1
)
expect
(
response
.
status
).
to
eq
(
20
0
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
false
)
end
it
'returns 304 if not subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
unsubscribe
"
,
user2
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
subscription
"
,
user2
)
expect
(
response
.
status
).
to
eq
(
304
)
end
it
'returns 404 if the issue is not found'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/123/subscription"
,
user
)
expect
(
response
.
status
).
to
eq
(
404
)
end
end
end
spec/requests/api/merge_requests_spec.rb
View file @
fa300909
...
...
@@ -516,31 +516,31 @@ describe API::API, api: true do
end
end
describe
'POST :id/merge_requests/:merge_request_id/subscri
be
'
do
describe
'POST :id/merge_requests/:merge_request_id/subscri
ption
'
do
it
'subscribes to a merge request'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
be
"
,
admin
)
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
ption
"
,
admin
)
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
true
)
end
it
'returns 304 if already subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
be
"
,
user
)
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
ption
"
,
user
)
expect
(
response
.
status
).
to
eq
(
304
)
end
end
describe
'
POST :id/merge_requests/:merge_request_id/unsubscribe
'
do
describe
'
DELETE :id/merge_requests/:merge_request_id/subscription
'
do
it
'unsubscribes from a merge request'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/unsubscribe
"
,
user
)
delete
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscription
"
,
user
)
expect
(
response
.
status
).
to
eq
(
20
1
)
expect
(
response
.
status
).
to
eq
(
20
0
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
false
)
end
it
'returns 304 if not subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/unsubscribe
"
,
admin
)
delete
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscription
"
,
admin
)
expect
(
response
.
status
).
to
eq
(
304
)
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment