projects.md 21.9 KB
Newer Older
M
Marin Jankovski 已提交
1
# Projects
2

3 4 5 6

### Project visibility level

Project in GitLab has be either private, internal or public.
7
You can determine it by `visibility_level` field in project.
8 9 10

Constants for project visibility levels are next:

11
* Private. `visibility_level` is `0`.
12 13 14 15
  Project access must be granted explicitly for each user.

* Internal. `visibility_level` is `10`.
  The project can be cloned by any logged in user.
16

17 18 19 20
* Public. `visibility_level` is `20`.
  The project can be cloned without any authentication.


21
## List projects
N
Nihad Abbasov 已提交
22

D
Dmitriy Zaporozhets 已提交
23
Get a list of projects accessible by the authenticated user.
N
Nihad Abbasov 已提交
24 25 26 27 28

```
GET /projects
```

29 30
Parameters:

31
- `archived` (optional) - if passed, limit by archived status
32
- `visibility` (optional) - if passed, limit by visibility `public`, `internal`, `private`
33 34
- `order_by` (optional) - Return requests ordered by `id`, `name`, `path`, `created_at`, `updated_at` or `last_activity_at` fields. Default is `created_at`
- `sort` (optional) - Return requests sorted in `asc` or `desc` order. Default is `desc`
35
- `search` (optional) - Return list of authorized projects according to a search criteria
36

N
Nihad Abbasov 已提交
37 38 39
```json
[
  {
M
Marin Jankovski 已提交
40
    "id": 4,
N
Nihad Abbasov 已提交
41 42
    "description": null,
    "default_branch": "master",
M
Marin Jankovski 已提交
43
    "public": false,
44
    "visibility_level": 0,
M
Marin Jankovski 已提交
45 46 47
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
    "web_url": "http://example.com/diaspora/diaspora-client",
48 49 50 51
    "tag_list": [
      "example",
      "disapora client"
    ],
N
Nihad Abbasov 已提交
52
    "owner": {
M
Marin Jankovski 已提交
53 54 55
      "id": 3,
      "name": "Diaspora",
      "created_at": "2013-09-30T13: 46: 02Z"
N
Nihad Abbasov 已提交
56
    },
M
Marin Jankovski 已提交
57 58 59 60 61
    "name": "Diaspora Client",
    "name_with_namespace": "Diaspora / Diaspora Client",
    "path": "diaspora-client",
    "path_with_namespace": "diaspora/diaspora-client",
    "issues_enabled": true,
S
Stan Hu 已提交
62
    "open_issues_count": 1,
M
Marin Jankovski 已提交
63
    "merge_requests_enabled": true,
64
    "builds_enabled": true,
N
Nihad Abbasov 已提交
65
    "wiki_enabled": true,
M
Marin Jankovski 已提交
66 67 68
    "snippets_enabled": false,
    "created_at": "2013-09-30T13: 46: 02Z",
    "last_activity_at": "2013-09-30T13: 46: 02Z",
69
    "creator_id": 3,
M
Marin Jankovski 已提交
70 71 72 73 74 75 76 77
    "namespace": {
      "created_at": "2013-09-30T13: 46: 02Z",
      "description": "",
      "id": 3,
      "name": "Diaspora",
      "owner_id": 1,
      "path": "diaspora",
      "updated_at": "2013-09-30T13: 46: 02Z"
78
    },
S
sue445 已提交
79
    "archived": false,
T
Tomasz Maczukin 已提交
80 81 82
    "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
    "shared_runners_enabled": true,
    "forks_count": 0,
83
    "star_count": 0
N
Nihad Abbasov 已提交
84 85
  },
  {
M
Marin Jankovski 已提交
86
    "id": 6,
N
Nihad Abbasov 已提交
87
    "description": null,
M
Marin Jankovski 已提交
88 89
    "default_branch": "master",
    "public": false,
90
    "visibility_level": 0,
M
Marin Jankovski 已提交
91 92 93
    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
    "web_url": "http://example.com/brightbox/puppet",
94 95 96 97
    "tag_list": [
      "example",
      "puppet"
    ],
J
Johannes Schleifenbaum 已提交
98
    "owner": {
M
Marin Jankovski 已提交
99 100 101
      "id": 4,
      "name": "Brightbox",
      "created_at": "2013-09-30T13:46:02Z"
N
Nihad Abbasov 已提交
102
    },
M
Marin Jankovski 已提交
103 104 105 106
    "name": "Puppet",
    "name_with_namespace": "Brightbox / Puppet",
    "path": "puppet",
    "path_with_namespace": "brightbox/puppet",
N
Nihad Abbasov 已提交
107
    "issues_enabled": true,
S
Stan Hu 已提交
108
    "open_issues_count": 1,
N
Nihad Abbasov 已提交
109
    "merge_requests_enabled": true,
110
    "builds_enabled": true,
N
Nihad Abbasov 已提交
111
    "wiki_enabled": true,
M
Marin Jankovski 已提交
112 113 114
    "snippets_enabled": false,
    "created_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
115
    "creator_id": 3,
J
Johannes Schleifenbaum 已提交
116
    "namespace": {
M
Marin Jankovski 已提交
117 118 119 120 121 122 123
      "created_at": "2013-09-30T13:46:02Z",
      "description": "",
      "id": 4,
      "name": "Brightbox",
      "owner_id": 1,
      "path": "brightbox",
      "updated_at": "2013-09-30T13:46:02Z"
124
    },
125 126 127 128 129 130 131 132 133 134
    "permissions": {
      "project_access": {
        "access_level": 10,
        "notification_level": 3
      },
      "group_access": {
        "access_level": 50,
        "notification_level": 3
      }
    },
S
sue445 已提交
135
    "archived": false,
T
Tomasz Maczukin 已提交
136 137 138 139 140
    "avatar_url": null,
    "shared_runners_enabled": true,
    "forks_count": 0,
    "star_count": 0,
    "runners_token": "b8547b1dc37721d05889db52fa2f02"
N
Nihad Abbasov 已提交
141 142 143 144
  }
]
```

