Andriy Kopachevskyy
Andriy Kopachevskyy

Reputation: 7686

Can't find out base GitLab API base url

I've created project and repo on my gitlab.com account, generated private key, now I'm trying to do API call to get list of commits.

Now I want to get list of projects via API, from documentation https://docs.gitlab.com/ce/api/projects.html#list-projects

GET /projects

So I'm doing:

curl --header "PRIVATE-TOKEN: XXXXXXX -c" "https://gitlab.com/projects"

And getting 404. I've tried several combinations and can't find correct base URL.

Same for repository commits, documentation https://docs.gitlab.com/ce/api/commits.html says

https://gitlab.example.com/api/v3/projects/5/repository/commits

fine, I'm trying (with myusername/projectname as project id) https://gitlab.com/api/v3/projects/myusername/projectname/repository/commits

And got 404 as well

Upvotes: 47

Views: 60762

Answers (3)

BrokenBinary
BrokenBinary

Reputation: 7879

The correct base url for the hosted GitLab is https://gitlab.com/api/v4/ so your request to
GET /projects would be

curl --header "PRIVATE-TOKEN: XXXXXX" "https://gitlab.com/api/v4/projects"

That would return all projects that are visible to you, including other user's public projects.

If you wish to view just your projects, then you should use the GET /users/:user_id/projects endpoint, where :user_id is your user ID that can be found on your GitLab profile page or in the response to your request to GET /user if you're authenticated.

# Get :user_id from this request
curl --header "PRIVATE-TOKEN: XXXXXX" "https://gitlab.com/api/v4/user"

# See your projects by replacing :user_id with id value from previous request
curl --header "PRIVATE-TOKEN: XXXXXX" "https://gitlab.com/api/v4/users/:user_id/projects"

Also, the project ID is not the same as the project name. You can retrieve the project ID from the response of your request to GET /users/:user_id/projects, or from the project's settings page.

Upvotes: 64

dejanualex
dejanualex

Reputation: 4328

For me the following request worked:

curl --header "PRIVATE-TOKEN: YOUR_TOKEN" "https://gitlab.com/api/v4/users/YOUR_USER_ID/projects" 

Don't know why the request :curl --header "PRIVATE-TOKEN: PRIVATE_TOKEN" "https://gitlab.com/api/v4/projects/" returned a list with some other public projects.

Another useful request for user info: curl --header "PRIVATE-TOKEN: PRIVATE_TOKEN" "https://gitlab.com/api/v4/user/"

Upvotes: 10

Anant Sarin
Anant Sarin

Reputation: 35

https://docs.gitlab.com/ee/api/#basic-usage

try this command : curl "https://gitlab.example.com/api/v4/projects" as given in the document

If you are using version3 of Gitlab then use curl --header "Authorization: Bearer OAUTH-TOKEN" https://gitlab.example.com/api/v3/projects

There is also "python-gitlab" module which will help you get Id from Project-name easily https://python-gitlab.readthedocs.io/en/stable/

Upvotes: 0

Related Questions