Commit e119b0a0cb33b1b7f2dafcf17c2a94af40aed833

Authored by Sebastian Ziebell
1 parent ac4a09e9

API repository documentation updated, includes infos to return codes

The API documentation of repository is updated and now contains infos to status codes.
Code documentation is also adjusted for `GET /projects/:id/repository/commits` and includes infos to
pagination attributes. Tests are updated.
doc/api/repositories.md
1 -## Project repository branches 1 +## List repository branches
2 2
3 Get a list of repository branches from a project, sorted by name alphabetically. 3 Get a list of repository branches from a project, sorted by name alphabetically.
4 4
@@ -39,7 +39,14 @@ Parameters: @@ -39,7 +39,14 @@ Parameters:
39 ] 39 ]
40 ``` 40 ```
41 41
42 -## Project repository branch 42 +Return values:
  43 +
  44 ++ `200 Ok`on success and a list of repository branches for the project
  45 ++ `401 Unauthorized` if user is not authenticated
  46 ++ `404 Not Found` if project with ID not found
  47 +
  48 +
  49 +## Get single repository branch
43 50
44 Get a single project repository branch. 51 Get a single project repository branch.
45 52
@@ -79,12 +86,18 @@ Parameters: @@ -79,12 +86,18 @@ Parameters:
79 } 86 }
80 ``` 87 ```
81 88
82 -Will return status code `200` on success or `404 Not found` if the branch is not available. 89 +Return values:
83 90
  91 ++ `200 Ok` on success and the repository branch
  92 ++ `401 Unauthorized` if user is not authenticated
  93 ++ `404 Not Found` if the project ID or branch not found
84 94
85 -## Protect a project repository branch  
86 95
87 -Protect a single project repository branch. 96 +
  97 +## Protect repository branch
  98 +
  99 +Protects a single project repository branch. This is an idempotent function, protecting an already
  100 +protected repository branch still returns a `200 Ok` status code.
88 101
89 ``` 102 ```
90 PUT /projects/:id/repository/branches/:branch/protect 103 PUT /projects/:id/repository/branches/:branch/protect
@@ -122,9 +135,18 @@ Parameters: @@ -122,9 +135,18 @@ Parameters:
122 } 135 }
123 ``` 136 ```
124 137
125 -## Unprotect a project repository branch 138 +Return values:
  139 +
  140 ++ `200 Ok` on success and the updated repository branch
  141 ++ `401 Unauthorized` if user is not authenticated
  142 ++ `404 Not Found` if the the project ID or branch not found
126 143
127 -Unprotect a single project repository branch. 144 +
  145 +
  146 +## Unprotect repository branch
  147 +
  148 +Unprotects a single project repository branch. This is an idempotent function, unprotecting an already
  149 +unprotected repository branch still returns a `200 Ok` status code.
128 150
129 ``` 151 ```
130 PUT /projects/:id/repository/branches/:branch/unprotect 152 PUT /projects/:id/repository/branches/:branch/unprotect
@@ -162,7 +184,15 @@ Parameters: @@ -162,7 +184,15 @@ Parameters:
162 } 184 }
163 ``` 185 ```
164 186
165 -## Project repository tags 187 +Return values:
  188 +
  189 ++ `200 Ok` on success and the updated repository branch
  190 ++ `401 Unauthorized` if user is not authenticated
  191 ++ `404 Not Found` if the project ID or the branch not found
  192 +
  193 +
  194 +
  195 +## List project repository tags
166 196
167 Get a list of repository tags from a project, sorted by name in reverse alphabetical order. 197 Get a list of repository tags from a project, sorted by name in reverse alphabetical order.
168 198
@@ -201,7 +231,14 @@ Parameters: @@ -201,7 +231,14 @@ Parameters:
201 ] 231 ]
202 ``` 232 ```
203 233
204 -## Project repository commits 234 +Return values:
  235 +
  236 ++ `200 Ok` on success and the list of repository tags
  237 ++ `401 Unauthorized` if user is not authenticated
  238 ++ `404 Not Found` if the project ID not found
  239 +
  240 +
  241 +## List repository commits
205 242
206 Get a list of repository commits in a project. 243 Get a list of repository commits in a project.
207 244
@@ -212,7 +249,9 @@ GET /projects/:id/repository/commits @@ -212,7 +249,9 @@ GET /projects/:id/repository/commits
212 Parameters: 249 Parameters:
213 250
214 + `id` (required) - The ID of a project 251 + `id` (required) - The ID of a project
215 -+ `ref_name` (optional) - The name of a repository branch or tag 252 ++ `ref_name` (optional) - The name of a repository branch or tag or if not given the default branch
  253 ++ `page`(optional) - The page with the commits (pagination)
  254 ++ `per_page` (optional) - The number of commits per page (pagination)