145
### List owned projects
D
Dmitriy Zaporozhets 已提交
146

147
Get a list of projects which are owned by the authenticated user.
D
Dmitriy Zaporozhets 已提交
148 149 150 151 152

```
GET /projects/owned
```

153 154 155
Parameters:

- `archived` (optional) - if passed, limit by archived status
156
- `visibility` (optional) - if passed, limit by visibility `public`, `internal`, `private`
157 158
- `order_by` (optional) - Return requests ordered by `id`, `name`, `path`, `created_at`, `updated_at` or `last_activity_at` fields. Default is `created_at`
- `sort` (optional) - Return requests sorted in `asc` or `desc` order. Default is `desc`
159 160 161 162 163 164 165 166 167 168 169 170 171
- `search` (optional) - Return list of authorized projects according to a search criteria

### List starred projects

Get a list of projects which are starred by the authenticated user.

```
GET /projects/starred
```

Parameters:

- `archived` (optional) - if passed, limit by archived status
172
- `visibility` (optional) - if passed, limit by visibility `public`, `internal`, `private`
173 174
- `order_by` (optional) - Return requests ordered by `id`, `name`, `path`, `created_at`, `updated_at` or `last_activity_at` fields. Default is `created_at`
- `sort` (optional) - Return requests sorted in `asc` or `desc` order. Default is `desc`
175 176
- `search` (optional) - Return list of authorized projects according to a search criteria

177
### List ALL projects
D
Dmitriy Zaporozhets 已提交
178 179 180 181 182 183 184

Get a list of all GitLab projects (admin only).

```
GET /projects/all
```

185 186 187
Parameters:

- `archived` (optional) - if passed, limit by archived status
188
- `visibility` (optional) - if passed, limit by visibility `public`, `internal`, `private`
189 190 191 192
- `order_by` (optional) - Return requests ordered by `id`, `name`, `path`, `created_at`, `updated_at` or `last_activity_at` fields. Default is `created_at`
- `sort` (optional) - Return requests sorted in `asc` or `desc` order. Default is `desc`
- `search` (optional) - Return list of authorized projects according to a search criteria

193
### Get single project
N
Nihad Abbasov 已提交
194

195
Get a specific project, identified by project ID or NAMESPACE/PROJECT_NAME, which is owned by the authenticated user.
M
Marin Jankovski 已提交
196
If using namespaced projects call make sure that the NAMESPACE/PROJECT_NAME is URL-encoded, eg. `/api/v3/projects/diaspora%2Fdiaspora` (where `/` is represented by `%2F`).
N
Nihad Abbasov 已提交
197 198 199 200 201 202 203

```
GET /projects/:id
```

Parameters:

204
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
N
Nihad Abbasov 已提交
205

A
Alex Denisov 已提交
206 207
```json
{
M
Marin Jankovski 已提交
208
  "id": 3,
A
Alex Denisov 已提交
209
  "description": null,
M
Marin Jankovski 已提交
210 211
  "default_branch": "master",
  "public": false,
212
  "visibility_level": 0,
M
Marin Jankovski 已提交
213 214 215
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
216 217 218 219
  "tag_list": [
    "example",
    "disapora project"
  ],
A
Alex Denisov 已提交
220
  "owner": {
M
Marin Jankovski 已提交
221 222 223
    "id": 3,
    "name": "Diaspora",
    "created_at": "2013-09-30T13: 46: 02Z"
A
Alex Denisov 已提交
224
  },
M
Marin Jankovski 已提交
225 226 227 228
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
A
Alex Denisov 已提交
229
  "issues_enabled": true,
S
Stan Hu 已提交
230
  "open_issues_count": 1,
A
Alex Denisov 已提交
231
  "merge_requests_enabled": true,
232
  "builds_enabled": true,
A
Alex Denisov 已提交
233
  "wiki_enabled": true,
M
Marin Jankovski 已提交
234 235 236
  "snippets_enabled": false,
  "created_at": "2013-09-30T13: 46: 02Z",
  "last_activity_at": "2013-09-30T13: 46: 02Z",
237
  "creator_id": 3,
M
Marin Jankovski 已提交
238 239 240 241 242 243 244 245
  "namespace": {
    "created_at": "2013-09-30T13: 46: 02Z",
    "description": "",
    "id": 3,
    "name": "Diaspora",
    "owner_id": 1,
    "path": "diaspora",
    "updated_at": "2013-09-30T13: 46: 02Z"
J
Johannes Schleifenbaum 已提交
246
  },
D
Dmitriy Zaporozhets 已提交
247 248 249 250 251 252 253 254 255
  "permissions": {
    "project_access": {
      "access_level": 10,
      "notification_level": 3
    },
    "group_access": {
      "access_level": 50,
      "notification_level": 3
    }
256
  },
S
sue445 已提交
257
  "archived": false,
T
Tomasz Maczukin 已提交
258 259 260 261 262
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "shared_runners_enabled": true,
  "forks_count": 0,
  "star_count": 0,
  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b"
A
Alex Denisov 已提交
263 264 265
}
```

D
Dmitriy Zaporozhets 已提交
266 267
### Get project events

268
Get the events for the specified project.
D
Dmitriy Zaporozhets 已提交
269 270 271 272 273 274 275 276
Sorted from newest to latest

```
GET /projects/:id/events
```

Parameters:

277
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
D
Dmitriy Zaporozhets 已提交
278 279

