Skip to content

ProtectionChanges doesn't encapsulate all possible values #2485

@eolso

Description

@eolso

The ProtectionChanges object used by BranchProtectionRuleEvent does not include all the possible return values. Currently it looks like:

type ProtectionChanges struct {
	AuthorizedActorsOnly *AuthorizedActorsOnly `json:"authorized_actors_only,omitempty"`
	AuthorizedActorNames *AuthorizedActorNames `json:"authorized_actor_names,omitempty"`
}

which is all that is ever returned in GitHub's documentation, but that isn't all that is possible. It should look something more like:

type ProtectionChanges struct {
	PullRequestReviewsEnforcementLevel       *PullRequestReviewsEnforcementLevel       `json:"pull_request_reviews_enforcement_level,omitempty"`
	DismissStaleReviewsOnPush                *DismissStaleReviewsOnPush                `json:"dismiss_stale_reviews_on_push,omitempty"`
	RequireCodeOwnerReview                   *RequireCodeOwnerReview                   `json:"require_code_owner_review,omitempty"`
	AuthorizedDismissalActorsOnly            *AuthorizedDismissalActorsOnly            `json:"authorized_dismissal_actors_only,omitempty"`
	RequiredStatusChecks                     *RequiredStatusChecks                     `json:"required_status_checks,omitempty"`
	RequiredStatusChecksEnforcementLevel     *RequiredStatusChecksEnforcementLevel     `json:"required_status_checks_enforcement_level,omitempty"`
	SignatureRequirementEnforcementLevel     *SignatureRequirementEnforcementLevel     `json:"signature_requirement_enforcement_level,omitempty"`
	LinearHistoryRequirementEnforcementLevel *LinearHistoryRequirementEnforcementLevel `json:"linear_history_requirement_enforcement_level,omitempty"`
	AdminEnforced                            *AdminEnforced                            `json:"admin_enforced,omitempty"`
	CreateProtected                          *CreateProtected                          `json:"create_protected,omitempty"`
	AllowDeletionsEnforcementLevel           *AllowDeletionsEnforcementLevel           `json:"allow_deletions_enforcement_level,omitempty"`
	RequiredDeploymentsEnforcementLevel      *RequiredDeploymentsEnforcementLevel      `json:"required_deployments_enforcement_level,omitempty"`
	RequiredConversationResolutionLevel      *RequiredConversationResolutionLevel      `json:"required_conversation_resolution_level,omitempty"`
	AuthorizedActorsOnly                     *AuthorizedActorsOnly                     `json:"authorized_actors_only,omitempty"`
	AuthorizedActorNames                     *AuthorizedActorNames                     `json:"authorized_actor_names,omitempty"`
}

with one or two more fields related to require deployment successes.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions