2013-02-14 20:43:48 +01:00
|
|
|
## Projects
|
|
|
|
|
|
|
|
### List projects
|
2012-07-05 15:57:45 +02:00
|
|
|
|
2012-08-14 18:54:25 +02:00
|
|
|
Get a list of projects owned by the authenticated user.
|
2012-07-05 15:57:45 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects
|
|
|
|
```
|
|
|
|
|
|
|
|
```json
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"id": 3,
|
|
|
|
"name": "rails",
|
|
|
|
"description": null,
|
|
|
|
"default_branch": "master",
|
|
|
|
"owner": {
|
|
|
|
"id": 1,
|
2012-12-10 23:46:31 +01:00
|
|
|
"username": "john_smith",
|
2012-07-05 15:57:45 +02:00
|
|
|
"email": "john@example.com",
|
|
|
|
"name": "John Smith",
|
|
|
|
"blocked": false,
|
|
|
|
"created_at": "2012-05-23T08:00:58Z"
|
|
|
|
},
|
2013-02-19 10:45:49 +01:00
|
|
|
"public": true,
|
2013-01-31 08:11:35 +01:00
|
|
|
"path": "rails",
|
|
|
|
"path_with_namespace": "rails/rails",
|
2012-07-05 15:57:45 +02:00
|
|
|
"issues_enabled": false,
|
|
|
|
"merge_requests_enabled": false,
|
|
|
|
"wall_enabled": true,
|
|
|
|
"wiki_enabled": true,
|
|
|
|
"created_at": "2012-05-23T08:05:02Z"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": 5,
|
|
|
|
"name": "gitlab",
|
|
|
|
"description": null,
|
|
|
|
"default_branch": "api",
|
|
|
|
"owner": {
|
|
|
|
"id": 1,
|
2012-12-10 23:46:31 +01:00
|
|
|
"username": "john_smith",
|
2012-07-05 15:57:45 +02:00
|
|
|
"email": "john@example.com",
|
|
|
|
"name": "John Smith",
|
|
|
|
"blocked": false,
|
|
|
|
"created_at": "2012-05-23T08:00:58Z"
|
|
|
|
},
|
2013-02-19 10:45:49 +01:00
|
|
|
"public": true,
|
2013-01-31 08:11:35 +01:00
|
|
|
"path": "gitlab",
|
|
|
|
"path_with_namespace": "randx/gitlab",
|
2012-07-05 15:57:45 +02:00
|
|
|
"issues_enabled": true,
|
|
|
|
"merge_requests_enabled": true,
|
|
|
|
"wall_enabled": true,
|
|
|
|
"wiki_enabled": true,
|
|
|
|
"created_at": "2012-05-30T12:49:20Z"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
```
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
|
|
|
|
### Get single project
|
2012-07-05 15:57:45 +02:00
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
Get a specific project, identified by project ID or NAME, which is owned by the authentication user.
|
|
|
|
Currently namespaced projects cannot retrieved by name.
|
2012-07-05 15:57:45 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-07-05 15:57:45 +02:00
|
|
|
|
2012-08-31 09:25:36 +02:00
|
|
|
```json
|
|
|
|
{
|
|
|
|
"id": 5,
|
|
|
|
"name": "gitlab",
|
|
|
|
"description": null,
|
|
|
|
"default_branch": "api",
|
|
|
|
"owner": {
|
|
|
|
"id": 1,
|
2012-12-10 23:46:31 +01:00
|
|
|
"username": "john_smith",
|
2012-08-31 09:25:36 +02:00
|
|
|
"email": "john@example.com",
|
|
|
|
"name": "John Smith",
|
|
|
|
"blocked": false,
|
|
|
|
"created_at": "2012-05-23T08:00:58Z"
|
|
|
|
},
|
2013-02-19 10:45:49 +01:00
|
|
|
"public": true,
|
2013-01-31 08:11:35 +01:00
|
|
|
"path": "gitlab",
|
|
|
|
"path_with_namespace": "randx/gitlab",
|
2012-08-31 09:25:36 +02:00
|
|
|
"issues_enabled": true,
|
|
|
|
"merge_requests_enabled": true,
|
|
|
|
"wall_enabled": true,
|
|
|
|
"wiki_enabled": true,
|
|
|
|
"created_at": "2012-05-30T12:49:20Z"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
|
|
|
|
### Create project
|
2012-08-31 09:25:36 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
Creates new project owned by user.
|
2012-08-31 09:25:36 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
POST /projects
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `name` (required) - new project name
|
2012-09-20 14:34:07 +02:00
|
|
|
+ `description` (optional) - short project description
|
2012-09-03 17:00:24 +02:00
|
|
|
+ `default_branch` (optional) - 'master' by default
|
|
|
|
+ `issues_enabled` (optional) - enabled by default
|
|
|
|
+ `wall_enabled` (optional) - enabled by default
|
|
|
|
+ `merge_requests_enabled` (optional) - enabled by default
|
|
|
|
+ `wiki_enabled` (optional) - enabled by default
|
2012-08-31 09:25:36 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
|
2013-01-28 16:46:58 +01:00
|
|
|
## Project access levels
|
|
|
|
|
|
|
|
The project access levels are defined in the `user_project` class. Currently, 4
|
|
|
|
levels are recoginized:
|
|
|
|
|
|
|
|
```
|
|
|
|
GUEST = 10
|
|
|
|
REPORTER = 20
|
|
|
|
DEVELOPER = 30
|
|
|
|
MASTER = 40
|
|
|
|
```
|
|
|
|
|
2013-02-27 16:49:45 +01:00
|
|
|
|
2012-09-21 12:23:17 +02:00
|
|
|
## List project team members
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2012-09-21 12:23:17 +02:00
|
|
|
Get a list of project team members.
|
2012-09-06 22:49:29 +02:00
|
|
|
|
|
|
|
```
|
2012-09-21 12:23:17 +02:00
|
|
|
GET /projects/:id/members
|
2012-09-06 22:49:29 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-12-18 19:52:18 +01:00
|
|
|
+ `query` - Query string
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
|
|
|
|
## Team members
|
|
|
|
|
|
|
|
### Get project team member
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2012-09-21 12:23:17 +02:00
|
|
|
Get a project team member.
|
2012-09-05 22:01:03 +02:00
|
|
|
|
2012-09-21 12:23:17 +02:00
|
|
|
```
|
|
|
|
GET /projects/:id/members/:user_id
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
2012-09-05 22:01:03 +02:00
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-09-21 12:23:17 +02:00
|
|
|
+ `user_id` (required) - The ID of a user
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"id": 1,
|
2012-12-10 23:46:31 +01:00
|
|
|
"username": "john_smith",
|
2012-09-21 12:23:17 +02:00
|
|
|
"email": "john@example.com",
|
|
|
|
"name": "John Smith",
|
|
|
|
"blocked": false,
|
|
|
|
"created_at": "2012-05-23T08:00:58Z",
|
|
|
|
"access_level": 40
|
|
|
|
}
|
2012-09-05 22:01:03 +02:00
|
|
|
```
|
2012-09-21 12:23:17 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
|
|
|
|
### Add project team member
|
2012-09-21 12:23:17 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
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
|
|
|
|
affect the membership.
|
2012-09-21 12:23:17 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
POST /projects/:id/members
|
2012-09-05 22:01:03 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-09-21 12:23:17 +02:00
|
|
|
+ `user_id` (required) - The ID of a user to add
|
|
|
|
+ `access_level` (required) - Project access level
|
2012-09-05 22:01:03 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
|
|
|
|
### Edit project team member
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2012-09-21 12:23:17 +02:00
|
|
|
Update project team member to specified access level.
|
2012-09-06 22:49:29 +02:00
|
|
|
|
|
|
|
```
|
2012-09-21 12:23:17 +02:00
|
|
|
PUT /projects/:id/members/:user_id
|
2012-09-06 22:49:29 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-09-21 12:23:17 +02:00
|
|
|
+ `user_id` (required) - The ID of a team member
|
|
|
|
+ `access_level` (required) - Project access level
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
|
|
|
|
### Remove project team member
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2012-09-21 12:23:17 +02:00
|
|
|
Removes user from project team.
|
2012-09-06 22:49:29 +02:00
|
|
|
|
|
|
|
```
|
2012-09-21 12:23:17 +02:00
|
|
|
DELETE /projects/:id/members/:user_id
|
2012-09-06 22:49:29 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-09-21 12:23:17 +02:00
|
|
|
+ `user_id` (required) - The ID of a team member
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
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
|
2013-02-01 15:20:51 +01:00
|
|
|
rely on the returned JSON structure.
|
2012-07-05 15:57:45 +02:00
|
|
|
|
2012-09-08 19:51:12 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
## Hooks
|
|
|
|
|
|
|
|
### List project hooks
|
|
|
|
|
|
|
|
Get list of project hooks.
|
2012-09-08 19:51:12 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/hooks
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-09-08 19:51:12 +02:00
|
|
|
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
### Get project hook
|
2012-10-12 09:38:15 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
Get a specific hook for project.
|
2012-10-12 09:38:15 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/hooks/:hook_id
|
|
|
|
```
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
Parameters:
|
2012-10-12 09:38:15 +02:00
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-10-12 09:38:15 +02:00
|
|
|
+ `hook_id` (required) - The ID of a project hook
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
```json
|
|
|
|
{
|
|
|
|
"id": 1,
|
|
|
|
"url": "http://example.com/hook",
|
|
|
|
"created_at": "2012-10-12T17:04:47Z"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2012-09-08 19:51:12 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
### Add project hook
|
|
|
|
|
|
|
|
Adds a hook to project.
|
2012-09-08 19:51:12 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
POST /projects/:id/hooks
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-09-08 19:51:12 +02:00
|
|
|
+ `url` (required) - The hook URL
|
|
|
|
|
2012-10-12 09:38:15 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
### Edit project hook
|
|
|
|
|
|
|
|
Edits a hook for project.
|
2012-10-12 09:38:15 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
PUT /projects/:id/hooks/:hook_id
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-10-12 09:38:15 +02:00
|
|
|
+ `hook_id` (required) - The ID of a project hook
|
|
|
|
+ `url` (required) - The hook URL
|
|
|
|
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
### Delete project hook
|
2012-09-08 19:51:12 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
Removes a hook from project. This is an idempotent method and can be called multiple times.
|
|
|
|
Either the hook is available or not.
|
2012-09-08 19:51:12 +02:00
|
|
|
|
|
|
|
```
|
2013-02-27 17:50:30 +01:00
|
|
|
DELETE /projects/:id/hooks/
|
2012-09-08 19:51:12 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2013-01-28 23:51:45 +01:00
|
|
|
+ `id` (required) - The ID or NAME of a project
|
2012-09-08 19:51:12 +02:00
|
|
|
+ `hook_id` (required) - The ID of hook to delete
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
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.
|
2013-02-15 13:54:26 +01:00
|
|
|
|
|
|
|
|
|
|
|
## Branches
|
|
|
|
|
|
|
|
### List branches
|
|
|
|
|
|
|
|
Lists all branches of a project.
|
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/repository/branches
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project
|
|
|
|
|
|
|
|
|
|
|
|
### List single branch
|
|
|
|
|
|
|
|
Lists a specific branch of a project.
|
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/repository/branches/:branch
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project.
|
|
|
|
+ `branch` (required) - The name of the branch.
|
|
|
|
|
|
|
|
|
|
|
|
### Protect single branch
|
|
|
|
|
|
|
|
Protects a single branch of a project.
|
|
|
|
|
|
|
|
```
|
|
|
|
PUT /projects/:id/repository/branches/:branch/protect
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project.
|
|
|
|
+ `branch` (required) - The name of the branch.
|
|
|
|
|
|
|
|
|
|
|
|
### Unprotect single branch
|
|
|
|
|
|
|
|
Unprotects a single branch of a project.
|
|
|
|
|
|
|
|
```
|
|
|
|
PUT /projects/:id/repository/branches/:branch/unprotect
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project.
|
|
|
|
+ `branch` (required) - The name of the branch.
|
|
|
|
|
2013-02-15 18:50:52 +01:00
|
|
|
|
|
|
|
### List tags
|
|
|
|
|
|
|
|
Lists all tags of a project.
|
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/repository/tags
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project
|
|
|
|
|
|
|
|
|
|
|
|
### List commits
|
|
|
|
|
|
|
|
Lists all commits with pagination. If the optional `ref_name` name is not given the commits of
|
|
|
|
the default branch (usually master) are returned.
|
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/repository/commits
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The Id of the project
|
|
|
|
+ `ref_name` (optional) - The name of a repository branch or tag
|
|
|
|
+ `page` (optional) - The page of commits to return (`0` default)
|
|
|
|
+ `per_page` (optional) - The number of commits per page (`20` default)
|
|
|
|
|
|
|
|
Returns values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success and a list with commits
|
|
|
|
+ `404 Not Found` if project with id or the branch with `ref_name` not found
|
|
|
|
|
|
|
|
|
|
|
|
## Snippets
|
|
|
|
|
|
|
|
### List snippets
|
|
|
|
|
|
|
|
Lists the snippets of a project.
|
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/snippets
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project
|
|
|
|
|
|
|
|
|
|
|
|
### List single snippet
|
|
|
|
|
|
|
|
Lists a single snippet of a project
|
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id/snippets/:snippet_id
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project
|
|
|
|
+ `snippet_id` (required) - The ID of the snippet
|
|
|
|
|
|
|
|
|
|
|
|
### Create snippet
|
|
|
|
|
|
|
|
Creates a new project snippet.
|
|
|
|
|
|
|
|
```
|
|
|
|
POST /projects/:id/snippets
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project
|
|
|
|
+ `title` (required) - The title of the new snippet
|
|
|
|
+ `file_name` (required) - The file name of the snippet
|
|
|
|
+ `code` (required) - The content of the snippet
|
|
|
|
+ `lifetime` (optional) - The expiration date of a snippet
|
|
|
|
|
|
|
|
|
|
|
|
### Update snippet
|
|
|
|
|
|
|
|
Updates an existing project snippet.
|
|
|
|
|
|
|
|
```
|
|
|
|
PUT /projects/:id/snippets/:snippet_id
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project
|
|
|
|
+ `snippet_id` (required) - The id of the project snippet
|
|
|
|
+ `title` (optional) - The new title of the project snippet
|
|
|
|
+ `file_name` (optional) - The new file name of the project snippet
|
|
|
|
+ `lifetime` (optional) - The new expiration date of the snippet
|
|
|
|
+ `code` (optional) - The content of the snippet
|
|
|
|
|
|
|
|
|
|
|
|
## Delete snippet
|
|
|
|
|
|
|
|
Deletes a project snippet. This is an idempotent function call and returns `200 Ok`
|
|
|
|
even if the snippet with the id is not available.
|
|
|
|
|
|
|
|
```
|
|
|
|
DELETE /projects/:id/snippets/:snippet_id
|
|
|
|
```
|
|
|
|
|
|
|
|
Paramaters:
|
|
|
|
|
|
|
|
+ `id` (required) - The ID of the project
|
|
|
|
+ `snippet_id` (required) - The ID of the snippet
|
|
|
|
|