```json
J
Johannes Schleifenbaum 已提交
280 281 282 283 284 285 286 287 288
[
  {
    "title": null,
    "project_id": 15,
    "action_name": "closed",
    "target_id": 830,
    "target_type": "Issue",
    "author_id": 1,
    "data": null,
D
Dmitriy Zaporozhets 已提交
289 290 291 292 293 294 295 296 297 298
    "target_title": "Public project search field",
    "author": {
      "name": "Dmitriy Zaporozhets",
      "username": "root",
      "id": 1,
      "state": "active",
      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
      "web_url": "http://localhost:3000/u/root"
    },
    "author_username": "root"
J
Johannes Schleifenbaum 已提交
299 300 301 302 303 304 305 306
  },
  {
    "title": null,
    "project_id": 15,
    "action_name": "opened",
    "target_id": null,
    "target_type": null,
    "author_id": 1,
D
Dmitriy Zaporozhets 已提交
307 308 309 310 311 312 313 314
    "author": {
      "name": "Dmitriy Zaporozhets",
      "username": "root",
      "id": 1,
      "state": "active",
      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
      "web_url": "http://localhost:3000/u/root"
    },
315
    "author_username": "john",
J
Johannes Schleifenbaum 已提交
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340
    "data": {
      "before": "50d4420237a9de7be1304607147aec22e4a14af7",
      "after": "c5feabde2d8cd023215af4d2ceeb7a64839fc428",
      "ref": "refs/heads/master",
      "user_id": 1,
      "user_name": "Dmitriy Zaporozhets",
      "repository": {
        "name": "gitlabhq",
        "url": "git@dev.gitlab.org:gitlab/gitlabhq.git",
        "description": "GitLab: self hosted Git management software. \r\nDistributed under the MIT License.",
        "homepage": "https://dev.gitlab.org/gitlab/gitlabhq"
      },
      "commits": [
        {
          "id": "c5feabde2d8cd023215af4d2ceeb7a64839fc428",
          "message": "Add simple search to projects in public area",
          "timestamp": "2013-05-13T18:18:08+00:00",
          "url": "https://dev.gitlab.org/gitlab/gitlabhq/commit/c5feabde2d8cd023215af4d2ceeb7a64839fc428",
          "author": {
            "name": "Dmitriy Zaporozhets",
            "email": "dmitriy.zaporozhets@gmail.com"
          }
        }
      ],
      "total_commits_count": 1
D
Dmitriy Zaporozhets 已提交
341
    },
J
Johannes Schleifenbaum 已提交
342
    "target_title": null
D
Dmitriy Zaporozhets 已提交
343
  },
J
Johannes Schleifenbaum 已提交
344 345 346 347 348 349 350 351
  {
    "title": null,
    "project_id": 15,
    "action_name": "closed",
    "target_id": 840,
    "target_type": "Issue",
    "author_id": 1,
    "data": null,
D
Dmitriy Zaporozhets 已提交
352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400
    "target_title": "Finish & merge Code search PR",
    "author": {
      "name": "Dmitriy Zaporozhets",
      "username": "root",
      "id": 1,
      "state": "active",
      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
      "web_url": "http://localhost:3000/u/root"
    },
    "author_username": "root"
  },
  {
    "title": null,
    "project_id": 15,
    "action_name": "commented on",
    "target_id": 1312,
    "target_type": "Note",
    "author_id": 1,
    "data": null,
    "target_title": null,
    "created_at": "2015-12-04T10:33:58.089Z",
    "note": {
      "id": 1312,
      "body": "What an awesome day!",
      "attachment": null,
      "author": {
        "name": "Dmitriy Zaporozhets",
        "username": "root",
        "id": 1,
        "state": "active",
        "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
        "web_url": "http://localhost:3000/u/root"
      },
      "created_at": "2015-12-04T10:33:56.698Z",
      "system": false,
      "upvote": false,
      "downvote": false,
      "noteable_id": 377,
      "noteable_type": "Issue"
    },
    "author": {
      "name": "Dmitriy Zaporozhets",
      "username": "root",
      "id": 1,
      "state": "active",
      "avatar_url": "http://localhost:3000/uploads/user/avatar/1/fox_avatar.png",
      "web_url": "http://localhost:3000/u/root"
    },
    "author_username": "root"
J
Johannes Schleifenbaum 已提交
401 402
  }
]
D
Dmitriy Zaporozhets 已提交
403 404
```

405
### Create project
A
Alex Denisov 已提交
406

407
Creates a new project owned by the authenticated user.
A
Alex Denisov 已提交
408 409 410 411 412 413 414

```
POST /projects
```

Parameters:

415
- `name` (required) - new project name
D
Dmitriy Zaporozhets 已提交
416
- `path` (optional) - custom repository name for new project. By default generated based on name
417 418 419 420
- `namespace_id` (optional) - namespace for the new project (defaults to user)
- `description` (optional) - short project description
- `issues_enabled` (optional)
- `merge_requests_enabled` (optional)
421
- `builds_enabled` (optional)
422 423 424 425 426
- `wiki_enabled` (optional)
- `snippets_enabled` (optional)
- `public` (optional) - if `true` same as setting visibility_level = 20
- `visibility_level` (optional)
- `import_url` (optional)
427

