commits.md 23.1 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
# Commits API

## List repository commits

Get a list of repository commits in a project.

```
GET /projects/:id/repository/commits
```

11
12
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
13
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
14
| `ref_name` | string | no | The name of a repository branch or tag or if not given the default branch |
15
16
| `since` | string | no | Only commits after or on this date will be returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ |
| `until` | string | no | Only commits before or on this date will be returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ |
Tiago Botelho's avatar
Tiago Botelho committed
17
18
| `path` | string | no | The file path |
| `all` | boolean | no | Retrieve every commit from the repository |
19
| `with_stats` | boolean | no | Stats about each commit will be added to the response |
Tiago Botelho's avatar
Tiago Botelho committed
20

21
```bash
22
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits"
23
24
25
```

Example response:
26
27
28
29
30
31
32
33
34

```json
[
  {
    "id": "ed899a2f4b50b4370feeea94676502b42383c746",
    "short_id": "ed899a2f4b5",
    "title": "Replace sanitize with escape once",
    "author_name": "Dmitriy Zaporozhets",
    "author_email": "dzaporozhets@sphereconsultinginc.com",
35
    "authored_date": "2012-09-20T11:50:22+03:00",
36
37
    "committer_name": "Administrator",
    "committer_email": "admin@example.com",
38
    "committed_date": "2012-09-20T11:50:22+03:00",
39
    "created_at": "2012-09-20T11:50:22+03:00",
40
    "message": "Replace sanitize with escape once",
41
42
43
    "parent_ids": [
      "6104942438c14ec7bd21c6cd5bd995272b3faff6"
    ]
44
45
46
47
48
49
50
  },
  {
    "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
    "short_id": "6104942438c",
    "title": "Sanitize for network graph",
    "author_name": "randx",
    "author_email": "dmitriy.zaporozhets@gmail.com",
51
52
    "committer_name": "Dmitriy",
    "committer_email": "dmitriy.zaporozhets@gmail.com",
53
    "created_at": "2012-09-20T09:06:12+03:00",
54
    "message": "Sanitize for network graph",
55
56
57
    "parent_ids": [
      "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
    ]
58
59
60
61
  }
]
```

Marc Siegfriedt's avatar
Marc Siegfriedt committed
62
63
64
65
66
67
68
69
70
71
72
73
## Create a commit with multiple files and actions

> [Introduced][ce-6096] in GitLab 8.13.

Create a commit by posting a JSON payload

```
POST /projects/:id/repository/commits
```

| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
74
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
75
| `branch` | string | yes | Name of the branch to commit into. To create a new branch, also provide `start_branch`. |
Marc Siegfriedt's avatar
Marc Siegfriedt committed
76
| `commit_message` | string | yes | Commit message |
77
| `start_branch` | string | no | Name of the branch to start the new commit from |
Marc Siegfriedt's avatar
Marc Siegfriedt committed
78
79
80
| `actions[]` | array | yes | An array of action hashes to commit as a batch. See the next table for what attributes it can take. |
| `author_email` | string | no | Specify the commit author's email address |
| `author_name` | string | no | Specify the commit author's name |
81
| `stats` | boolean | no | Include commit stats. Default is true |
82
| `force` | boolean | no | When `true` overwrites the target branch with a new commit based on the `start_branch` |
Marc Siegfriedt's avatar
Marc Siegfriedt committed
83
84
85

| `actions[]` Attribute | Type | Required | Description |
| --------------------- | ---- | -------- | ----------- |
86
| `action` | string | yes | The action to perform, `create`, `delete`, `move`, `update`, `chmod`|
Marc Siegfriedt's avatar
Marc Siegfriedt committed
87
| `file_path` | string | yes | Full path to the file. Ex. `lib/class.rb` |
88
| `previous_path` | string | no | Original full path to the file being moved. Ex. `lib/class1.rb`. Only considered for `move` action. |
89
| `content` | string | no | File content, required for all except `delete`, `chmod`, and `move`. Move actions that do not specify `content` will preserve the existing file content, and any other value of `content` will overwrite the file content. |
Marc Siegfriedt's avatar
Marc Siegfriedt committed
90
| `encoding` | string | no | `text` or `base64`. `text` is default. |
91
| `last_commit_id` | string | no | Last known file commit id. Will be only considered in update, move and delete actions. |
92
| `execute_filemode` | boolean | no | When `true/false` enables/disables the execute flag on the file. Only considered for `chmod` action. |
Marc Siegfriedt's avatar
Marc Siegfriedt committed
93
94
95
96

