Commit 77bc1101074fe6458f0b0beaf19ef6663f735806

Authored by Valeriy Sizov
1 parent 6ffd2f3d

API: help page and comment

doc/api/merge_requests.md 0 → 100644
@@ -0,0 +1,194 @@ @@ -0,0 +1,194 @@
  1 +## List merge requests
  2 +
  3 +Get all MR for this project.
  4 +
  5 +```
  6 +GET /:id/merge_requests
  7 +```
  8 +
  9 +Parameters:
  10 +
  11 ++ `id` (required) - The ID or code name of a project
  12 +
  13 +```json
  14 +[
  15 + {
  16 + "id":1,
  17 + "target_branch":"master",
  18 + "source_branch":"test1",
  19 + "project_id":3,
  20 + "title":"test1",
  21 + "closed":true,
  22 + "merged":false,
  23 + "author":{
  24 + "id":1,
  25 + "email":"admin@local.host",
  26 + "name":"Administrator",
  27 + "blocked":false,
  28 + "created_at":"2012-04-29T08:46:00Z"
  29 + },
  30 + "assignee":{
  31 + "id":1,
  32 + "email":"admin@local.host",
  33 + "name":"Administrator",
  34 + "blocked":false,
  35 + "created_at":"2012-04-29T08:46:00Z"
  36 + }
  37 + }
  38 +]
  39 +```
  40 +
  41 +## Show MR
  42 +
  43 +Show information about MR.
  44 +
  45 +```
  46 +GET /:id/merge_request/:merge_request_id
  47 +```
  48 +
  49 +Parameters:
  50 +
  51 ++ `id` (required) - The ID or code name of a project
  52 ++ `merge_request_id` (required) - The ID of MR
  53 +
  54 +```json
  55 +{
  56 + "id":1,
  57 + "target_branch":"master",
  58 + "source_branch":"test1",
  59 + "project_id":3,
  60 + "title":"test1",
  61 + "closed":true,
  62 + "merged":false,
  63 + "author":{
  64 + "id":1,
  65 + "email":"admin@local.host",
  66 + "name":"Administrator",
  67 + "blocked":false,
  68 + "created_at":"2012-04-29T08:46:00Z"
  69 + },
  70 + "assignee":{
  71 + "id":1,
  72 + "email":"admin@local.host",
  73 + "name":"Administrator",
  74 + "blocked":false,
  75 + "created_at":"2012-04-29T08:46:00Z"
  76 + }
  77 +}
  78 +```
  79 +
  80 +
  81 +## Create MR
  82 +
  83 +Create MR.
  84 +
  85 +```
  86 +POST /:id/merge_requests
  87 +```
  88 +
  89 +Parameters:
  90 +
  91 ++ `id` (required) - The ID or code name of a project
  92 ++ `source_branch` (required) - The source branch
  93 ++ `target_branch` (required) - The target branch
  94 ++ `assignee_id` - Assignee user ID
  95 ++ `title` (required) - Title of MR
  96 +
  97 +```json
  98 +{
  99 + "id":1,
  100 + "target_branch":"master",
  101 + "source_branch":"test1",
  102 + "project_id":3,
  103 + "title":"test1",
  104 + "closed":true,
  105 + "merged":false,
  106 + "author":{
  107 + "id":1,
  108 + "email":"admin@local.host",
  109 + "name":"Administrator",
  110 + "blocked":false,
  111 + "created_at":"2012-04-29T08:46:00Z"
  112 + },
  113 + "assignee":{
  114 + "id":1,
  115 + "email":"admin@local.host",
  116 + "name":"Administrator",
  117 + "blocked":false,
  118 + "created_at":"2012-04-29T08:46:00Z"
  119 + }
  120 +}
  121 +```
  122 +
  123 +## Update MR
  124 +
  125 +Update MR. You can change branches, title, or even close the MR.
  126 +
  127 +```
  128 +PUT /:id/merge_request/:merge_request_id
  129 +```
  130 +
  131 +Parameters:
  132 +
  133 ++ `id` (required) - The ID or code name of a project
  134 ++ `merge_request_id` (required) - ID of MR
  135 ++ `source_branch` - The source branch
  136 ++ `target_branch` - The target branch
  137 ++ `assignee_id` - Assignee user ID
  138 ++ `title` - Title of MR
  139 ++ `closed` - Status of MR. true - closed
  140 +
  141 +
  142 +```json
  143 +{
  144 + "id":1,
  145 + "target_branch":"master",
  146 + "source_branch":"test1",
  147 + "project_id":3,
  148 + "title":"test1",
  149 + "closed":true,
  150 + "merged":false,
  151 + "author":{
  152 + "id":1,
  153 + "email":"admin@local.host",
  154 + "name":"Administrator",
  155 + "blocked":false,
  156 + "created_at":"2012-04-29T08:46:00Z"
  157 + },
  158 + "assignee":{
  159 + "id":1,
  160 + "email":"admin@local.host",
  161 + "name":"Administrator",
  162 + "blocked":false,
  163 + "created_at":"2012-04-29T08:46:00Z"
  164 + }
  165 +}
  166 +```
  167 +## Post comment to MR
  168 +
  169 +Post comment to MR
  170 +
  171 +```
  172 +POST /:id/merge_request/:merge_request_id/comments
  173 +```
  174 +
  175 +Parameters:
  176 +
  177 ++ `id` (required) - The ID or code name of a project
  178 ++ `merge_request_id` (required) - ID of MR
  179 ++ `note` (required) - Text of comment
  180 +
  181 +Will return created note with status `201 Created` on success, or `404 Not found` on fail.
  182 +
  183 +```json
  184 +{
  185 + "author":{
  186 + "id":1,
  187 + "email":"admin@local.host",
  188 + "name":"Administrator",
  189 + "blocked":false,
  190 + "created_at":"2012-04-29T08:46:00Z"
  191 + },
  192 + "note":"text1"
  193 +}
  194 +```
