Gitlab : List all the projects and all the groups
If only your private token is available, you can only use the API:
PROJECTS
Use the following command to request projects:
curl "https://<host>/api/v4/projects?private_token=<your private token>"
This will return you the first 20 entries. To get more you can add the paramater per_page
curl "https://<host>/api/v4/projects?private_token=<your private token>&per_page=100"
with this parameter you can request between 20
and 100
entries. https://docs.gitlab.com/ce/api/README.html#pagination
If you now want all projects, you have to loop through the pages. To get to another page add the parameter page
.
curl "https://<host>/api/v4/projects?private_token=<your private token>&per_page=100&page=<page_number>"
Now you may want to know how many pages there are. For that, add the curl
parameter --head
. This will not return the payload, but the header.
The result should look like this:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 13 Jul 2017 17:43:24 GMT
Content-Type: application/json
Content-Length: 29428
Cache-Control: no-cache
Link: <request link>
Vary: Origin
X-Frame-Options: SAMEORIGIN
X-Next-Page: 2
X-Page: 1
X-Per-Page: 20
X-Prev-Page:
X-Request-Id: 80ecc167-4f3f-4c99-b09d-261e240e7fe9
X-Runtime: 4.117558
X-Total: 312257
X-Total-Pages: 15613
Strict-Transport-Security: max-age=31536000
The two interesting parts here are X-Total
and X-Total-Pages
. The first is the count of available entries and the second the count of total pages.
I suggest to use python or some other kind of script to handle the requests and concat the results at the end.
If you want to refine the search, consult this wiki page: https://docs.gitlab.com/ce/api/projects.html#projects-api
GROUPS
For groups simply replace projects
with groups
in the curls.
https://docs.gitlab.com/ce/api/groups.html#list-groups
UPDATE:
Here is the official list of Gitlab API clients/wrappers: https://about.gitlab.com/applications/#api-clients
I highly recommend using one of these.