summaryrefslogtreecommitdiff
path: root/lib/api/issues.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/issues.rb')
-rw-r--r--lib/api/issues.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/api/issues.rb b/lib/api/issues.rb
index 850e99981ff..49911fa2988 100644
--- a/lib/api/issues.rb
+++ b/lib/api/issues.rb
@@ -231,6 +231,59 @@ module API
authorize!(:destroy_issue, issue)
issue.destroy
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
+ post ":id/issues/:issue_idsubscribe" 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
+ 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)
+ issue.toggle_subscription(current_user)
+ present issue, with: Entities::Issue, current_user: current_user
+ else
+ not_modified!
+ end
+ end
+
+ # Unsubscribes from 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/unsubscribe
+ post ":id/issues/:issue_id/unsubscribe" do
+ issue = user_project.issues.find_by(id: params[:issue_id])
+
+ if issue.subscribed?(current_user)
+ issue.unsubscribe(current_user)
+ present issue, with: Entities::Issue, current_user: current_user
+ else
+ not_modified!
+ end
+ end
end
end
end