Skip to content
This repository was archived by the owner on Dec 10, 2024. It is now read-only.

xanzy/go-gitlab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

68add03 Â· Dec 10, 2024
Nov 25, 2024
Oct 20, 2024
Dec 4, 2024
Apr 17, 2023
Nov 26, 2024
Sep 2, 2023
Feb 13, 2021
Jun 21, 2023
Dec 10, 2024
Apr 25, 2023
Nov 13, 2023
Oct 13, 2023
Oct 13, 2023
Apr 25, 2023
Nov 13, 2023
Oct 8, 2024
Oct 8, 2024
May 31, 2021
Nov 13, 2023
Apr 25, 2023
Dec 12, 2022
Dec 9, 2023
Dec 12, 2022
Jun 1, 2023
Dec 12, 2022
Apr 25, 2023
Nov 13, 2023
Apr 25, 2023
Dec 22, 2022
Mar 8, 2023
Apr 25, 2023
Nov 13, 2023
Jun 18, 2024
Nov 13, 2023
May 4, 2024
Feb 3, 2023
Apr 25, 2023
Feb 3, 2023
Nov 21, 2024
Nov 21, 2024
Nov 5, 2024
Nov 5, 2024
Apr 25, 2023
Nov 13, 2023
Mar 4, 2024
Apr 25, 2023
Dec 9, 2023
Dec 12, 2022
Oct 13, 2023
Dec 12, 2022
Apr 25, 2023
Dec 22, 2022
May 5, 2024
May 5, 2024
Apr 5, 2024
Mar 30, 2024
Oct 8, 2024
Nov 25, 2024
Apr 25, 2023
Dec 12, 2022
Apr 10, 2024
Nov 25, 2024
Apr 25, 2023
Nov 13, 2023
Nov 25, 2024
Nov 25, 2024
Nov 25, 2024
Jan 23, 2023
Oct 6, 2024
Nov 25, 2024
May 10, 2023
Mar 30, 2023
May 5, 2024
May 4, 2024
Apr 25, 2023
Dec 12, 2022
Feb 10, 2023
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Dec 22, 2022
Dec 10, 2024
Nov 25, 2024
Dec 5, 2024
Jun 25, 2024
Dec 1, 2023
Jan 16, 2024
Jul 28, 2023
Nov 13, 2023
Dec 9, 2023
Jan 16, 2024
Apr 25, 2023
Dec 12, 2022
Jul 26, 2023
Jul 26, 2023
Oct 28, 2024
Oct 28, 2024
Dec 24, 2022
Nov 25, 2024
Apr 25, 2023
Dec 12, 2022
Oct 28, 2024
Nov 25, 2024
Oct 24, 2024
Oct 17, 2024
Aug 26, 2024
Dec 7, 2023
Mar 6, 2024
Mar 6, 2024
Jul 23, 2023
Nov 13, 2023
Sep 3, 2024
Sep 3, 2024
Nov 17, 2023
Dec 9, 2023
Dec 8, 2024
Dec 8, 2024
Apr 25, 2023
Nov 13, 2023
Nov 15, 2024
Nov 15, 2024
Aug 8, 2024
Aug 8, 2024
Apr 25, 2023
Dec 12, 2022
Feb 6, 2024
Apr 5, 2023
Apr 25, 2023
Nov 13, 2023
Apr 25, 2023
Dec 12, 2022
Jan 13, 2024
Dec 9, 2023
Nov 25, 2024
Nov 25, 2024
Mar 10, 2024
Mar 10, 2024
Jul 9, 2024
Nov 13, 2023
Jul 5, 2023
Jul 5, 2023
Oct 28, 2024
Nov 25, 2024
Apr 25, 2023
Apr 25, 2023
Dec 12, 2022
Dec 12, 2022
Dec 5, 2021
Nov 13, 2023
Aug 26, 2024
Aug 26, 2024
Jul 24, 2024
Nov 13, 2023
Mar 19, 2024
Nov 25, 2024
Sep 3, 2023
Nov 13, 2023
Nov 18, 2024
Nov 18, 2024
Jul 5, 2023
Nov 13, 2023
Apr 25, 2023
Nov 13, 2023
Jan 17, 2024
Dec 12, 2022
Oct 8, 2023
Nov 9, 2023
Mar 23, 2024
Mar 19, 2024
Nov 3, 2024
Apr 25, 2023
Jan 23, 2023
Nov 3, 2024
Aug 5, 2024
Jun 25, 2024
Jul 9, 2024
Feb 3, 2023
Apr 25, 2023
Nov 13, 2023
Oct 31, 2024
Oct 30, 2024
Apr 25, 2023
Nov 13, 2023
Dec 1, 2023
Dec 1, 2023
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Feb 3, 2023
Dec 6, 2023
Dec 6, 2023
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Nov 13, 2023
Nov 9, 2024
Nov 9, 2024
Jan 18, 2024
Jan 30, 2023
Nov 13, 2023
Dec 12, 2022
Jul 23, 2023
Nov 13, 2023
Apr 25, 2023
May 27, 2024
Apr 25, 2023
Apr 14, 2023
Dec 8, 2024
Dec 8, 2024
Apr 25, 2023
Nov 13, 2023
Nov 29, 2024
Nov 27, 2024
Oct 14, 2024
Oct 14, 2024
Mar 6, 2024
Mar 6, 2024
Jul 18, 2023
Nov 13, 2023
Apr 16, 2024
Apr 16, 2024
Apr 16, 2024
Apr 16, 2024
Nov 3, 2024
Nov 3, 2024
Jun 25, 2024
Nov 13, 2023
Apr 25, 2023
Nov 13, 2023
Nov 13, 2023
Nov 7, 2023
May 14, 2024
May 14, 2024
Aug 26, 2024
Aug 26, 2024
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Nov 13, 2023
Oct 6, 2024
Nov 13, 2023
Jun 2, 2023
Dec 12, 2022
Oct 20, 2024
Nov 3, 2024
Oct 14, 2024
May 20, 2024
Apr 25, 2023
Dec 12, 2022
Jul 23, 2023
Nov 13, 2023
May 27, 2024
Nov 13, 2023
Feb 3, 2023
Oct 26, 2021
Apr 25, 2023
Nov 13, 2023
Apr 25, 2023
Nov 13, 2023
Oct 5, 2023
Apr 12, 2024
Feb 3, 2024
Apr 25, 2023
Nov 13, 2023
Nov 12, 2024
Jan 16, 2021
Dec 4, 2024
Dec 4, 2024
Mar 23, 2024
Mar 22, 2024
Apr 25, 2023
Dec 12, 2022
Apr 25, 2023
Nov 13, 2023

