Skip to content

Commit cbf3d0b

Browse files
committed
Add support for the repository_advisory event
Signed-off-by: Adam Warner <[email protected]>
1 parent aaab013 commit cbf3d0b

25 files changed

+820
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace Octokit.Webhooks.Events.RepositoryAdvisory;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryAction : WebhookEventAction
5+
{
6+
public static readonly RepositoryAdvisoryAction Reported = new(RepositoryAdvisoryActionValue.Reported);
7+
8+
public static readonly RepositoryAdvisoryAction Published = new(RepositoryAdvisoryActionValue.Published);
9+
10+
private RepositoryAdvisoryAction(string value)
11+
: base(value)
12+
{
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Octokit.Webhooks.Events.RepositoryAdvisory;
2+
3+
public static class RepositoryAdvisoryActionValue
4+
{
5+
public const string Reported = "reported";
6+
7+
public const string Published = "published";
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Octokit.Webhooks.Events.RepositoryAdvisory;
2+
3+
[PublicAPI]
4+
[WebhookActionType(RepositoryAdvisoryActionValue.Published)]
5+
public sealed record RepositoryAdvisoryPublishedEvent : RepositoryAdvisoryEvent
6+
{
7+
[JsonPropertyName("action")]
8+
public override string Action => RepositoryAdvisoryAction.Published;
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Octokit.Webhooks.Events.RepositoryAdvisory;
2+
3+
[PublicAPI]
4+
[WebhookActionType(RepositoryAdvisoryActionValue.Reported)]
5+
public sealed record RepositoryAdvisoryReportedEvent : RepositoryAdvisoryEvent
6+
{
7+
[JsonPropertyName("action")]
8+
public override string Action => RepositoryAdvisoryAction.Reported;
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Octokit.Webhooks.Events;
2+
3+
[PublicAPI]
4+
[WebhookEventType(WebhookEventType.RepositoryAdvisory)]
5+
[JsonConverter(typeof(WebhookConverter<RepositoryAdvisoryEvent>))]
6+
public abstract record RepositoryAdvisoryEvent : WebhookEvent
7+
{
8+
[JsonPropertyName("repository_advisory")]
9+
public Models.RepositoryAdvisoryEvent.RepositoryAdvisory RepositoryAdvisory { get; init; } = null!;
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisory
5+
{
6+
[JsonPropertyName("ghsa_id")]
7+
public string GhsaId { get; init; } = null!;
8+
9+
[JsonPropertyName("cve_id")]
10+
public string? CveId { get; init; }
11+
12+
[JsonPropertyName("url")]
13+
public string Url { get; init; } = null!;
14+
15+
[JsonPropertyName("html_url")]
16+
public string HtmlUrl { get; init; } = null!;
17+
18+
[JsonPropertyName("summary")]
19+
public string Summary { get; init; } = null!;
20+
21+
[JsonPropertyName("description")]
22+
public string Description { get; init; } = null!;
23+
24+
[JsonPropertyName("severity")]
25+
[JsonConverter(typeof(StringEnumConverter<RepositoryAdvisorySeverity>))]
26+
public StringEnum<RepositoryAdvisorySeverity>? Severity { get; init; }
27+
28+
[JsonPropertyName("author")]
29+
public User? Author { get; init; }
30+
31+
[JsonPropertyName("publisher")]
32+
public User? Publisher { get; init; }
33+
34+
[JsonPropertyName("identifiers")]
35+
public IEnumerable<RepositoryAdvisoryIdentifier> Identifiers { get; init; } = null!;
36+
37+
[JsonPropertyName("state")]
38+
[JsonConverter(typeof(StringEnumConverter<RepositoryAdvisoryState>))]
39+
public StringEnum<RepositoryAdvisoryState> State { get; init; } = null!;
40+
41+
[JsonPropertyName("created_at")]
42+
[JsonConverter(typeof(DateTimeOffsetConverter))]
43+
public DateTimeOffset? CreatedAt { get; init; }
44+
45+
[JsonPropertyName("updated_at")]
46+
[JsonConverter(typeof(DateTimeOffsetConverter))]
47+
public DateTimeOffset? UpdatedAt { get; init; }
48+
49+
[JsonPropertyName("published_at")]
50+
[JsonConverter(typeof(DateTimeOffsetConverter))]
51+
public DateTimeOffset? PublishedAt { get; init; }
52+
53+
[JsonPropertyName("closed_at")]
54+
[JsonConverter(typeof(NullableDateTimeOffsetConverter))]
55+
public DateTimeOffset? ClosedAt { get; init; }
56+
57+
[JsonPropertyName("withdrawn_at")]
58+
[JsonConverter(typeof(NullableDateTimeOffsetConverter))]
59+
public DateTimeOffset? WithdrawnAt { get; init; }
60+
61+
[JsonPropertyName("submission")]
62+
public RepositoryAdvisorySubmission? Submission { get; init; }
63+
64+
[JsonPropertyName("vulnerabilities")]
65+
public IEnumerable<RepositoryAdvisoryVulnerability>? Vulnerabilities { get; init; }
66+
67+
[JsonPropertyName("cvss")]
68+
public RepositoryAdvisoryCvss? Cvss { get; init; }
69+
70+
[JsonPropertyName("cvss_severities")]
71+
public RepositoryAdvisoryCvssSeverities? CvssSeverities { get; init; }
72+
73+
[JsonPropertyName("cwes")]
74+
public IEnumerable<RepositoryAdvisoryCwe>? Cwes { get; init; }
75+
76+
[JsonPropertyName("cwe_ids")]
77+
public IEnumerable<string>? CweIds { get; init; }
78+
79+
[JsonPropertyName("credits")]
80+
public IEnumerable<RepositoryAdvisoryCredit>? Credits { get; init; }
81+
82+
[JsonPropertyName("credits_detailed")]
83+
public IEnumerable<RepositoryAdvisoryCreditDetailed>? CreditsDetailed { get; init; }
84+
85+
[JsonPropertyName("collaborating_users")]
86+
public IEnumerable<User>? CollaboratingUsers { get; init; }
87+
88+
[JsonPropertyName("collaborating_teams")]
89+
public IEnumerable<Team>? CollaboratingTeams { get; init; }
90+
91+
[JsonPropertyName("private_fork")]
92+
public Repository? PrivateFork { get; init; }
93+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryCredit
5+
{
6+
[JsonPropertyName("login")]
7+
public string Login { get; init; } = null!;
8+
9+
[JsonPropertyName("type")]
10+
[JsonConverter(typeof(StringEnumConverter<RepositoryAdvisoryCreditType>))]
11+
public StringEnum<RepositoryAdvisoryCreditType> Type { get; init; } = null!;
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryCreditDetailed
5+
{
6+
[JsonPropertyName("user")]
7+
public User User { get; init; } = null!;
8+
9+
[JsonPropertyName("type")]
10+
[JsonConverter(typeof(StringEnumConverter<RepositoryAdvisoryCreditType>))]
11+
public StringEnum<RepositoryAdvisoryCreditType> Type { get; init; } = null!;
12+
13+
[JsonPropertyName("state")]
14+
[JsonConverter(typeof(StringEnumConverter<RepositoryAdvisoryCreditState>))]
15+
public StringEnum<RepositoryAdvisoryCreditState>? State { get; init; }
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public enum RepositoryAdvisoryCreditState
5+
{
6+
[EnumMember(Value = "accepted")]
7+
Accepted,
8+
[EnumMember(Value = "declined")]
9+
Declined,
10+
[EnumMember(Value = "pending")]
11+
Pending,
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public enum RepositoryAdvisoryCreditType
5+
{
6+
[EnumMember(Value = "analyst")]
7+
Analyst,
8+
[EnumMember(Value = "finder")]
9+
Finder,
10+
[EnumMember(Value = "reporter")]
11+
Reporter,
12+
[EnumMember(Value = "coordinator")]
13+
Coordinator,
14+
[EnumMember(Value = "remediation_developer")]
15+
RemediationDeveloper,
16+
[EnumMember(Value = "remediation_reviewer")]
17+
RemediationReviewer,
18+
[EnumMember(Value = "remediation_verifier")]
19+
RemediationVerifier,
20+
[EnumMember(Value = "tool")]
21+
Tool,
22+
[EnumMember(Value = "sponsor")]
23+
Sponsor,
24+
[EnumMember(Value = "other")]
25+
Other,
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryCvss
5+
{
6+
[JsonPropertyName("vector_string")]
7+
public string? VectorString { get; init; }
8+
9+
[JsonPropertyName("score")]
10+
public float? Score { get; init; }
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryCvssSeverities
5+
{
6+
[JsonPropertyName("cvss_v3")]
7+
public RepositoryAdvisoryCvss? CvssV3 { get; init; }
8+
9+
[JsonPropertyName("cvss_v4")]
10+
public RepositoryAdvisoryCvss? CvssV4 { get; init; }
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryCwe
5+
{
6+
[JsonPropertyName("cwe_id")]
7+
public string CweId { get; init; } = null!;
8+
9+
[JsonPropertyName("name")]
10+
public string Name { get; init; } = null!;
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryIdentifier
5+
{
6+
[JsonPropertyName("value")]
7+
public string Value { get; init; } = null!;
8+
9+
[JsonPropertyName("type")]
10+
public string Type { get; init; } = null!;
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public enum RepositoryAdvisorySeverity
5+
{
6+
[EnumMember(Value = "critical")]
7+
Critical,
8+
[EnumMember(Value = "high")]
9+
High,
10+
[EnumMember(Value = "medium")]
11+
Medium,
12+
[EnumMember(Value = "low")]
13+
Low,
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public enum RepositoryAdvisoryState
5+
{
6+
[EnumMember(Value = "published")]
7+
Published,
8+
[EnumMember(Value = "closed")]
9+
Closed,
10+
[EnumMember(Value = "withdrawn")]
11+
Withdrawn,
12+
[EnumMember(Value = "draft")]
13+
Draft,
14+
[EnumMember(Value = "triage")]
15+
Triage,
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisorySubmission
5+
{
6+
[JsonPropertyName("accepted")]
7+
public bool Accepted { get; init; }
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryVulnerability
5+
{
6+
[JsonPropertyName("package")]
7+
public RepositoryAdvisoryVulnerabilityPackage? Package { get; init; }
8+
9+
[JsonPropertyName("vulnerable_version_range")]
10+
public string? VulnerableVersionRange { get; init; }
11+
12+
[JsonPropertyName("patched_versions")]
13+
public string? PatchedVersions { get; init; }
14+
15+
[JsonPropertyName("vulnerable_functions")]
16+
public IEnumerable<string>? VulnerableFunctions { get; init; }
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public sealed record RepositoryAdvisoryVulnerabilityPackage
5+
{
6+
[JsonPropertyName("ecosystem")]
7+
[JsonConverter(typeof(StringEnumConverter<RepositoryAdvisoryVulnerabilityPackageEcosystem>))]
8+
public StringEnum<RepositoryAdvisoryVulnerabilityPackageEcosystem> Ecosystem { get; init; } = null!;
9+
10+
[JsonPropertyName("name")]
11+
public string? Name { get; init; }
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
namespace Octokit.Webhooks.Models.RepositoryAdvisoryEvent;
2+
3+
[PublicAPI]
4+
public enum RepositoryAdvisoryVulnerabilityPackageEcosystem
5+
{
6+
[EnumMember(Value = "rubygems")]
7+
Rubygems,
8+
[EnumMember(Value = "npm")]
9+
Npm,
10+
[EnumMember(Value = "pip")]
11+
Pip,
12+
[EnumMember(Value = "maven")]
13+
Maven,
14+
[EnumMember(Value = "nuget")]
15+
Nuget,
16+
[EnumMember(Value = "composer")]
17+
Composer,
18+
[EnumMember(Value = "go")]
19+
Go,
20+
[EnumMember(Value = "rust")]
21+
Rust,
22+
[EnumMember(Value = "erlang")]
23+
Erlang,
24+
[EnumMember(Value = "actions")]
25+
Actions,
26+
[EnumMember(Value = "pub")]
27+
Pub,
28+
[EnumMember(Value = "other")]
29+
Other,
30+
[EnumMember(Value = "swift")]
31+
Swift,
32+
}

src/Octokit.Webhooks/WebHookEventType.cs

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public static class WebhookEventType
5454
public const string RegistryPackage = "registry_package";
5555
public const string Release = "release";
5656
public const string Repository = "repository";
57+
public const string RepositoryAdvisory = "repository_advisory";
5758
public const string RepositoryDispatch = "repository_dispatch";
5859
public const string RepositoryImport = "repository_import";
5960
public const string RepositoryRuleset = "repository_ruleset";

0 commit comments

Comments
 (0)