216 255
217 ```json 256 ```json
218 [ 257 [
@@ -235,6 +274,13 @@ Parameters: @@ -235,6 +274,13 @@ Parameters:
235 ] 274 ]
236 ``` 275 ```
237 276
  277 +Return values:
  278 +
  279 ++ `200 Ok` on success and a list of commits
  280 ++ `401 Unauthorized` if the user is not authenticated
  281 ++ `404 Not Found` if the project ID not found
  282 +
  283 +
238 ## Raw blob content 284 ## Raw blob content
239 285
240 Get the raw file contents for a file. 286 Get the raw file contents for a file.
@@ -249,4 +295,10 @@ Parameters: @@ -249,4 +295,10 @@ Parameters:
249 + `sha` (required) - The commit or branch name 295 + `sha` (required) - The commit or branch name
250 + `filepath` (required) - The path the file 296 + `filepath` (required) - The path the file
251 297
252 -Will return the raw file contents. 298 +Return values:
  299 +
  300 ++ `200 Ok` on success and the raw content of the file
  301 ++ `400 Bad Request` if required attribute filepath is not given
  302 ++ `401 Unauthorized` if user is not authenticated
  303 ++ `404 Not Found` if project ID or sha commit or branch name not found
  304 +
lib/api/projects.rb
@@ -331,7 +331,9 @@ module Gitlab @@ -331,7 +331,9 @@ module Gitlab
331 # 331 #
332 # Parameters: 332 # Parameters:
333 # id (required) - The ID of a project 333 # id (required) - The ID of a project
334 - # ref_name (optional) - The name of a repository branch or tag 334 + # ref_name (optional) - The name of a repository branch or tag, if not given the default branch is used
  335 + # page (optional) - The page number of the commit pagination
  336 + # per_page (optional) - The number of elements per page used in pagination
335 # Example Request: 337 # Example Request:
336 # GET /projects/:id/repository/commits 338 # GET /projects/:id/repository/commits
337 get ":id/repository/commits" do 339 get ":id/repository/commits" do
spec/requests/api/projects_spec.rb
@@ -433,14 +433,19 @@ describe Gitlab::API do @@ -433,14 +433,19 @@ describe Gitlab::API do
433 end 433 end
434 434
435 it "should return success when deleting hook" do 435 it "should return success when deleting hook" do
436 - delete api("/projects/#{project.id}/hooks/#{hook.id}", user) 436 + delete api("/projects/#{project.id}/hooks", user), hook_id: hook.id
437 response.status.should == 200 437 response.status.should == 200
438 end 438 end
439 439
440 it "should return success when deleting non existent hook" do 440 it "should return success when deleting non existent hook" do
441 - delete api("/projects/#{project.id}/hooks/42", user) 441 + delete api("/projects/#{project.id}/hooks", user), hook_id: 42
442 response.status.should == 200 442 response.status.should == 200
443 end 443 end
  444 +
  445 + it "should return a 400 error if hook id not given" do
  446 + delete api("/projects/#{project.id}/hooks", user)
  447 + response.status.should == 400
  448 + end
444 end 449 end
445 450
446 describe "GET /projects/:id/repository/tags" do 451 describe "GET /projects/:id/repository/tags" do
@@ -480,11 +485,6 @@ describe Gitlab::API do @@ -480,11 +485,6 @@ describe Gitlab::API do
480 json_response.should be_an Array 485 json_response.should be_an Array
481 json_response.first['title'].should == snippet.title 486 json_response.first['title'].should == snippet.title
482 end 487 end
483 -  
484 - it "should return 401 error if user not authenticated" do  
485 - get api("/projects/#{project.id}/snippets")  
486 - response.status.should == 401  
487 - end  
488 end 488 end
489 489
490 describe "GET /projects/:id/snippets/:snippet_id" do 490 describe "GET /projects/:id/snippets/:snippet_id" do
@@ -525,12 +525,6 @@ describe Gitlab::API do @@ -525,12 +525,6 @@ describe Gitlab::API do
525 title: 'api test', file_name: 'sample.rb' 525 title: 'api test', file_name: 'sample.rb'
526 response.status.should == 400 526 response.status.should == 400
527 end 527 end
528 -  
529 - it "should return a 401 error if user not authenticated" do  
530 - post api("/projects/#{project.id}/snippets"),  
531 - title: 'api test', file_name: 'sample.rb', code: 'i=0'  
532 - response.status.should == 401  
533 - end  
534 end 528 end
535 529
536 describe "PUT /projects/:id/snippets/:shippet_id" do 530 describe "PUT /projects/:id/snippets/:shippet_id" do