Repository files navigation

This repository is archived as it's development has been moved to GitLab!

go-gitlab (deprecated)

🚧 Project moved to https://gitlab.com/gitlab-org/api/client-go 🚧

This package, github.com/xanzy/go-gitlab, has been moved to gitlab.com/gitlab-org/api/client-go.

The project will continue to be a primarily community-maintained project, more about it here.

References:

Migration Steps

  • Replace github.com/xanzy/go-gitlab with gitlab.com/gitlab-org/api/client-go in your code base.
  • Profit 🎉
  • (the code is fully backwards-compatible, no breaking changes are expected)
Former README contents

A GitLab API client enabling Go programs to interact with GitLab in a simple and uniform way

Build Status Sourcegraph GoDoc Go Report Card Coverage

NOTE

Release v0.6.0 (released on 25-08-2017) no longer supports the older V3 GitLab API. If you need V3 support, please use the f-api-v3 branch. This release contains some backwards incompatible changes that were needed to fully support the V4 GitLab API.

Coverage

This API client package covers most of the existing GitLab API calls and is updated regularly to add new and/or missing endpoints. Currently, the following services are supported:

  • Applications
  • Award Emojis
  • Branches
  • Broadcast Messages
  • Commits
  • Container Registry
  • Custom Attributes
  • Dependency List Export
  • Deploy Keys
  • Deployments
  • Discussions (threaded comments)
  • Environments
  • Epic Issues
  • Epics
  • Error Tracking
  • Events
  • Feature Flags
  • Geo Nodes
  • Generic Packages
  • GitLab CI Config Templates
  • Gitignores Templates
  • Group Access Requests
  • Group Issue Boards
  • Group Members
  • Group Milestones
  • Group Wikis
  • Group-Level Variables
  • Groups
  • Instance Clusters
  • Invites
  • Issue Boards
  • Issues
  • Jobs
  • Keys
  • Labels
  • License
  • Markdown
  • Merge Request Approvals
  • Merge Requests
  • Namespaces
  • Notes (comments)
  • Notification Settings
  • Open Source License Templates
  • Packages
  • Pages
  • Pages Domains
  • Personal Access Tokens
  • Pipeline Schedules
  • Pipeline Triggers
  • Pipelines
  • Plan limits
  • Project Access Requests
  • Project Badges
  • Project Clusters
  • Project Import/export
  • Project Members
  • Project Milestones
  • Project Repository Storage Moves
  • Project Snippets
  • Project Vulnerabilities
  • Project-Level Variables
  • Projects (including setting Webhooks)
  • Protected Branches
  • Protected Environments
  • Protected Tags
  • Repositories
  • Repository Files
  • Repository Submodules
  • Runners
  • Search
  • Services
  • Settings
  • Sidekiq Metrics
  • System Hooks
  • Tags
  • Todos
  • Topics
  • Users
  • Validate CI Configuration
  • Version
  • Wikis

