merge_requests.md 10.7 KB
Newer Older
Marin Jankovski's avatar
Marin Jankovski committed
1 2
# Merge requests

Valeriy Sizov's avatar
Valeriy Sizov committed
3 4
## List merge requests

5
Get all merge requests for this project. 
6 7 8
The `state` parameter can be used to get only merge requests with a given state (`opened`, `closed`, or `merged`) or all of them (`all`).
The pagination parameters `page` and `per_page` can be used to restrict the list of merge requests. With GitLab 8.2 the return fields `upvotes` and
`downvotes` are deprecated and always return `0`.
Valeriy Sizov's avatar
Valeriy Sizov committed
9 10

```
11
GET /projects/:id/merge_requests
12 13
GET /projects/:id/merge_requests?state=opened
GET /projects/:id/merge_requests?state=all
14
GET /projects/:id/merge_requests?iid=42
Valeriy Sizov's avatar
Valeriy Sizov committed
15 16 17 18
```

Parameters:

19
- `id` (required) - The ID of a project
20
- `iid` (optional) - Return the request having the given `iid`
21
- `state` (optional) - Return `all` requests or just those that are `merged`, `opened` or `closed`
22 23
- `order_by` (optional) - Return requests ordered by `created_at` or `updated_at` fields. Default is `created_at`
- `sort` (optional) - Return requests sorted in `asc` or `desc` order. Default is `desc`
Valeriy Sizov's avatar
Valeriy Sizov committed
24 25 26

```json
[
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
27 28 29 30 31 32 33 34
  {
    "id": 1,
    "iid": 1,
    "target_branch": "master",
    "source_branch": "test1",
    "project_id": 3,
    "title": "test1",
    "state": "opened",
35 36
    "upvotes": 0,
    "downvotes": 0,
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
37 38 39
    "author": {
      "id": 1,
      "username": "admin",
40
      "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
41 42 43 44 45 46 47
      "name": "Administrator",
      "state": "active",
      "created_at": "2012-04-29T08:46:00Z"
    },
    "assignee": {
      "id": 1,
      "username": "admin",
48
      "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
49 50 51
      "name": "Administrator",
      "state": "active",
      "created_at": "2012-04-29T08:46:00Z"
52
    },
53 54
    "description":"fixed login page css paddings",
    "work_in_progress": false
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
55
  }
Valeriy Sizov's avatar
Valeriy Sizov committed
56 57 58
]
```

59 60
## Get single MR

61
Shows information about a single merge request. With GitLab 8.2 the return fields `upvotes` and `downvotes` are deprecated and always return `0`.
Valeriy Sizov's avatar
Valeriy Sizov committed
62 63

```
64
GET /projects/:id/merge_request/:merge_request_id
Valeriy Sizov's avatar
Valeriy Sizov committed
65 66 67 68
```

Parameters:

69 70
- `id` (required) - The ID of a project
- `merge_request_id` (required) - The ID of MR
Valeriy Sizov's avatar
Valeriy Sizov committed
71 72 73

```json
{
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
74 75 76 77 78 79 80
  "id": 1,
  "iid": 1,
  "target_branch": "master",
  "source_branch": "test1",
  "project_id": 3,
  "title": "test1",
  "state": "merged",
81 82
  "upvotes": 0,
  "downvotes": 0,
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
83 84 85
  "author": {
    "id": 1,
    "username": "admin",
86
    "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
87 88 89 90 91 92 93
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
  },
  "assignee": {
    "id": 1,
    "username": "admin",
94
    "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
95 96 97
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
98
  },
99 100
  "description":"fixed login page css paddings",
  "work_in_progress": false
Valeriy Sizov's avatar
Valeriy Sizov committed
101 102 103
}
```

104 105
## Get single MR commits

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
106
Get a list of merge request commits.
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

```
GET /projects/:id/merge_request/:merge_request_id/commits
```

Parameters:

- `id` (required) - The ID of a project
- `merge_request_id` (required) - The ID of MR


```json
[
  {
    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
    "short_id": "ed899a2f4b5",
    "title": "Replace sanitize with escape once",
    "author_name": "Dmitriy Zaporozhets",
    "author_email": "dzaporozhets@sphereconsultinginc.com",
    "created_at": "2012-09-20T11:50:22+03:00",
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
127
    "message": "Replace sanitize with escape once"
128 129 130 131 132 133 134 135
  },
  {
    "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
    "short_id": "6104942438c",
    "title": "Sanitize for network graph",
    "author_name": "randx",
    "author_email": "dmitriy.zaporozhets@gmail.com",
    "created_at": "2012-09-20T09:06:12+03:00",
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
136
    "message": "Sanitize for network graph"
137 138 139 140
  }
]
```

