gitlab

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


Solution

  • 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.