428 429
### Create project for user

430
Creates a new project owned by the specified user. Available only for admins.
431 432 433 434 435 436 437

```
POST /projects/user/:user_id
```

Parameters:

438 439 440 441 442
- `user_id` (required) - user_id of owner
- `name` (required) - new project name
- `description` (optional) - short project description
- `issues_enabled` (optional)
- `merge_requests_enabled` (optional)
443
- `builds_enabled` (optional)
444 445 446 447 448
- `wiki_enabled` (optional)
- `snippets_enabled` (optional)
- `public` (optional) - if `true` same as setting visibility_level = 20
- `visibility_level` (optional)
- `import_url` (optional)
A
Alex Denisov 已提交
449

450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466
### Edit project

Updates an existing project

```
PUT /projects/:id
```

Parameters:

- `id` (required) - The ID of a project
- `name` (optional) - project name
- `path` (optional) - repository name for project
- `description` (optional) - short project description
- `default_branch` (optional)
- `issues_enabled` (optional)
- `merge_requests_enabled` (optional)
467
- `builds_enabled` (optional)
468 469 470 471 472
- `wiki_enabled` (optional)
- `snippets_enabled` (optional)
- `public` (optional) - if `true` same as setting visibility_level = 20
- `visibility_level` (optional)

473
On success, method returns 200 with the updated project. If parameters are
474 475
invalid, 400 is returned.

476 477 478 479 480 481 482 483 484 485 486 487
### Fork project

Forks a project into the user namespace of the authenticated user.

```
POST /projects/fork/:id
```

Parameters:

- `id` (required) - The ID of the project to be forked

488
### Remove project
D
Dmitriy Zaporozhets 已提交
489

490
Removes a project including all associated resources (issues, merge requests etc.)
D
Dmitriy Zaporozhets 已提交
491 492 493 494 495 496 497

```
DELETE /projects/:id
```

Parameters:

498
- `id` (required) - The ID of a project
499

D
Douwe Maan 已提交
500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527
## Uploads

### Upload a file

Uploads a file to the specified project to be used in an issue or merge request description, or a comment.

```
POST /projects/:id/uploads
```

Parameters:

- `id` (required) - The ID of the project
- `file` (required) - The file to be uploaded

```json
{
  "alt": "dk",
  "url": "/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
  "is_image": true,
  "markdown": "![dk](/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png)"
}
```

**Note**: The returned `url` is relative to the project path.
In Markdown contexts, the link is automatically expanded when the format in `markdown` is used.


528 529 530
## Team members

### List project team members
M
miks 已提交
531

532
Get a list of a project's team members.
M
miks 已提交
533 534

```
N
Nihad Abbasov 已提交
535
GET /projects/:id/members
M
miks 已提交
536 537 538 539
```

Parameters:

540 541
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `query` (optional) - Query string to search for members
542 543

### Get project team member
M
miks 已提交
544

545
Gets a project team member.
546

N
Nihad Abbasov 已提交
547 548 549 550 551
```
GET /projects/:id/members/:user_id
```

Parameters:
552

553 554
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `user_id` (required) - The ID of a user
N
Nihad Abbasov 已提交
555 556 557 558

```json
{
  "id": 1,
559
  "username": "john_smith",
N
Nihad Abbasov 已提交
560 561
  "email": "john@example.com",
  "name": "John Smith",
M
Marin Jankovski 已提交
562
  "state": "active",
N
Nihad Abbasov 已提交
563 564 565
  "created_at": "2012-05-23T08:00:58Z",
  "access_level": 40
}
566
```
N
Nihad Abbasov 已提交
567

568
### Add project team member
N
Nihad Abbasov 已提交
569

570 571
Adds a user to a project team. This is an idempotent method and can be called multiple times
with the same parameters. Adding team membership to a user that is already a member does not
572
affect the existing membership.
N
Nihad Abbasov 已提交
573 574 575

```
POST /projects/:id/members
576 577 578 579
```

Parameters:

580 581 582
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `user_id` (required) - The ID of a user to add
- `access_level` (required) - Project access level
583 584