```bash
PAYLOAD=$(cat << 'JSON'
{
97
  "branch": "master",
Marc Siegfriedt's avatar
Marc Siegfriedt committed
98
99
100
101
102
103
104
105
106
  "commit_message": "some commit message",
  "actions": [
    {
      "action": "create",
      "file_path": "foo/bar",
      "content": "some content"
    },
    {
      "action": "delete",
107
      "file_path": "foo/bar2"
Marc Siegfriedt's avatar
Marc Siegfriedt committed
108
109
110
111
112
113
114
115
116
117
118
    },
    {
      "action": "move",
      "file_path": "foo/bar3",
      "previous_path": "foo/bar4",
      "content": "some content"
    },
    {
      "action": "update",
      "file_path": "foo/bar5",
      "content": "new content"
119
120
121
122
123
    },
    {
      "action": "chmod",
      "file_path": "foo/bar5",
      "execute_filemode": true
Marc Siegfriedt's avatar
Marc Siegfriedt committed
124
125
126
127
128
    }
  ]
}
JSON
)
129
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data "$PAYLOAD" https://gitlab.example.com/api/v4/projects/1/repository/commits
Marc Siegfriedt's avatar
Marc Siegfriedt committed
130
131
132
133
134
135
136
137
138
139
```

Example response:
```json
{
  "id": "ed899a2f4b50b4370feeea94676502b42383c746",
  "short_id": "ed899a2f4b5",
  "title": "some commit message",
  "author_name": "Dmitriy Zaporozhets",
  "author_email": "dzaporozhets@sphereconsultinginc.com",
140
141
  "committer_name": "Dmitriy Zaporozhets",
  "committer_email": "dzaporozhets@sphereconsultinginc.com",
Marc Siegfriedt's avatar
Marc Siegfriedt committed
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
  "created_at": "2016-09-20T09:26:24.000-07:00",
  "message": "some commit message",
  "parent_ids": [
    "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
  ],
  "committed_date": "2016-09-20T09:26:24.000-07:00",
  "authored_date": "2016-09-20T09:26:24.000-07:00",
  "stats": {
    "additions": 2,
    "deletions": 2,
    "total": 4
  },
  "status": null
}
```

158
159
160
161
162
163
164
165
166
167
## Get a single commit

Get a specific commit identified by the commit hash or name of a branch or tag.

```
GET /projects/:id/repository/commits/:sha
```

Parameters:

168
169
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
170
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
171
| `sha` | string | yes | The commit hash or name of a repository branch or tag |
172
| `stats` | boolean | no | Include commit stats. Default is true |
173
174

```bash
175
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master
176
177
178
```

Example response:
179
180
181
182
183
184
185
186

```json
{
  "id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
  "short_id": "6104942438c",
  "title": "Sanitize for network graph",
  "author_name": "randx",
  "author_email": "dmitriy.zaporozhets@gmail.com",
187
188
  "committer_name": "Dmitriy",
  "committer_email": "dmitriy.zaporozhets@gmail.com",
189
  "created_at": "2012-09-20T09:06:12+03:00",
190
  "message": "Sanitize for network graph",
191
192
  "committed_date": "2012-09-20T09:06:12+03:00",
  "authored_date": "2012-09-20T09:06:12+03:00",
Johannes Schleifenbaum's avatar
Johannes Schleifenbaum committed
193
194
  "parent_ids": [
    "ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
195
  ],
196
197
198
199
200
201
  "last_pipeline" : {
    "id": 8,
    "ref": "master",
    "sha": "2dc6aa325a317eda67812f05600bdf0fcdc70ab0"
    "status": "created"
  }
202
203
204
205
206
  "stats": {
    "additions": 15,
    "deletions": 10,
    "total": 25
  },
Kamil Trzcinski's avatar
Kamil Trzcinski committed
207
  "status": "running"
208
209
210
}
```