141 142
## Get single MR changes

143 144 145
Shows information about the merge request including its files and changes.
With GitLab 8.2 the return fields `upvotes` and `downvotes` are deprecated and
always return `0`.
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

```
GET /projects/:id/merge_request/:merge_request_id/changes
```

Parameters:

- `id` (required) - The ID of a project
- `merge_request_id` (required) - The ID of MR

```json
{
  "id": 21,
  "iid": 1,
  "project_id": 4,
  "title": "Blanditiis beatae suscipit hic assumenda et molestias nisi asperiores repellat et.",
  "description": "Qui voluptatibus placeat ipsa alias quasi. Deleniti rem ut sint. Optio velit qui distinctio.",
163
  "work_in_progress": false,
164 165 166 167 168
  "state": "reopened",
  "created_at": "2015-02-02T19:49:39.159Z",
  "updated_at": "2015-02-02T20:08:49.959Z",
  "target_branch": "secret_token",
  "source_branch": "version-1-9",
169 170
  "upvotes": 0,
  "downvotes": 0,
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
  "author": {
    "name": "Chad Hamill",
    "username": "jarrett",
    "id": 5,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/b95567800f828948baf5f4160ebb2473?s=40&d=identicon"
  },
  "assignee": {
    "name": "Administrator",
    "username": "root",
    "id": 1,
    "state": "active",
    "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40&d=identicon"
  },
  "source_project_id": 4,
  "target_project_id": 4,
  "labels": [ ],
  "milestone": {
    "id": 5,
    "iid": 1,
    "project_id": 4,
    "title": "v2.0",
    "description": "Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
    "state": "closed",
    "created_at": "2015-02-02T19:49:26.013Z",
    "updated_at": "2015-02-02T19:49:26.013Z",
    "due_date": null
  },
199
  "changes": [
200 201 202 203 204 205 206 207 208 209 210 211 212 213
    {
    "old_path": "VERSION",
    "new_path": "VERSION",
    "a_mode": "100644",
    "b_mode": "100644",
    "diff": "--- a/VERSION\ +++ b/VERSION\ @@ -1 +1 @@\ -1.9.7\ +1.9.8",
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false
    }
  ]
}
```

Valeriy Sizov's avatar
Valeriy Sizov committed
214 215
## Create MR

216 217
Creates a new merge request. With GitLab 8.2 the return fields `upvotes` and `
downvotes` are deprecated and always return `0`.
Valeriy Sizov's avatar
Valeriy Sizov committed
218 219

```
220
POST /projects/:id/merge_requests
Valeriy Sizov's avatar
Valeriy Sizov committed
221 222 223 224
```

Parameters:

225 226 227 228 229
- `id` (required)                - The ID of a project
- `source_branch` (required)     - The source branch
- `target_branch` (required)     - The target branch
- `assignee_id` (optional)       - Assignee user ID
- `title` (required)             - Title of MR
230
- `description` (optional)       - Description of MR
231
- `target_project_id` (optional) - The target project (numeric id)
232
- `labels` (optional)            - Labels for MR as a comma-separated list
Valeriy Sizov's avatar
Valeriy Sizov committed
233 234 235

```json
{
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
236 237 238 239 240 241
  "id": 1,
  "target_branch": "master",
  "source_branch": "test1",
  "project_id": 3,
  "title": "test1",
  "state": "opened",
242 243
  "upvotes": 0,
  "downvotes": 0,
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
244 245 246
  "author": {
    "id": 1,
    "username": "admin",
247
    "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
248 249 250 251 252 253 254
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
  },
  "assignee": {
    "id": 1,
    "username": "admin",
255
    "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
256 257 258
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
259 260
  },
  "description":"fixed login page css paddings"
Valeriy Sizov's avatar
Valeriy Sizov committed
261 262 263
}
```

264 265 266
If the operation is successful, 200 and the newly created merge request is returned.
If an error occurs, an error number and a message explaining the reason is returned.

Valeriy Sizov's avatar
Valeriy Sizov committed
267 268
## Update MR

269 270
Updates an existing merge request. You can change the target branch, title, or even close the MR. With GitLab 8.2 the return fields `upvotes` and `downvotes`
are deprecated and always return `0`.
Valeriy Sizov's avatar
Valeriy Sizov committed
271 272

```
273
PUT /projects/:id/merge_request/:merge_request_id
Valeriy Sizov's avatar
Valeriy Sizov committed
274 275 276 277
```

