Commit e96d77d3 authored by Sebastian Ziebell's avatar Sebastian Ziebell

API: issues documentation and API functions updated

The issues documentation is updated with infos to status codes and the deprecated `DELETE` function and
how to close an issue. A few more tests added to check status codes of API functions.
parent dffc2b8a
## List issues ## List issues
Get all issues created by authenticed user. Get all issues created by authenticed user. This function takes pagination parameters
`page` and `per_page` to get a list of issues.
``` ```
GET /issues GET /issues
...@@ -68,9 +69,18 @@ GET /issues ...@@ -68,9 +69,18 @@ GET /issues
] ]
``` ```
Return values:
+ `200 Ok` on success and the list of issues
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if something fails
## List project issues ## List project issues
Get a list of project issues. Get a list of project issues. This function accepts pagination parameters `page` and `per_page`
to return the list of project issues.
``` ```
GET /projects/:id/issues GET /projects/:id/issues
...@@ -80,9 +90,16 @@ Parameters: ...@@ -80,9 +90,16 @@ Parameters:
+ `id` (required) - The ID of a project + `id` (required) - The ID of a project
Return values:
+ `200 Ok` on success and the list of project issues
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID not found
## Single issue ## Single issue
Get a project issue. Gets a single project issue.
``` ```
GET /projects/:id/issues/:issue_id GET /projects/:id/issues/:issue_id
...@@ -133,9 +150,16 @@ Parameters: ...@@ -133,9 +150,16 @@ Parameters:
} }
``` ```
Return values:
+ `200 Ok` on success and the list of project issues
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID or issue ID not found
## New issue ## New issue
Create a new project issue. Creates a new project issue.
``` ```
POST /projects/:id/issues POST /projects/:id/issues
...@@ -150,11 +174,17 @@ Parameters: ...@@ -150,11 +174,17 @@ Parameters:
+ `milestone_id` (optional) - The ID of a milestone to assign issue + `milestone_id` (optional) - The ID of a milestone to assign issue
+ `labels` (optional) - Comma-separated label names for an issue + `labels` (optional) - Comma-separated label names for an issue
Will return created issue with status `201 Created` on success, or `404 Not found` on fail. Return values:
+ `201 Created` on success and the newly created project issue
+ `400 Bad Request` if the required attribute title is not given
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID not found
## Edit issue ## Edit issue
Update an existing project issue. Updates an existing project issue. This function is also used to mark an issue as closed.
``` ```
PUT /projects/:id/issues/:issue_id PUT /projects/:id/issues/:issue_id
...@@ -171,5 +201,28 @@ Parameters: ...@@ -171,5 +201,28 @@ Parameters:
+ `labels` (optional) - Comma-separated label names for an issue + `labels` (optional) - Comma-separated label names for an issue
+ `closed` (optional) - The state of an issue (0 = false, 1 = true) + `closed` (optional) - The state of an issue (0 = false, 1 = true)
Will return updated issue with status `200 OK` on success, or `404 Not found` on fail. Return values:
+ `200 Ok` on success and the update project issue
+ `401 Unauthorized` if user is not authenticated
+ `404 Not Found` if project ID or issue ID not found
## Delete existing issue (**Deprecated**)
The function is deprecated and returns a `405 Method Not Allowed`
error if called. An issue gets now closed and is done by calling `PUT /projects/:id/issues/:issue_id` with
parameter `closed` set to 1.
```
DELETE /projects/:id/issues/:issue_id
```
Parameters:
+ `id` (required) - The project ID
+ `issue_id` (required) - The ID of the issue
Return values:
+ `405 Method Not Allowed` is always returned, because the function is deprecated
...@@ -48,6 +48,7 @@ module Gitlab ...@@ -48,6 +48,7 @@ module Gitlab
# Example Request: # Example Request:
# POST /projects/:id/issues # POST /projects/:id/issues
post ":id/issues" do post ":id/issues" do
bad_request!(:title) unless params[:title].present?
attrs = attributes_for_keys [:title, :description, :assignee_id, :milestone_id] attrs = attributes_for_keys [:title, :description, :assignee_id, :milestone_id]
attrs[:label_list] = params[:labels] if params[:labels].present? attrs[:label_list] = params[:labels] if params[:labels].present?
@issue = user_project.issues.new attrs @issue = user_project.issues.new attrs
......
...@@ -41,6 +41,11 @@ describe Gitlab::API do ...@@ -41,6 +41,11 @@ describe Gitlab::API do
response.status.should == 200 response.status.should == 200
json_response['title'].should == issue.title json_response['title'].should == issue.title
end end
it "should return 404 if issue id not found" do
get api("/projects/#{project.id}/issues/54321", user)
response.status.should == 404
end
end end
describe "POST /projects/:id/issues" do describe "POST /projects/:id/issues" do
...@@ -52,6 +57,11 @@ describe Gitlab::API do ...@@ -52,6 +57,11 @@ describe Gitlab::API do
json_response['description'].should be_nil json_response['description'].should be_nil
json_response['labels'].should == ['label', 'label2'] json_response['labels'].should == ['label', 'label2']
end end
it "should return a 400 bad request if title not given" do
post api("/projects/#{project.id}/issues", user), labels: 'label, label2'
response.status.should == 400
end
end end
describe "PUT /projects/:id/issues/:issue_id to update only title" do describe "PUT /projects/:id/issues/:issue_id to update only title" do
...@@ -62,6 +72,12 @@ describe Gitlab::API do ...@@ -62,6 +72,12 @@ describe Gitlab::API do
json_response['title'].should == 'updated title' json_response['title'].should == 'updated title'
end end
it "should return 404 error if issue id not found" do
put api("/projects/#{project.id}/issues/44444", user),
title: 'updated title'
response.status.should == 404
end
end end
describe "PUT /projects/:id/issues/:issue_id to update state and label" do describe "PUT /projects/:id/issues/:issue_id to update state and label" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment