diff --git a/src/GitLabApiClient/GitLabApiClient.csproj b/src/GitLabApiClient/GitLabApiClient.csproj
index 374b1209..ae3b6e98 100644
--- a/src/GitLabApiClient/GitLabApiClient.csproj
+++ b/src/GitLabApiClient/GitLabApiClient.csproj
@@ -19,7 +19,7 @@
- true
+ true
true
diff --git a/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs b/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs
index 309d178d..e9d9d549 100644
--- a/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs
+++ b/src/GitLabApiClient/Internal/Queries/PipelineQueryBuilder.cs
@@ -62,6 +62,11 @@ protected override void BuildCore(Query query, PipelineQueryOptions options)
{
query.Add("username", options.TriggeredBy);
}
+
+ if (options.Source.HasValue)
+ {
+ query.Add("source", options.Source.ToLowerCaseString());
+ }
}
#endregion
diff --git a/src/GitLabApiClient/Models/Job/Responses/Job.cs b/src/GitLabApiClient/Models/Job/Responses/Job.cs
index db7dbd77..c190c87c 100644
--- a/src/GitLabApiClient/Models/Job/Responses/Job.cs
+++ b/src/GitLabApiClient/Models/Job/Responses/Job.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using GitLabApiClient.Models.Commits.Responses;
using GitLabApiClient.Models.Pipelines.Responses;
using GitLabApiClient.Models.Runners.Responses;
@@ -28,7 +29,7 @@ public sealed class Job
public DateTime? FinishedAt { get; set; }
[JsonProperty("id")]
- public int Id { get; set; }
+ public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
@@ -56,5 +57,8 @@ public sealed class Job
[JsonProperty("web_url")]
public string WebUrl { get; set; }
+
+ [JsonProperty("tag_list")]
+ public IList TagList { get; set; }
}
}
diff --git a/src/GitLabApiClient/Models/Pipelines/PipelineSource.cs b/src/GitLabApiClient/Models/Pipelines/PipelineSource.cs
new file mode 100644
index 00000000..36d876ee
--- /dev/null
+++ b/src/GitLabApiClient/Models/Pipelines/PipelineSource.cs
@@ -0,0 +1,36 @@
+using System.Runtime.Serialization;
+
+namespace GitLabApiClient.Models.Pipelines
+{
+ public enum PipelineSource
+ {
+ [EnumMember(Value = "push")]
+ Push,
+ [EnumMember(Value = "web")]
+ Web,
+ [EnumMember(Value = "trigger")]
+ Trigger,
+ [EnumMember(Value = "schedule")]
+ Schedule,
+ [EnumMember(Value = "api")]
+ Api,
+ [EnumMember(Value = "external")]
+ External,
+ [EnumMember(Value = "pipeline")]
+ Pipeline,
+ [EnumMember(Value = "chat")]
+ Chat,
+ [EnumMember(Value = "webide")]
+ Webide,
+ [EnumMember(Value = "merge_request_event")]
+ MergeRequestEvent,
+ [EnumMember(Value = "external_pull_request_event")]
+ ExternalPullRequestEvent,
+ [EnumMember(Value = "parent_pipeline")]
+ ParentPipeline,
+ [EnumMember(Value = "ondemand_dast_scan")]
+ OndemandDastScan,
+ [EnumMember(Value = "ondemand_dast_validation")]
+ OndemandDastValidation
+ }
+}
diff --git a/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs b/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs
index 15e71ae8..1d2a6e9b 100644
--- a/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs
+++ b/src/GitLabApiClient/Models/Pipelines/Requests/PipelineQueryOptions.cs
@@ -55,5 +55,10 @@ internal PipelineQueryOptions() { }
/// The username of the user who triggered pipelines
///
public string TriggeredBy { get; set; }
+
+ ///
+ /// How the pipeline was triggered
+ ///
+ public PipelineSource? Source { get; set; }
}
}
diff --git a/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs b/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs
index f759c42f..d039a709 100644
--- a/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs
+++ b/src/GitLabApiClient/Models/Pipelines/Responses/PipelineDetail.cs
@@ -52,5 +52,8 @@ public class PipelineDetail
[JsonProperty("coverage")]
public string Coverage { get; set; }
+
+ [JsonProperty("source")]
+ public PipelineSource? Source { get; set; }
}
}
diff --git a/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs b/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs
index 2cf8a168..d7e3e557 100644
--- a/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs
+++ b/test/GitLabApiClient.Test/Internal/Queries/PipelineQueryBuilderTest.cs
@@ -24,7 +24,8 @@ public void NonDefaultQueryBuilt()
Status = PipelineStatus.Failed,
Scope = PipelineScope.Pending,
Order = PipelineOrder.UserId,
- SortOrder = SortOrder.Ascending
+ SortOrder = SortOrder.Ascending,
+ Source = PipelineSource.MergeRequestEvent
});
query.Should().Be("https://https://gitlab.com/api/v4/pipelines?" +
@@ -34,7 +35,9 @@ public void NonDefaultQueryBuilt()
"&status=failed" +
"&scope=pending" +
"&order_by=user_id" +
- "&sort=asc");
+ "&sort=asc" +
+ "&source=merge_request_event"
+ );
}
}
}