Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
7841be24
Commit
7841be24
authored
Dec 13, 2016
by
Robert Schilling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
API: Ability to get group's project in simple representation
parent
9a3c53fd
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
9 deletions
+32
-9
changelogs/unreleased/api-simple-group-project.yml
changelogs/unreleased/api-simple-group-project.yml
+4
-0
doc/api/groups.md
doc/api/groups.md
+11
-6
lib/api/groups.rb
lib/api/groups.rb
+4
-1
spec/requests/api/groups_spec.rb
spec/requests/api/groups_spec.rb
+13
-2
No files found.
changelogs/unreleased/api-simple-group-project.yml
0 → 100644
View file @
7841be24
---
title
:
'
API:
Simple
representation
of
group'
'
s
projects'
merge_request
:
8060
author
:
Robert Schilling
doc/api/groups.md
View file @
7841be24
...
...
@@ -50,12 +50,17 @@ GET /groups/:id/projects
Parameters:
-
`archived`
(optional) - if passed, limit by archived status
-
`visibility`
(optional) - if passed, limit by visibility
`public`
,
`internal`
,
`private`
-
`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
-
`ci_enabled_first`
- Return projects ordered by ci_enabled flag. Projects with enabled GitLab CI go first
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
|
`id`
| integer/string | yes | The ID or path of a group |
|
`archived`
| boolean | no | Limit by archived status |
|
`visibility`
| string | no | Limit by visibility
`public`
,
`internal`
, or
`private`
|
|
`order_by`
| string | no | Return projects ordered by
`id`
,
`name`
,
`path`
,
`created_at`
,
`updated_at`
, or
`last_activity_at`
fields. Default is
`created_at`
|
|
`sort`
| string | no | Return projects sorted in
`asc`
or
`desc`
order. Default is
`desc`
|
|
`search`
| string | no | Return list of authorized projects matching the search criteria |
|
`simple`
| boolean | no | Return only the ID, URL, name, and path of each project |
Example response:
```
json
[
...
...
lib/api/groups.rb
View file @
7841be24
...
...
@@ -125,13 +125,16 @@ module API
default:
'created_at'
,
desc:
'Return projects ordered by field'
optional
:sort
,
type:
String
,
values:
%w[asc desc]
,
default:
'desc'
,
desc:
'Return projects sorted in ascending and descending order'
optional
:simple
,
type:
Boolean
,
default:
false
,
desc:
'Return only the ID, URL, name, and path of each project'
use
:pagination
end
get
":id/projects"
do
group
=
find_group!
(
params
[
:id
])
projects
=
GroupProjectsFinder
.
new
(
group
).
execute
(
current_user
)
projects
=
filter_projects
(
projects
)
present
paginate
(
projects
),
with:
Entities
::
Project
,
user:
current_user
entity
=
params
[
:simple
]
?
Entities
::
BasicProjectDetails
:
Entities
::
Project
present
paginate
(
projects
),
with:
entity
,
user:
current_user
end
desc
'Transfer a project to the group namespace. Available only for admin.'
do
...
...
spec/requests/api/groups_spec.rb
View file @
7841be24
...
...
@@ -243,17 +243,28 @@ describe API::Groups, api: true do
expect
(
json_response
.
length
).
to
eq
(
2
)
project_names
=
json_response
.
map
{
|
proj
|
proj
[
'name'
]
}
expect
(
project_names
).
to
match_array
([
project1
.
name
,
project3
.
name
])
expect
(
json_response
.
first
[
'default_branch'
]).
to
be_present
end
it
"returns the group's projects with simple representation"
do
get
api
(
"/groups/
#{
group1
.
id
}
/projects"
,
user1
),
simple:
true
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
.
length
).
to
eq
(
2
)
project_names
=
json_response
.
map
{
|
proj
|
proj
[
'name'
]
}
expect
(
project_names
).
to
match_array
([
project1
.
name
,
project3
.
name
])
expect
(
json_response
.
first
[
'default_branch'
]).
not_to
be_present
end
it
'filters the groups projects'
do
public_projet
=
create
(
:project
,
:public
,
path:
'test1'
,
group:
group1
)
public_proje
c
t
=
create
(
:project
,
:public
,
path:
'test1'
,
group:
group1
)
get
api
(
"/groups/
#{
group1
.
id
}
/projects"
,
user1
),
visibility:
'public'
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
).
to
be_an
(
Array
)
expect
(
json_response
.
length
).
to
eq
(
1
)
expect
(
json_response
.
first
[
'name'
]).
to
eq
(
public_projet
.
name
)
expect
(
json_response
.
first
[
'name'
]).
to
eq
(
public_proje
c
t
.
name
)
end
it
"does not return a non existing group"
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment