summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG6
-rw-r--r--doc/api/notes.md16
-rw-r--r--lib/api/notes.rb18
-rw-r--r--spec/requests/api/notes_spec.rb8
4 files changed, 45 insertions, 3 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 4b28da4682b..b88d11ca521 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,7 @@
v 3.2.0
- - [API] create notes for snippets and issues
- - [API] list notes for snippets and issues
- - [API] list project wall notes
+ - [API] list, create issue notes
+ - [API] list, create snippet notes
+ - [API] list, create wall notes
- Remove project code - use path instead
- added username field to user
- rake task to fill usernames based on emails create namespaces for users
diff --git a/doc/api/notes.md b/doc/api/notes.md
index 24f86cca900..97899fa0f6e 100644
--- a/doc/api/notes.md
+++ b/doc/api/notes.md
@@ -87,6 +87,22 @@ Parameters:
## New note
+### New wall note
+
+Create a new wall note.
+
+```
+POST /projects/:id/notes
+```
+
+Parameters:
+
++ `id` (required) - The ID or code name of a project
++ `body` (required) - The content of a note
+
+Will return created note with status `201 Created` on success, or `404 Not found` on fail.
+
+
### New issue note
Create a new issue note.
diff --git a/lib/api/notes.rb b/lib/api/notes.rb
index 924eeaa3618..b47ff5c300f 100644
--- a/lib/api/notes.rb
+++ b/lib/api/notes.rb
@@ -17,6 +17,24 @@ module Gitlab
present paginate(@notes), with: Entities::Note
end
+ # Create a new project wall note
+ #
+ # Parameters:
+ # id (required) - The ID or code name of a project
+ # body (required) - The content of a note
+ # Example Request:
+ # POST /projects/:id/notes
+ post ":id/notes" do
+ @note = user_project.notes.new(note: params[:body])
+ @note.author = current_user
+
+ if @note.save
+ present @note, with: Entities::Note
+ else
+ not_found!
+ end
+ end
+
NOTEABLE_TYPES.each do |noteable_type|
noteables_str = noteable_type.to_s.underscore.pluralize
noteable_id_str = "#{noteable_type.to_s.underscore}_id"
diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb
index b7c8ffaf320..dc02e7a3efa 100644
--- a/spec/requests/api/notes_spec.rb
+++ b/spec/requests/api/notes_spec.rb
@@ -30,6 +30,14 @@ describe Gitlab::API do
end
end
+ describe "POST /projects/:id/notes" do
+ it "should create a new wall note" do
+ post api("/projects/#{project.id}/notes", user), body: 'hi!'
+ response.status.should == 201
+ json_response['body'].should == 'hi!'
+ end
+ end
+
describe "GET /projects/:id/noteable/:noteable_id/notes" do
context "when noteable is an Issue" do
it "should return an array of issue notes" do