Usage

import "github.com/xanzy/go-gitlab"

Construct a new GitLab client, then use the various services on the client to access different parts of the GitLab API. For example, to list all users:

git, err := gitlab.NewClient("yourtokengoeshere")
if err != nil {
  log.Fatalf("Failed to create client: %v", err)
}
users, _, err := git.Users.ListUsers(&gitlab.ListUsersOptions{})

There are a few With... option functions that can be used to customize the API client. For example, to set a custom base URL:

git, err := gitlab.NewClient("yourtokengoeshere", gitlab.WithBaseURL("https://git.mydomain.com/api/v4"))
if err != nil {
  log.Fatalf("Failed to create client: %v", err)
}
users, _, err := git.Users.ListUsers(&gitlab.ListUsersOptions{})

Some API methods have optional parameters that can be passed. For example, to list all projects for user "svanharmelen":

git := gitlab.NewClient("yourtokengoeshere")
opt := &gitlab.ListProjectsOptions{Search: gitlab.Ptr("svanharmelen")}
projects, _, err := git.Projects.ListProjects(opt)

Examples

The examples directory contains a couple for clear examples, of which one is partially listed here as well:

package main

import (
	"log"

	"github.com/xanzy/go-gitlab"
)

func main() {
	git, err := gitlab.NewClient("yourtokengoeshere")
	if err != nil {
		log.Fatalf("Failed to create client: %v", err)
	}

	// Create new project
	p := &gitlab.CreateProjectOptions{
		Name:                     gitlab.Ptr("My Project"),
		Description:              gitlab.Ptr("Just a test project to play with"),
		MergeRequestsAccessLevel: gitlab.Ptr(gitlab.EnabledAccessControl),
		SnippetsAccessLevel:      gitlab.Ptr(gitlab.EnabledAccessControl),
		Visibility:               gitlab.Ptr(gitlab.PublicVisibility),
	}
	project, _, err := git.Projects.CreateProject(p)
	if err != nil {
		log.Fatal(err)
	}

	// Add a new snippet
	s := &gitlab.CreateProjectSnippetOptions{
		Title:           gitlab.Ptr("Dummy Snippet"),
		FileName:        gitlab.Ptr("snippet.go"),
		Content:         gitlab.Ptr("package main...."),
		Visibility:      gitlab.Ptr(gitlab.PublicVisibility),
	}
	_, _, err = git.ProjectSnippets.CreateSnippet(project.ID, s)
	if err != nil {
		log.Fatal(err)
	}
}

For complete usage of go-gitlab, see the full package docs.

ToDo

  • The biggest thing this package still needs is tests 😞

Issues

Author

Sander van Harmelen (sander@vanharmelen.nl)

Contributing

Contributions are always welcome. For more information, check out the contributing guide

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0