Robert Schilling's avatar
Robert Schilling committed
211
212
213
214
215
## Get references a commit is pushed to

> [Introduced][ce-15026] in GitLab 10.6

Get all references (from branches or tags) a commit is pushed to.
216
The pagination parameters `page` and `per_page` can be used to restrict the list of references.
Robert Schilling's avatar
Robert Schilling committed
217
218
219
220
221
222
223
224
225
226
227

```
GET /projects/:id/repository/commits/:sha/refs
```

Parameters:

| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
| `sha` | string | yes | The commit hash  |
228
| `type` | string | no | The scope of commits. Possible values `branch`, `tag`, `all`. Default is `all`.  |
Robert Schilling's avatar
Robert Schilling committed
229
230

```bash
231
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/5937ac0a7beb003549fc5fd26fc247adbce4a52e/refs?type=all"
Robert Schilling's avatar
Robert Schilling committed
232
233
234
235
236
237
```

Example response:

```json
[
238
239
240
241
242
243
  {"type": "branch", "name": "'test'"},
  {"type": "branch", "name": "add-balsamiq-file"},
  {"type": "branch", "name": "wip"},
  {"type": "tag", "name": "v1.1.0"}
 ]

Robert Schilling's avatar
Robert Schilling committed
244
245
```

246
247
248
249
250
251
252
253
254
255
256
257
258
259
## Cherry pick a commit

> [Introduced][ce-8047] in GitLab 8.15.

Cherry picks a commit to a given branch.

```
POST /projects/:id/repository/commits/:sha/cherry_pick
```

Parameters:

| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
260
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
261
262
263
264
| `sha` | string | yes | The commit hash  |
| `branch` | string | yes | The name of the branch  |

```bash
265
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "branch=master" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/cherry_pick"
266
267
268
269
270
271
272
273
274
275
276
```

Example response:

```json
{
  "id": "8b090c1b79a14f2bd9e8a738f717824ff53aebad",
  "short_id": "8b090c1b",
  "title": "Feature added",
  "author_name": "Dmitriy Zaporozhets",
  "author_email": "dmitriy.zaporozhets@gmail.com",
277
  "authored_date": "2016-12-12T20:10:39.000+01:00",
278
279
280
  "created_at": "2016-12-12T20:10:39.000+01:00",
  "committer_name": "Administrator",
  "committer_email": "admin@example.com",
281
282
283
284
285
286
  "committed_date": "2016-12-12T20:10:39.000+01:00",
  "title": "Feature added",
  "message": "Feature added\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
  "parent_ids": [
    "a738f717824ff53aebad8b090c1b79a14f2bd9e8"
  ]
287
288
289
}
```

Robert Speicher's avatar
Robert Speicher committed
290
291
## Revert a commit

292
> [Introduced][ce-22919] in GitLab 11.5.
Robert Speicher's avatar
Robert Speicher committed
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308

Reverts a commit in a given branch.

```
POST /projects/:id/repository/commits/:sha/revert
```

Parameters:

| Attribute | Type           | Required | Description                                                                     |
| --------- | ----           | -------- | -----------                                                                     |
| `id`      | integer/string | yes      | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
| `sha`     | string         | yes      | Commit SHA to revert                                                            |
| `branch`  | string         | yes      | Target branch name                                                              |

```bash
309
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "branch=master" "https://gitlab.example.com/api/v4/projects/5/repository/commits/a738f717824ff53aebad8b090c1b79a14f2bd9e8/revert"
Robert Speicher's avatar
Robert Speicher committed
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
```

Example response:

