Skip to content

Commit

Permalink
[FEATURE] Basic user_teams api
Browse files Browse the repository at this point in the history
 * Closing #3066
 * Closing gitlabhq#3609
  • Loading branch information
simonswine committed May 21, 2013
1 parent 6654db2 commit 0ebfa5e
Show file tree
Hide file tree
Showing 6 changed files with 863 additions and 0 deletions.
1 change: 1 addition & 0 deletions doc/api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,4 @@ When listing resources you can pass the following parameters:
+ [Milestones](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/milestones.md)
+ [Notes](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/notes.md)
+ [System Hooks](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/system_hooks.md)
+ [User Teams](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/user_teams.md)
209 changes: 209 additions & 0 deletions doc/api/user_teams.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
## User teams

### List user teams

Get a list of user teams viewable by the authenticated user.

```
GET /user_teams
```

```json
[
{
id: 1,
name: "User team 1",
path: "user_team1",
owner_id: 1
},
{
id: 2,
name: "User team 2",
path: "user_team2",
owner_id: 1
}
]
```


### Get single user team

Get a specific user team, identified by user team ID, which is viewable by the authenticated user.

```
GET /user_teams/:id
```

Parameters:

+ `id` (required) - The ID of a user_team

```json
{
id: 1,
name: "User team 1",
path: "user_team1",
owner_id: 1
}
```


### Create user team

Creates new user team owned by user. Available only for admins.

```
POST /user_teams
```

Parameters:

+ `name` (required) - new user team name
+ `path` (required) - new user team internal name



## User team members

### List user team members

Get a list of project team members.

```
GET /user_teams/:id/members
```

Parameters:

+ `id` (required) - The ID of a user_team


### Get user team member

Gets a user team member.

```
GET /user_teams/:id/members/:user_id
```

Parameters:

+ `id` (required) - The ID of a user_team
+ `user_id` (required) - The ID of a user

```json
{
id: 2,
username: "john_doe",
email: "[email protected]",
name: "John Doe",
state: "active",
created_at: "2012-10-22T14:13:35Z",
access_level: 30
}
```


### Add user team member

Adds a user to a user team.

```
POST /user_teams/:id/members
```

Parameters:

+ `id` (required) - The ID of a user team
+ `user_id` (required) - The ID of a user to add
+ `access_level` (required) - Project access level


### Remove user team member

Removes user from user team.

```
DELETE /user_teams/:id/members/:user_id
```

Parameters:

+ `id` (required) - The ID of a user team
+ `user_id` (required) - The ID of a team member

## User team projects

### List user team projects

Get a list of project team projects.

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

Parameters:

+ `id` (required) - The ID of a user_team


### Get user team project

Gets a user team project.

```
GET /user_teams/:id/projects/:project_id
```

Parameters:

+ `id` (required) - The ID of a user_team
+ `project_id` (required) - The ID of a user

```json
{
id: 12,
name: "project1",
description: null,
default_branch: "develop",
public: false,
path: "project1",
path_with_namespace: "group1/project1",
issues_enabled: false,
merge_requests_enabled: true,
wall_enabled: true,
wiki_enabled: false,
created_at: "2013-03-11T12:59:08Z",
greatest_access_level: 30
}
```


### Add user team project

Adds a project to a user team.

```
POST /user_teams/:id/projects
```

Parameters:

+ `id` (required) - The ID of a user team
+ `project_id` (required) - The ID of a project to add
+ `greatest_access_level` (required) - Maximum project access level


### Remove user team project

Removes project from user team.

```
DELETE /user_teams/:id/projects/:project_id
```

Parameters:

+ `id` (required) - The ID of a user team
+ `project_id` (required) - The ID of a team project

1 change: 1 addition & 0 deletions lib/api/api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,6 @@ class API < Grape::API
mount Notes
mount Internal
mount SystemHooks
mount UserTeams
end
end
16 changes: 16 additions & 0 deletions lib/api/entities.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,18 @@ class ProjectMember < UserBasic
end
end

class TeamMember < UserBasic
expose :permission, as: :access_level do |user, options|
options[:user_team].user_team_user_relationships.find_by_user_id(user.id).permission
end
end

class TeamProject < Project
expose :greatest_access, as: :greatest_access_level do |project, options|
options[:user_team].user_team_project_relationships.find_by_project_id(project.id).greatest_access
end
end

class Group < Grape::Entity
expose :id, :name, :path, :owner_id
end
Expand Down Expand Up @@ -87,6 +99,10 @@ class SSHKey < Grape::Entity
expose :id, :title, :key, :created_at
end

class UserTeam < Grape::Entity
expose :id, :name, :path, :owner_id
end

class MergeRequest < Grape::Entity
expose :id, :target_branch, :source_branch, :project_id, :title, :state
expose :author, :assignee, using: Entities::UserBasic
Expand Down
Loading

0 comments on commit 0ebfa5e

Please sign in to comment.