Parameters:

278 279 280 281 282
- `id` (required)               - The ID of a project
- `merge_request_id` (required) - ID of MR
- `target_branch`               - The target branch
- `assignee_id`                 - Assignee user ID
- `title`                       - Title of MR
283
- `description`                 - Description of MR
284
- `state_event`                 - New state (close|reopen|merge)
285
- `labels` (optional)           - Labels for MR as a comma-separated list
Valeriy Sizov's avatar
Valeriy Sizov committed
286 287 288

```json
{
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
289 290 291 292
  "id": 1,
  "target_branch": "master",
  "project_id": 3,
  "title": "test1",
293
  "description": "description1",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
294
  "state": "opened",
295 296
  "upvotes": 0,
  "downvotes": 0,
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
297 298 299
  "author": {
    "id": 1,
    "username": "admin",
300
    "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
301 302 303 304 305 306 307
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
  },
  "assignee": {
    "id": 1,
    "username": "admin",
308
    "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
309 310 311 312
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
  }
Valeriy Sizov's avatar
Valeriy Sizov committed
313 314
}
```
315

316 317 318
If the operation is successful, 200 and the updated merge request is returned.
If an error occurs, an error number and a message explaining the reason is returned.

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
319 320
## Accept MR

321 322
Merge changes submitted with MR using this API. With GitLab 8.2 the return
fields `upvotes` and `downvotes` are deprecated and always return `0`.
323

324
If merge success you get `200 OK`.
325

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
326
If it has some conflicts and can not be merged - you get 405 and error message 'Branch cannot be merged'
327

328
If merge request is already merged or closed - you get 405 and error message 'Method Not Allowed'
329

330
If you don't have permissions to accept this merge request - you'll get a 401
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
331 332 333 334 335 336 337

```
PUT /projects/:id/merge_request/:merge_request_id/merge
```

Parameters:

338 339 340
- `id` (required)                   - The ID of a project
- `merge_request_id` (required)     - ID of MR
- `merge_commit_message` (optional) - Custom merge commit message
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
341 342 343 344 345 346 347 348 349

```json
{
  "id": 1,
  "target_branch": "master",
  "source_branch": "test1",
  "project_id": 3,
  "title": "test1",
  "state": "merged",
350 351
  "upvotes": 0,
  "downvotes": 0,
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
352 353 354
  "author": {
    "id": 1,
    "username": "admin",
355
    "email": "admin@example.com",
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
356 357 358 359 360 361 362
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
  },
  "assignee": {
    "id": 1,
    "username": "admin",
363
    "email": "admin@example.com",
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
364 365 366 367 368 369 370
    "name": "Administrator",
    "state": "active",
    "created_at": "2012-04-29T08:46:00Z"
  }
}
```

Valeriy Sizov's avatar
Valeriy Sizov committed
371 372
## Post comment to MR

373
Adds a comment to a merge request.
Valeriy Sizov's avatar
Valeriy Sizov committed
374 375

```
376
POST /projects/:id/merge_request/:merge_request_id/comments
Valeriy Sizov's avatar
Valeriy Sizov committed
377 378 379 380
```

Parameters:

381 382 383
- `id` (required)               - The ID of a project
- `merge_request_id` (required) - ID of merge request
- `note` (required)             - Text of comment
Valeriy Sizov's avatar
Valeriy Sizov committed
384 385 386

```json
{
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
387
  "note": "text1"
Valeriy Sizov's avatar
Valeriy Sizov committed
388 389
}
```
390 391 392 393 394 395 396 397 398 399 400

## Get the comments on a MR

Gets all the comments associated with a merge request.

```
GET /projects/:id/merge_request/:merge_request_id/comments
```

Parameters:

401 402
- `id` (required)               - The ID of a project
- `merge_request_id` (required) - ID of merge request
403 404 405

```json
[
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
406 407 408 409 410
  {
    "note": "this is the 1st comment on the 2merge merge request",
    "author": {
      "id": 11,
      "username": "admin",
411
      "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
412 413 414 415 416 417
      "name": "Administrator",
      "state": "active",
      "created_at": "2014-03-06T08:17:35.000Z"
    }
  },
  {
418
    "note": "Status changed to closed",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
419 420 421
    "author": {
      "id": 11,
      "username": "admin",
422
      "email": "admin@example.com",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
423 424 425
      "name": "Administrator",
      "state": "active",
      "created_at": "2014-03-06T08:17:35.000Z"
426
    }
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
427
  }
428 429
]
```
430

431
## Comments on merge requets
432 433

Comments are done via the notes resource.