diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 0f013883c81f9adee1e6453e79e3c2fa528bef05..8f094e0c7236fa6bf9649f4983f4b30ba5d8de91 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -147,6 +147,19 @@ module Gitlab
         @hooks = paginate user_project.hooks
         present @hooks, with: Entities::Hook
       end
+      
+      # Get a project hook
+      #
+      # Parameters:
+      #   id (required) - The ID or code name of a project
+      #   hook_id (required) - The ID of a project hook
+      # Example Request:
+      #   GET /projects/:id/hooks/:hook_id
+      get ":id/hooks/:hook_id" do
+        @hook = user_project.hooks.find(params[:hook_id])
+        present @hook, with: Entities::Hook
+      end
+      
 
       # Add hook to project
       #
@@ -164,6 +177,27 @@ module Gitlab
           error!({'message' => '404 Not found'}, 404)
         end
       end
+      
+      # Update an existing project hook
+      #
+      # Parameters:
+      #   id (required) - The ID or code name of a project
+      #   hook_id (required) - The ID of a project hook
+      #   url (required) - The hook URL
+      # Example Request:
+      #   PUT /projects/:id/hooks/:hook_id
+      put ":id/hooks/:hook_id" do
+        @hook = user_project.hooks.find(params[:hook_id])
+        authorize! :admin_project, user_project
+
+        attrs = attributes_for_keys [:url]
+
+        if @hook.update_attributes attrs
+          present @hook, with: Entities::Hook
+        else
+          not_found!
+        end
+      end
 
       # Delete project hook
       #