```json
{
  "id":"8b090c1b79a14f2bd9e8a738f717824ff53aebad",
  "short_id": "8b090c1b",
  "title":"Revert \"Feature added\"",
  "created_at":"2018-11-08T15:55:26.000Z",
  "parent_ids":["a738f717824ff53aebad8b090c1b79a14f2bd9e8"],
  "message":"Revert \"Feature added\"\n\nThis reverts commit a738f717824ff53aebad8b090c1b79a14f2bd9e8",
  "author_name":"Administrator",
  "author_email":"admin@example.com",
  "authored_date":"2018-11-08T15:55:26.000Z",
  "committer_name":"Administrator",
  "committer_email":"admin@example.com",
  "committed_date":"2018-11-08T15:55:26.000Z"
}
```

331
332
333
334
335
336
337
338
339
340
## Get the diff of a commit

Get the diff of a commit in a project.

```
GET /projects/:id/repository/commits/:sha/diff
```

Parameters:

341
342
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
343
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
344
345
346
| `sha` | string | yes | The commit hash or name of a repository branch or tag |

```bash
347
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/diff"
348
349
350
```

Example response:
351
352
353
354

```json
[
  {
355
    "diff": "--- a/doc/update/5.4-to-6.0.md\n+++ b/doc/update/5.4-to-6.0.md\n@@ -71,6 +71,8 @@\n sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production\n sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production\n \n+sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production\n+\n ```\n \n ### 6. Update config files",