lib/api/merge_requests.rb
@@ -4,14 +4,30 @@ module Gitlab @@ -4,14 +4,30 @@ module Gitlab
4 before { authenticate! } 4 before { authenticate! }
5 5
6 resource :projects do 6 resource :projects do
7 - #list 7 +
  8 + # List merge requests
  9 + #
  10 + # Parameters:
  11 + # id (required) - The ID or code name of a project
  12 + #
  13 + # Example:
  14 + # GET /:id/merge_requests
  15 + #
8 get ":id/merge_requests" do 16 get ":id/merge_requests" do
9 authorize! :read_merge_request, user_project 17 authorize! :read_merge_request, user_project
10 18
11 - present user_project.merge_requests, with: Entities::MergeRequest 19 + present paginate(user_project.merge_requests), with: Entities::MergeRequest
12 end 20 end
13 21
14 - #show 22 + # Show MR
  23 + #
  24 + # Parameters:
  25 + # id (required) - The ID or code name of a project
  26 + # merge_request_id (required) - The ID of MR
  27 + #
  28 + # Example:
  29 + # GET /:id/merge_request/:merge_request_id
  30 + #
15 get ":id/merge_request/:merge_request_id" do 31 get ":id/merge_request/:merge_request_id" do
16 merge_request = user_project.merge_requests.find(params[:merge_request_id]) 32 merge_request = user_project.merge_requests.find(params[:merge_request_id])
17 33
@@ -20,7 +36,19 @@ module Gitlab @@ -20,7 +36,19 @@ module Gitlab
20 present merge_request, with: Entities::MergeRequest 36 present merge_request, with: Entities::MergeRequest
21 end 37 end
22 38
23 - #create merge_request 39 + # Create MR
  40 + #
  41 + # Parameters:
  42 + #
  43 + # id (required) - The ID or code name of a project
  44 + # source_branch (required) - The source branch
  45 + # target_branch (required) - The target branch
  46 + # assignee_id - Assignee user ID
  47 + # title (required) - Title of MR
  48 + #
  49 + # Example:
  50 + # POST /:id/merge_requests
  51 + #
24 post ":id/merge_requests" do 52 post ":id/merge_requests" do
25 attrs = attributes_for_keys [:source_branch, :target_branch, :assignee_id, :title] 53 attrs = attributes_for_keys [:source_branch, :target_branch, :assignee_id, :title]
26 merge_request = user_project.merge_requests.new(attrs) 54 merge_request = user_project.merge_requests.new(attrs)
@@ -36,7 +64,19 @@ module Gitlab @@ -36,7 +64,19 @@ module Gitlab
36 end 64 end
37 end 65 end
38 66
39 - #update merge_request 67 + # Update MR
  68 + #
  69 + # Parameters:
  70 + # id (required) - The ID or code name of a project
  71 + # merge_request_id (required) - ID of MR
  72 + # source_branch - The source branch
  73 + # target_branch - The target branch
  74 + # assignee_id - Assignee user ID
  75 + # title - Title of MR
  76 + # closed - Status of MR. true - closed
  77 + # Example:
  78 + # PUT /:id/merge_request/:merge_request_id
  79 + #
40 put ":id/merge_request/:merge_request_id" do 80 put ":id/merge_request/:merge_request_id" do
41 attrs = attributes_for_keys [:source_branch, :target_branch, :assignee_id, :title, :closed] 81 attrs = attributes_for_keys [:source_branch, :target_branch, :assignee_id, :title, :closed]
42 merge_request = user_project.merge_requests.find(params[:merge_request_id]) 82 merge_request = user_project.merge_requests.find(params[:merge_request_id])
@@ -52,7 +92,15 @@ module Gitlab @@ -52,7 +92,15 @@ module Gitlab
52 end 92 end
53 end 93 end
54 94
55 - #post comment to merge request 95 + # Post comment to merge request
  96 + #
  97 + # Parameters:
  98 + # id (required) - The ID or code name of a project
  99 + # merge_request_id (required) - ID of MR
  100 + # note (required) - Text of comment
  101 + # Examples:
  102 + # POST /:id/merge_request/:merge_request_id/comments
  103 + #
56 post ":id/merge_request/:merge_request_id/comments" do 104 post ":id/merge_request/:merge_request_id/comments" do
57 merge_request = user_project.merge_requests.find(params[:merge_request_id]) 105 merge_request = user_project.merge_requests.find(params[:merge_request_id])
58 note = merge_request.notes.new(note: params[:note], project_id: user_project.id) 106 note = merge_request.notes.new(note: params[:note], project_id: user_project.id)