### Edit project team member
M
miks 已提交
585

586
Updates a project team member to a specified access level.
M
miks 已提交
587 588

```
N
Nihad Abbasov 已提交
589
PUT /projects/:id/members/:user_id
M
miks 已提交
590 591 592 593
```

Parameters:

594 595 596
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `user_id` (required) - The ID of a team member
- `access_level` (required) - Project access level
597 598

### Remove project team member
M
miks 已提交
599

600
Removes a user from a project team.
M
miks 已提交
601 602

```
N
Nihad Abbasov 已提交
603
DELETE /projects/:id/members/:user_id
M
miks 已提交
604 605 606 607
```

Parameters:

608 609
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `user_id` (required) - The ID of a team member
M
miks 已提交
610

611 612 613
This method is idempotent and can be called multiple times with the same parameters.
Revoking team membership for a user who is not currently a team member is considered success.
Please note that the returned JSON currently differs slightly. Thus you should not
614
rely on the returned JSON structure.
N
Nihad Abbasov 已提交
615

616 617
## Hooks

618 619 620
Also called Project Hooks and Webhooks.
These are different for [System Hooks](system_hooks.md) that are system wide.

621 622
### List project hooks

623
Get a list of project hooks.
M
miks 已提交
624 625 626 627 628 629 630

```
GET /projects/:id/hooks
```

Parameters:

631
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
M
miks 已提交
632

633
### Get project hook
634

635
Get a specific hook for a project.
636 637 638 639 640

```
GET /projects/:id/hooks/:hook_id
```

641
Parameters:
642

643 644
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `hook_id` (required) - The ID of a project hook
645

646 647 648 649
```json
{
  "id": 1,
  "url": "http://example.com/hook",
650 651 652 653
  "project_id": 3,
  "push_events": "true",
  "issues_events": "true",
  "merge_requests_events": "true",
654 655
  "note_events": "true",
  "enable_ssl_verification": "true",
656 657 658 659 660 661
  "created_at": "2012-10-12T17:04:47Z"
}
```

### Add project hook

662
Adds a hook to a specified project.
M
miks 已提交
663 664 665 666 667 668 669

```
POST /projects/:id/hooks
```

Parameters:

670 671 672 673 674
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `url` (required) - The hook URL
- `push_events` - Trigger hook on push events
- `issues_events` - Trigger hook on issues events
- `merge_requests_events` - Trigger hook on merge_requests events
675
- `tag_push_events` - Trigger hook on push_tag events
676
- `note_events` - Trigger hook on note events
677
- `enable_ssl_verification` - Do SSL verification when triggering the hook
678

679 680
### Edit project hook

681
Edits a hook for a specified project.
682 683 684 685 686 687 688

```
PUT /projects/:id/hooks/:hook_id
```

Parameters:

689 690 691 692 693 694
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `hook_id` (required) - The ID of a project hook
- `url` (required) - The hook URL
- `push_events` - Trigger hook on push events
- `issues_events` - Trigger hook on issues events
- `merge_requests_events` - Trigger hook on merge_requests events
695
- `tag_push_events` - Trigger hook on push_tag events
696
- `note_events` - Trigger hook on note events
697
- `enable_ssl_verification` - Do SSL verification when triggering the hook
698

699
### Delete project hook
M
miks 已提交
700

701
Removes a hook from a project. This is an idempotent method and can be called multiple times.
702
Either the hook is available or not.
M
miks 已提交
703 704

```
705
DELETE /projects/:id/hooks/:hook_id
M
miks 已提交
706 707 708 709
```

Parameters:

710 711
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `hook_id` (required) - The ID of hook to delete
M
miks 已提交
712

713 714
Note the JSON response differs if the hook is available or not. If the project hook
is available before it is returned in the JSON response or an empty response is returned.
715 716 717 718 719 720 721 722 723 724 725 726 727

## Branches

### List branches

Lists all branches of a project.

```
GET /projects/:id/repository/branches
```

Parameters:

728
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
729

