GitLab.RestApiClient is a .NET rest client for GitLab API v4.
$ dotnet add package GitLab.RestApiClientForked from GitLabApiClient, which has not been updated since 2021, in order to add some newer missing features.
Project.GetAllMembersAsync()Project.GetUsers(), which isn't an API endpointDateTime for AddGroupMemberRequest.ExpiredAtbool User.BotDateTime rather than string for Project.LastActivityAt and User.Created_AtThis should be useful but may be out of date as I add new features
// if you have auth token:
var client = new GitLabClient("https://gitlab.example.com", "your_private_token");
// if you want to use username & password:
var client = new GitLabClient("https://gitlab.example.com");
await client.LoginAsync("username", "password");
// create a new issue.
await client.Issues.CreateAsync("group/project", new CreateIssueRequest("issue title"));
// list issues for a project with specified assignee and labels.
await client.Issues.GetAsync("group/project", o => o.AssigneeId = 100 && o.Labels == new[] { "test-label" });
// create a new merge request featureBranch -> master.
await client.MergeRequests.CreateAsync("group/project", new CreateMergeRequest("featureBranch", "master", "Merge request title")
{
Labels = new[] { "bugfix" },
Description = "Implement feature"
});
// get a list of projects and find each project's README.
var projects = await Client.Projects.GetAsync();
foreach (var project in projects)
{
var file = await Client.Files.GetAsync(project, filePath: "README.md", reference: project.DefaultBranch);
var readme = file.ContentDecoded;
// mad science goes here
}