356
357
358
359
360
361
362
363
364
365
    "new_path": "doc/update/5.4-to-6.0.md",
    "old_path": "doc/update/5.4-to-6.0.md",
    "a_mode": null,
    "b_mode": "100644",
    "new_file": false,
    "renamed_file": false,
    "deleted_file": false
  }
]
```
366
367
368
369
370
371
372
373
374
375
376

## Get the comments of a commit

Get the comments of a commit in a project.

```
GET /projects/:id/repository/commits/:sha/comments
```

Parameters:

377
378
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
379
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
380
381
382
| `sha` | string | yes | The commit hash or name of a repository branch or tag |

```bash
383
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/master/comments"
384
385
386
```

Example response:
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405

```json
[
  {
    "note": "this code is really nice",
    "author": {
      "id": 11,
      "username": "admin",
      "email": "admin@local.host",
      "name": "Administrator",
      "state": "active",
      "created_at": "2014-03-06T08:17:35.000Z"
    }
  }
]
```

## Post comment to commit

406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
Adds a comment to a commit.

In order to post a comment in a particular line of a particular file, you must
specify the full commit SHA, the `path`, the `line` and `line_type` should be
`new`.

The comment will be added at the end of the last commit if at least one of the
cases below is valid:

- the `sha` is instead a branch or a tag and the `line` or `path` are invalid
- the `line` number is invalid (does not exist)
- the `path` is invalid (does not exist)

In any of the above cases, the response of `line`, `line_type` and `path` is
set to `null`.
421
422
423
424
425

```
POST /projects/:id/repository/commits/:sha/comments
```

426
427
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
428
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
429
430
| `sha`       | string  | yes | The commit SHA or name of a repository branch or tag |
| `note`      | string  | yes | The text of the comment |
431
| `path`      | string  | no  | The file path relative to the repository |
432
| `line`      | integer | no  | The line number where the comment should be placed |
433
434
435
| `line_type` | string  | no  | The line type. Takes `new` or `old` as arguments |

```bash
436
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "note=Nice picture man\!" --form "path=dudeism.md" --form "line=11" --form "line_type=new" https://gitlab.example.com/api/v4/projects/17/repository/commits/18f3e63d05582537db6d183d9d557be09e1f90c8/comments
437
```
438

439
Example response:
440
441
442

```json
{
443
   "author" : {
444
      "web_url" : "https://gitlab.example.com/thedude",
445
446
447
448
449
450
451
452
453
454
455
      "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/The-Big-Lebowski-400-400.png",
      "username" : "thedude",
      "state" : "active",
      "name" : "Jeff Lebowski",
      "id" : 28
   },
   "created_at" : "2016-01-19T09:44:55.600Z",
   "line_type" : "new",
   "path" : "dudeism.md",
   "line" : 11,
   "note" : "Nice picture man!"
456
457
}
```
458

459
460
## Commit status

461
Since GitLab 8.1, this is the new commit status API.
462

463
### List the statuses of a commit
464

465
466
List the statuses of a commit in a project.
The pagination parameters `page` and `per_page` can be used to restrict the list of references.
467
468
469
470
471

```
GET /projects/:id/repository/commits/:sha/statuses
```

472
473
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
474
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
475
| `sha`     | string  | yes | The commit SHA
476
| `ref`     | string  | no  | The name of a repository branch or tag or, if not given, the default branch
477
478
479
| `stage`   | string  | no  | Filter by [build stage](../ci/yaml/README.md#stages), e.g., `test`
| `name`    | string  | no  | Filter by [job name](../ci/yaml/README.md#jobs), e.g., `bundler:audit`
| `all`     | boolean | no  | Return all statuses, not only the latest ones
480

481
```bash
482
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/repository/commits/18f3e63d05582537db6d183d9d557be09e1f90c8/statuses
483
484
485
```

Example response:
486
487
488

```json
[
489
490
491
492
493
494
495
496
497
498
499
   ...

   {
      "status" : "pending",
      "created_at" : "2016-01-19T08:40:25.934Z",
      "started_at" : null,
      "name" : "bundler:audit",
      "allow_failure" : true,
      "author" : {
         "username" : "thedude",
         "state" : "active",
500
         "web_url" : "https://gitlab.example.com/thedude",
501
502
503
504
505
506
507
508
509
510
511
512
513
         "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/The-Big-Lebowski-400-400.png",
         "id" : 28,
         "name" : "Jeff Lebowski"
      },
      "description" : null,
      "sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
      "target_url" : "https://gitlab.example.com/thedude/gitlab-ce/builds/91",
      "finished_at" : null,
      "id" : 91,
      "ref" : "master"
   },
   {
      "started_at" : null,
Rémy Coutable's avatar
Rémy Coutable committed
514
      "name" : "test",
515
516
517
518
519
520
521
522
523
524
525
526
      "allow_failure" : false,
      "status" : "pending",
      "created_at" : "2016-01-19T08:40:25.832Z",
      "target_url" : "https://gitlab.example.com/thedude/gitlab-ce/builds/90",
      "id" : 90,
      "finished_at" : null,
      "ref" : "master",
      "sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
      "author" : {
         "id" : 28,
         "name" : "Jeff Lebowski",
         "username" : "thedude",
527
         "web_url" : "https://gitlab.example.com/thedude",
528
529
530
531
532
533
534
         "state" : "active",
         "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/The-Big-Lebowski-400-400.png"
      },
      "description" : null
   },

   ...
535
536
537
]
```

538
### Post the build status to a commit
539

540
Adds or updates a build status of a commit.
541
542
543
544
545

```
POST /projects/:id/statuses/:sha
```

546
547
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
548
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
549
550
551
552
553
554
| `sha`     | string  | yes   | The commit SHA
| `state`   | string  | yes   | The state of the status. Can be one of the following: `pending`, `running`, `success`, `failed`, `canceled`
| `ref`     | string  | no    | The `ref` (branch or tag) to which the status refers
| `name` or `context` | string  | no | The label to differentiate this status from the status of other systems. Default value is `default`
| `target_url` |  string  | no  | The target URL to associate with this status
| `description` | string  | no  | The short description of the status
555
| `coverage` | float  | no    | The total code coverage
556
557

```bash
558
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/statuses/18f3e63d05582537db6d183d9d557be09e1f90c8?state=success"
559
560
561
```

Example response:
562
563
564

```json
{
565
   "author" : {
566
      "web_url" : "https://gitlab.example.com/thedude",
567
568
569
570
571
572
573
574
575
      "name" : "Jeff Lebowski",
      "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/The-Big-Lebowski-400-400.png",
      "username" : "thedude",
      "state" : "active",
      "id" : 28
   },
   "name" : "default",
   "sha" : "18f3e63d05582537db6d183d9d557be09e1f90c8",
   "status" : "success",
576
   "coverage": 100.0,
577
578
579
580
581
582
583
584
   "description" : null,
   "id" : 93,
   "target_url" : null,
   "ref" : null,
   "started_at" : null,
   "created_at" : "2016-01-19T09:05:50.355Z",
   "allow_failure" : false,
   "finished_at" : "2016-01-19T09:05:50.365Z"
585
586
}
```
Marc Siegfriedt's avatar
Marc Siegfriedt committed
587

588
589
## List Merge Requests associated with a commit

590
591
> [Introduced][ce-18004] in GitLab 10.7.

592
593
594
595
596
597
598
599
600
601
602
603
Get a list of Merge Requests related to the specified commit.

```
GET /projects/:id/repository/commits/:sha/merge_requests
```

| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
| `sha`     | string  | yes   | The commit SHA

```bash
604
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/repository/commits/af5b13261899fb2c0db30abdd0af8b07cb44fdc5/merge_requests"
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
```

Example response:

```json
[
   {
      "id":45,
      "iid":1,
      "project_id":35,
      "title":"Add new file",
      "description":"",
      "state":"opened",
      "created_at":"2018-03-26T17:26:30.916Z",
      "updated_at":"2018-03-26T17:26:30.916Z",
      "target_branch":"master",
      "source_branch":"test-branch",
      "upvotes":0,
      "downvotes":0,
      "author" : {
        "web_url" : "https://gitlab.example.com/thedude",
        "name" : "Jeff Lebowski",
        "avatar_url" : "https://gitlab.example.com/uploads/user/avatar/28/The-Big-Lebowski-400-400.png",
        "username" : "thedude",
        "state" : "active",
        "id" : 28
      },
      "assignee":null,
      "source_project_id":35,
      "target_project_id":35,
      "labels":[ ],
      "work_in_progress":false,
      "milestone":null,
      "merge_when_pipeline_succeeds":false,
      "merge_status":"can_be_merged",
      "sha":"af5b13261899fb2c0db30abdd0af8b07cb44fdc5",
      "merge_commit_sha":null,
      "user_notes_count":0,
      "discussion_locked":null,
      "should_remove_source_branch":null,
      "force_remove_source_branch":false,
      "web_url":"http://https://gitlab.example.com/root/test-project/merge_requests/1",
      "time_stats":{
         "time_estimate":0,
         "total_time_spent":0,
         "human_time_estimate":null,
         "human_total_time_spent":null
      }
   }
]
```

657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
## Get GPG signature of a commit

Get the [GPG signature from a commit](../user/project/repository/gpg_signed_commits/index.md),
if it is signed. For unsigned commits, it results in a 404 response.

```
GET /projects/:id/repository/commits/:sha/signature
```

Parameters:

| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `id`      | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) owned by the authenticated user
| `sha` | string | yes | The commit hash or name of a repository branch or tag |

```bash
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository/commits/da738facbc19eb2fc2cef57c49be0e6038570352/signature"
```

Example response if commit is signed:

```json
{
  "gpg_key_id": 1,
  "gpg_key_primary_keyid": "8254AAB3FBD54AC9",
  "gpg_key_user_name": "John Doe",
  "gpg_key_user_email": "johndoe@example.com",
  "verification_status": "verified",
  "gpg_key_subkey_id": null
}
```

Example response if commit is unsigned:
```json
{
  "message": "404 GPG Signature Not Found"
}
```

Marc Siegfriedt's avatar
Marc Siegfriedt committed
697
[ce-6096]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6096 "Multi-file commit"
698
[ce-8047]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8047
Robert Schilling's avatar
Robert Schilling committed
699
[ce-15026]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15026
700
[ce-18004]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/18004
Robert Speicher's avatar
Robert Speicher committed
701
[ce-22919]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/22919