diff --git a/src/Octokit.Webhooks/Events/DeploymentEvent.cs b/src/Octokit.Webhooks/Events/DeploymentEvent.cs index bae7ff63..0d3fd256 100644 --- a/src/Octokit.Webhooks/Events/DeploymentEvent.cs +++ b/src/Octokit.Webhooks/Events/DeploymentEvent.cs @@ -11,5 +11,11 @@ public abstract record DeploymentEvent : WebhookEvent { [JsonPropertyName("deployment")] public Models.DeploymentEvent.Deployment Deployment { get; init; } = null!; + + [JsonPropertyName("workflow")] + public Models.Workflow? Workflow { get; init; } = null!; + + [JsonPropertyName("workflow_run")] + public Models.DeploymentEvent.DeploymentWorkflowRun? WorkflowRun { get; init; } = null!; } } diff --git a/src/Octokit.Webhooks/Events/DeploymentStatusEvent.cs b/src/Octokit.Webhooks/Events/DeploymentStatusEvent.cs index f3e02f43..69436ff8 100644 --- a/src/Octokit.Webhooks/Events/DeploymentStatusEvent.cs +++ b/src/Octokit.Webhooks/Events/DeploymentStatusEvent.cs @@ -14,5 +14,14 @@ public abstract record DeploymentStatusEvent : WebhookEvent [JsonPropertyName("deployment")] public Models.DeploymentStatusEvent.Deployment Deployment { get; init; } = null!; + + [JsonPropertyName("check_run")] + public Models.DeploymentEvent.DeploymentCheckRun? CheckRun { get; init; } + + [JsonPropertyName("workflow_run")] + public Models.DeploymentEvent.DeploymentWorkflowRun? WorkflowRun { get; init; } + + [JsonPropertyName("workflow")] + public Models.Workflow? Workflow { get; init; } } } diff --git a/src/Octokit.Webhooks/Models/CheckRunEvent/CheckRun.cs b/src/Octokit.Webhooks/Models/CheckRunEvent/CheckRun.cs index cebb46fa..dff0c26f 100644 --- a/src/Octokit.Webhooks/Models/CheckRunEvent/CheckRun.cs +++ b/src/Octokit.Webhooks/Models/CheckRunEvent/CheckRun.cs @@ -58,5 +58,8 @@ public sealed record CheckRun [JsonPropertyName("pull_requests")] public IEnumerable PullRequests { get; init; } = null!; + + [JsonPropertyName("deployment")] + public Deployment Deployment { get; init; } = null!; } } diff --git a/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRun.cs b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRun.cs new file mode 100644 index 00000000..ab42ef8d --- /dev/null +++ b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRun.cs @@ -0,0 +1,49 @@ +namespace Octokit.Webhooks.Models.DeploymentEvent +{ + using System; + using System.Text.Json.Serialization; + using JetBrains.Annotations; + using Octokit.Webhooks.Converter; + + [PublicAPI] + public sealed record DeploymentCheckRun + { + [JsonPropertyName("id")] + public long Id { get; init; } + + [JsonPropertyName("name")] + public string Name { get; init; } = null!; + + [JsonPropertyName("node_id")] + public string NodeId { get; init; } = null!; + + [JsonPropertyName("head_sha")] + public string HeadSha { get; init; } = null!; + + [JsonPropertyName("external_id")] + public string ExternalId { get; init; } = null!; + + [JsonPropertyName("url")] + public string Url { get; init; } = null!; + + [JsonPropertyName("html_url")] + public string HtmlUrl { get; init; } = null!; + + [JsonPropertyName("details_url")] + public string DetailsUrl { get; init; } = null!; + + [JsonPropertyName("status")] + public DeploymentCheckRunStatus Status { get; init; } + + [JsonPropertyName("conclusion")] + public DeploymentCheckRunConclusion? Conclusion { get; init; } + + [JsonPropertyName("started_at")] + [JsonConverter(typeof(DateTimeOffsetConverter))] + public DateTimeOffset StartedAt { get; init; } + + [JsonPropertyName("completed_at")] + [JsonConverter(typeof(NullableDateTimeOffsetConverter))] + public DateTimeOffset? CompletedAt { get; init; } + } +} diff --git a/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRunConclusion.cs b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRunConclusion.cs new file mode 100644 index 00000000..24280b00 --- /dev/null +++ b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRunConclusion.cs @@ -0,0 +1,26 @@ +namespace Octokit.Webhooks.Models.DeploymentEvent +{ + using System.Runtime.Serialization; + using System.Text.Json.Serialization; + + [JsonConverter(typeof(JsonStringEnumMemberConverter))] + public enum DeploymentCheckRunConclusion + { + [EnumMember(Value = "success")] + Success, + [EnumMember(Value = "failure")] + Failure, + [EnumMember(Value = "neutral")] + Neutral, + [EnumMember(Value = "cancelled")] + Cancelled, + [EnumMember(Value = "timed_out")] + TimedOut, + [EnumMember(Value = "actionRequired")] + ActionRequired, + [EnumMember(Value = "stale")] + Stale, + [EnumMember(Value = "skipped")] + Skipped, + } +} diff --git a/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRunStatus.cs b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRunStatus.cs new file mode 100644 index 00000000..d84d33e0 --- /dev/null +++ b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentCheckRunStatus.cs @@ -0,0 +1,20 @@ +namespace Octokit.Webhooks.Models.DeploymentEvent +{ + using System.Runtime.Serialization; + using System.Text.Json.Serialization; + + [JsonConverter(typeof(JsonStringEnumMemberConverter))] + public enum DeploymentCheckRunStatus + { + [EnumMember(Value = "requested")] + Requested, + [EnumMember(Value = "in_progress")] + InProgress, + [EnumMember(Value = "completed")] + Completed, + [EnumMember(Value = "queued")] + Queued, + [EnumMember(Value = "waiting")] + Waiting, + } +} diff --git a/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRun.cs b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRun.cs new file mode 100644 index 00000000..e86a8259 --- /dev/null +++ b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRun.cs @@ -0,0 +1,79 @@ +namespace Octokit.Webhooks.Models.DeploymentEvent +{ + using System; + using System.Collections.Generic; + using System.Text.Json.Serialization; + using JetBrains.Annotations; + using Octokit.Webhooks.Converter; + using Octokit.Webhooks.Models.CheckRunEvent; + + [PublicAPI] + public sealed record DeploymentWorkflowRun + { + [JsonPropertyName("id")] + public long Id { get; init; } + + [JsonPropertyName("name")] + public string Name { get; init; } = null!; + + [JsonPropertyName("node_id")] + public string NodeId { get; init; } = null!; + + [JsonPropertyName("head_branch")] + public string HeadBranch { get; init; } = null!; + + [JsonPropertyName("head_sha")] + public string HeadSha { get; init; } = null!; + + [JsonPropertyName("run_number")] + public long RunNumber { get; init; } + + [JsonPropertyName("event")] + public string Event { get; init; } = null!; + + [JsonPropertyName("status")] + public DeploymentWorkflowRunStatus? Status { get; init; } + + [JsonPropertyName("conclusion")] + public DeploymentWorkflowRunConclusion? Conclusion { get; init; } + + [JsonPropertyName("workflow_id")] + public long WorkflowId { get; init; } + + [JsonPropertyName("check_suite_id")] + public long CheckSuiteId { get; init; } + + [JsonPropertyName("check_suite_node_id")] + public string CheckSuiteNodeId { get; init; } = null!; + + [JsonPropertyName("url")] + public string Url { get; init; } = null!; + + [JsonPropertyName("html_url")] + public string HtmlUrl { get; init; } = null!; + + [JsonPropertyName("pull_requests")] + public IEnumerable PullRequests { get; init; } = null!; + + [JsonPropertyName("created_at")] + [JsonConverter(typeof(DateTimeOffsetConverter))] + public DateTimeOffset CreatedAt { get; init; } + + [JsonPropertyName("updated_at")] + [JsonConverter(typeof(DateTimeOffsetConverter))] + public DateTimeOffset UpdatedAt { get; init; } + + [JsonPropertyName("actor")] + public User Actor { get; init; } = null!; + + [JsonPropertyName("triggering_actor")] + public User TriggeringActor { get; init; } = null!; + + [JsonPropertyName("run_attempt")] + public long RunAttempt { get; init; } + + [JsonPropertyName("run_started_at")] + [JsonConverter(typeof(DateTimeOffsetConverter))] + public DateTimeOffset RunStartedAt { get; init; } + } +} diff --git a/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRunConclusion.cs b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRunConclusion.cs new file mode 100644 index 00000000..4dd0ac1c --- /dev/null +++ b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRunConclusion.cs @@ -0,0 +1,24 @@ +namespace Octokit.Webhooks.Models.DeploymentEvent +{ + using System.Runtime.Serialization; + using System.Text.Json.Serialization; + + [JsonConverter(typeof(JsonStringEnumMemberConverter))] + public enum DeploymentWorkflowRunConclusion + { + [EnumMember(Value = "success")] + Success, + [EnumMember(Value = "failure")] + Failure, + [EnumMember(Value = "neutral")] + Neutral, + [EnumMember(Value = "cancelled")] + Cancelled, + [EnumMember(Value = "timed_out")] + TimedOut, + [EnumMember(Value = "action_required")] + ActionRequired, + [EnumMember(Value = "stale")] + Stale, + } +} diff --git a/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRunStatus.cs b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRunStatus.cs new file mode 100644 index 00000000..f1601b58 --- /dev/null +++ b/src/Octokit.Webhooks/Models/DeploymentEvent/DeploymentWorkflowRunStatus.cs @@ -0,0 +1,20 @@ +namespace Octokit.Webhooks.Models.DeploymentEvent +{ + using System.Runtime.Serialization; + using System.Text.Json.Serialization; + + [JsonConverter(typeof(JsonStringEnumMemberConverter))] + public enum DeploymentWorkflowRunStatus + { + [EnumMember(Value = "requested")] + Requested, + [EnumMember(Value = "in_progress")] + InProgress, + [EnumMember(Value = "completed")] + Completed, + [EnumMember(Value = "queued")] + Queued, + [EnumMember(Value = "waiting")] + Waiting, + } +} diff --git a/src/Octokit.Webhooks/Models/DeploymentStatusEvent/DeploymentStatus.cs b/src/Octokit.Webhooks/Models/DeploymentStatusEvent/DeploymentStatus.cs index 03fa1152..0d862465 100644 --- a/src/Octokit.Webhooks/Models/DeploymentStatusEvent/DeploymentStatus.cs +++ b/src/Octokit.Webhooks/Models/DeploymentStatusEvent/DeploymentStatus.cs @@ -29,6 +29,12 @@ public sealed record DeploymentStatus [JsonPropertyName("environment")] public string Environment { get; init; } = null!; + [JsonPropertyName("environment_url")] + public string? EnvironmentUrl { get; init; } + + [JsonPropertyName("log_url")] + public string? LogUrl { get; init; } + [JsonPropertyName("target_url")] public string TargetUrl { get; init; } = null!; diff --git a/src/Octokit.Webhooks/Models/WorkflowRun.cs b/src/Octokit.Webhooks/Models/WorkflowRun.cs index 2ed212ae..84946b50 100644 --- a/src/Octokit.Webhooks/Models/WorkflowRun.cs +++ b/src/Octokit.Webhooks/Models/WorkflowRun.cs @@ -91,5 +91,21 @@ public sealed record WorkflowRun [JsonPropertyName("workflow_url")] public string WorkflowUrl { get; init; } = null!; + + [JsonPropertyName("run_attempt")] + public long RunAttempt { get; init; } + + [JsonPropertyName("run_started_at")] + [JsonConverter(typeof(DateTimeOffsetConverter))] + public DateTimeOffset RunStartedAt { get; init; } + + [JsonPropertyName("previous_attempt_url")] + public string? PreviousAttemptUrl { get; init; } + + [JsonPropertyName("actor")] + public User Actor { get; init; } = null!; + + [JsonPropertyName("triggering_actor")] + public User TriggeringActor { get; init; } = null!; } }