diff options
author | Hannes Rosenögger <123haynes@gmail.com> | 2015-04-03 13:18:55 +0000 |
---|---|---|
committer | Hannes Rosenögger <123haynes@gmail.com> | 2015-04-03 13:18:55 +0000 |
commit | 965b92a725e5570e09bdd4609d4ddd896fddcbab (patch) | |
tree | 4ba68ed5a8ab3eb7e817f8bf4a78a22e6ffc833e | |
parent | 9157985cfce1391973673ea278dc7506a90f8f53 (diff) | |
parent | f04549056806d2bcb63441ebdffe1032711e83c8 (diff) | |
download | gitlab-ce-965b92a725e5570e09bdd4609d4ddd896fddcbab.tar.gz |
Merge branch 'feature_expose_project_labels' into 'master'
Exposing Project Labels in the REST API
The intent here is to expose the tag_list property of the Project entity over the REST API so that any project searches include the information. The specific reason I've implemented this change is for an environment in which multiple gitlab servers exist, where a central portal to the projects that are spread around the network will be useful. Having access to filtering on this fairly large project list based on their labels, will be of great use.
This satisfies the feature request http://feedback.gitlab.com/forums/176466-general/suggestions/6325819-project-labels-via-api
The change was made in the `lib/api/entities.rb` file.
The output of a `GET` to something like `/projects` or `/projects/7` is now:
```javascript
{
"id": 7,
"description": "Veritatis est eaque voluptas magni expedita.",
"default_branch": "master",
**"tag_list": [
"typeahead",
"twitter"
],**
"public": false,
"archived": false,
"visibility_level": 0,
...
}
```
See merge request !329
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | doc/api/projects.md | 12 | ||||
-rw-r--r-- | lib/api/entities.rb | 2 | ||||
-rw-r--r-- | spec/requests/api/projects_spec.rb | 9 |
4 files changed, 22 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG index 1934d03634a..7fdd7e38a93 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -58,6 +58,7 @@ v 7.10.0 (unreleased) - Fix "Hello @username." references not working by no longer allowing usernames to end in period. - Archive repositories in background worker. - Import GitHub, Bitbucket or GitLab.com projects owned by authenticated user into current namespace. + - Project labels are now available over the API under the "tag_list" field (Cristian Medina) v 7.9.2 diff --git a/doc/api/projects.md b/doc/api/projects.md index 7fe244477db..55d525fef66 100644 --- a/doc/api/projects.md +++ b/doc/api/projects.md @@ -44,6 +44,10 @@ Parameters: "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", + "tag_list": [ + "example", + "disapora client" + ], "owner": { "id": 3, "name": "Diaspora", @@ -80,6 +84,10 @@ Parameters: "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", + "tag_list": [ + "example", + "puppet" + ], "owner": { "id": 4, "name": "Brightbox", @@ -163,6 +171,10 @@ Parameters: "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", + "tag_list": [ + "example", + "disapora project" + ], "owner": { "id": 3, "name": "Diaspora", diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 489be210784..51cb934616b 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -46,7 +46,7 @@ module API end class Project < Grape::Entity - expose :id, :description, :default_branch + expose :id, :description, :default_branch, :tag_list expose :public?, as: :public expose :archived?, as: :archived expose :visibility_level, :ssh_url_to_repo, :http_url_to_repo, :web_url diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index b713f1fe898..cc387378d3a 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -57,7 +57,14 @@ describe API::API, api: true do expect(json_response.first['name']).to eq(project.name) expect(json_response.first['owner']['username']).to eq(user.username) end - + + it 'should include the project labels as the tag_list' do + get api('/projects', user) + response.status.should == 200 + json_response.should be_an Array + json_response.first.keys.should include('tag_list') + end + context 'and using search' do it 'should return searched project' do get api('/projects', user), { search: project.name } |