M
Marin Jankovski 已提交
730 731 732
```json
[
  {
J
Johannes Schleifenbaum 已提交
733
    "name": "async",
M
Marin Jankovski 已提交
734
    "commit": {
J
Johannes Schleifenbaum 已提交
735 736 737 738 739 740
      "id": "a2b702edecdf41f07b42653eb1abe30ce98b9fca",
      "parents": [
        {
          "id": "3f94fc7c85061973edc9906ae170cc269b07ca55"
        }
      ],
M
Marin Jankovski 已提交
741
      "tree": "c68537c6534a02cc2b176ca1549f4ffa190b58ee",
742
      "message": "give Caolan credit where it's due (up top)",
M
Marin Jankovski 已提交
743
      "author": {
J
Johannes Schleifenbaum 已提交
744 745
        "name": "Jeremy Ashkenas",
        "email": "jashkenas@example.com"
M
Marin Jankovski 已提交
746 747
      },
      "committer": {
J
Johannes Schleifenbaum 已提交
748 749
        "name": "Jeremy Ashkenas",
        "email": "jashkenas@example.com"
M
Marin Jankovski 已提交
750
      },
J
Johannes Schleifenbaum 已提交
751 752
      "authored_date": "2010-12-08T21:28:50+00:00",
      "committed_date": "2010-12-08T21:28:50+00:00"
M
Marin Jankovski 已提交
753
    },
J
Johannes Schleifenbaum 已提交
754
    "protected": false
M
Marin Jankovski 已提交
755 756 757 758 759
  },
  {
    "name": "gh-pages",
    "commit": {
      "id": "101c10a60019fe870d21868835f65c25d64968fc",
J
Johannes Schleifenbaum 已提交
760 761 762 763 764
      "parents": [
        {
          "id": "9c15d2e26945a665131af5d7b6d30a06ba338aaa"
        }
      ],
M
Marin Jankovski 已提交
765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781
      "tree": "fb5cc9d45da3014b17a876ad539976a0fb9b352a",
      "message": "Underscore.js 1.5.2",
      "author": {
        "name": "Jeremy Ashkenas",
        "email": "jashkenas@example.com"
      },
      "committer": {
        "name": "Jeremy Ashkenas",
        "email": "jashkenas@example.com"
      },
      "authored_date": "2013-09-07T12: 58: 21+00: 00",
      "committed_date": "2013-09-07T12: 58: 21+00: 00"
    },
    "protected": false
  }
]
```
782 783 784 785 786 787 788 789 790 791 792

### List single branch

Lists a specific branch of a project.

```
GET /projects/:id/repository/branches/:branch
```

Parameters:

793 794
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `branch` (required) - The name of the branch.
795 796 797 798 799 800 801 802 803 804 805

### Protect single branch

Protects a single branch of a project.

```
PUT /projects/:id/repository/branches/:branch/protect
```

Parameters:

806 807
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `branch` (required) - The name of the branch.
808 809 810 811 812 813 814 815 816 817 818

### Unprotect single branch

Unprotects a single branch of a project.

```
PUT /projects/:id/repository/branches/:branch/unprotect
```

Parameters:

819 820
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of a project
- `branch` (required) - The name of the branch.
821 822 823

## Admin fork relation

824
Allows modification of the forked relationship between existing projects. Available only for admins.
825 826 827 828 829 830 831 832 833

### Create a forked from/to relation between existing projects.

```
POST /projects/:id/fork/:forked_from_id
```

Parameters:

834 835
- `id` (required) - The ID of the project
- `forked_from_id:` (required) - The ID of the project that was forked from
836 837 838 839 840 841 842 843 844

### Delete an existing forked from relationship

```
DELETE /projects/:id/fork
```

Parameter:

845
- `id` (required) - The ID of the project
I
Izaak Alpert 已提交
846 847 848

## Search for projects by name

849
Search for projects by name which are accessible to the authenticated user.
I
Izaak Alpert 已提交
850 851 852 853 854 855 856

```
GET /projects/search/:query
```

Parameters:

857 858 859 860 861
- `query` (required) - A string contained in the project name
- `per_page` (optional) - number of projects to return per page
- `page` (optional) - the page to retrieve
- `order_by` (optional) - Return requests ordered by `id`, `name`, `created_at` or `last_activity_at` fields
- `sort` (optional) - Return requests sorted in `asc` or `desc` order