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"
|
|
|
|
},
|
|
|
|
"private": 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"
|
|
|
|
},
|
|
|
|
"private": 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
|
|
|
|
2012-08-14 18:54:25 +02:00
|
|
|
Get a specific project, identified by project ID, which is owned by the authentication user.
|
2012-07-05 15:57:45 +02:00
|
|
|
|
|
|
|
```
|
|
|
|
GET /projects/:id
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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"
|
|
|
|
},
|
|
|
|
"private": 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
|
|
|
Return Values:
|
|
|
|
|
|
|
|
+ `200 Ok` if the project with given ID is found and the JSON response
|
|
|
|
+ `404 Not Found` if no project with ID found
|
|
|
|
|
|
|
|
|
|
|
|
### 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
|
|
|
Return values:
|
2012-08-31 09:27:45 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
+ `201 Created` on success with the project data (see example at `GET /projects/:id`)
|
|
|
|
+ `400 Bad Request` if the required attribute name is not given
|
|
|
|
+ `403 Forbidden` if the user is not allowed to create a project, e.g. reached the project limit already
|
|
|
|
+ `404 Not Found` if something else fails
|
|
|
|
|
|
|
|
|
|
|
|
### List project 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:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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
|
|
|
Return Values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success and a list of found team members
|
|
|
|
+ `404 Not Found` if project with ID not found
|
|
|
|
|
|
|
|
|
|
|
|
## 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
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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
|
|
|
Return Values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success and the team member, see example
|
|
|
|
+ `404 Not Found` if either the project or the team member could not be found
|
|
|
|
|
|
|
|
|
|
|
|
### 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:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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
|
|
|
Return Values:
|
2012-09-06 22:49:29 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
+ `200 Ok` on success and the added user, even if the user is already team member
|
|
|
|
+ `400 Bad Request` if the required attribute access_level is not given
|
|
|
|
+ `404 Not Found` if a resource can not be found, e.g. project with ID not available
|
|
|
|
+ `422 Unprocessable Entity` if an unknown access_level is given
|
|
|
|
|
|
|
|
|
|
|
|
### 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:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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
|
|
|
Return Values:
|
|
|
|
|
|
|
|
+ `200 Ok` on succes and the modified team member
|
|
|
|
+ `400 Bad Request` if the required attribute access_level is not given
|
|
|
|
+ `404 Not Found` if a resource can not be found, e.g. project with ID not available
|
|
|
|
+ `422 Unprocessable Entity` if an unknown access_level is given
|
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:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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
|
|
|
Return Values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success
|
|
|
|
+ `404 Not Found` if either project or user can not be found
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID of a project
|
2012-09-08 19:51:12 +02:00
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success with a list of hooks
|
|
|
|
+ `404 Not Found` if project can not be found
|
|
|
|
|
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
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on sucess and the hook with the given ID
|
|
|
|
+ `404 Not Found` if the hook can not be found
|
2012-10-12 09:38:15 +02:00
|
|
|
|
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:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID of a project
|
2012-09-08 19:51:12 +02:00
|
|
|
+ `url` (required) - The hook URL
|
|
|
|
|
2013-02-14 20:43:48 +01:00
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `201 Created` on success and the newly created hook
|
|
|
|
+ `400 Bad Request` if url is not given
|
|
|
|
+ `404 Not Found` if project with ID not found
|
|
|
|
+ `422 Unprocessable Entity` if the url is invalid (must begin with `http` or `https`)
|
2012-09-08 19:51:12 +02:00
|
|
|
|
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:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success and the modified hook (see JSON response above)
|
|
|
|
+ `400 Bad Request` if the url attribute is not given
|
|
|
|
+ `404 Not Found` if project or hook can not be found
|
|
|
|
+ `422 Unprocessable Entity` if the url is invalid (must begin with `http` or `https`)
|
2012-10-12 09:38:15 +02:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
```
|
|
|
|
DELETE /projects/:id/hooks
|
|
|
|
```
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
2012-12-21 18:47:04 +01:00
|
|
|
+ `id` (required) - The ID 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
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on succes
|
|
|
|
+ `404 Not Found` if the project can not be found
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success and a list of branches
|
|
|
|
+ `404 Not Found` if project is not found
|
|
|
|
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success
|
|
|
|
+ `404 Not Found` if either project with ID or branch could not be found
|
|
|
|
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success
|
|
|
|
+ `404 Not Found` if either project or branch could not be found
|
|
|
|
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|
|
|
Return values:
|
|
|
|
|
|
|
|
+ `200 Ok` on success
|
|
|
|
+ `404 Not Found` if either project or branch could not be found
|