@@ -479,3 +479,160 @@ pub(crate) struct RepoSettings {
479479 pub archived : bool ,
480480 pub auto_merge_enabled : bool ,
481481}
482+
483+ /// GitHub Repository Ruleset
484+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
485+ pub ( crate ) struct Ruleset {
486+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
487+ pub ( crate ) id : Option < i64 > ,
488+ pub ( crate ) name : String ,
489+ pub ( crate ) target : RulesetTarget ,
490+ pub ( crate ) source_type : RulesetSourceType ,
491+ pub ( crate ) enforcement : RulesetEnforcement ,
492+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
493+ pub ( crate ) bypass_actors : Option < Vec < RulesetBypassActor > > ,
494+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
495+ pub ( crate ) conditions : Option < RulesetConditions > ,
496+ #[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
497+ pub ( crate ) rules : Vec < RulesetRule > ,
498+ }
499+
500+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
501+ #[ serde( rename_all = "lowercase" ) ]
502+ pub ( crate ) enum RulesetTarget {
503+ Branch ,
504+ Tag ,
505+ }
506+
507+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
508+ #[ serde( rename_all = "PascalCase" ) ]
509+ pub ( crate ) enum RulesetSourceType {
510+ Repository ,
511+ Organization ,
512+ }
513+
514+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
515+ #[ serde( rename_all = "lowercase" ) ]
516+ pub ( crate ) enum RulesetEnforcement {
517+ Active ,
518+ Disabled ,
519+ Evaluate ,
520+ }
521+
522+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
523+ pub ( crate ) struct RulesetBypassActor {
524+ pub ( crate ) actor_id : i64 ,
525+ pub ( crate ) actor_type : RulesetActorType ,
526+ pub ( crate ) bypass_mode : RulesetBypassMode ,
527+ }
528+
529+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
530+ #[ serde( rename_all = "snake_case" ) ]
531+ pub ( crate ) enum RulesetActorType {
532+ Integration ,
533+ OrganizationAdmin ,
534+ RepositoryRole ,
535+ Team ,
536+ }
537+
538+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
539+ #[ serde( rename_all = "snake_case" ) ]
540+ pub ( crate ) enum RulesetBypassMode {
541+ Always ,
542+ PullRequest ,
543+ }
544+
545+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
546+ pub ( crate ) struct RulesetConditions {
547+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
548+ pub ( crate ) ref_name : Option < RulesetRefNameCondition > ,
549+ }
550+
551+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
552+ pub ( crate ) struct RulesetRefNameCondition {
553+ pub ( crate ) include : Vec < String > ,
554+ pub ( crate ) exclude : Vec < String > ,
555+ }
556+
557+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
558+ #[ serde( tag = "type" , rename_all = "snake_case" ) ]
559+ pub ( crate ) enum RulesetRule {
560+ Creation ,
561+ Update ,
562+ Deletion ,
563+ RequiredLinearHistory ,
564+ MergeQueue {
565+ parameters : MergeQueueParameters ,
566+ } ,
567+ RequiredDeployments {
568+ parameters : RequiredDeploymentsParameters ,
569+ } ,
570+ RequiredSignatures ,
571+ PullRequest {
572+ parameters : PullRequestParameters ,
573+ } ,
574+ RequiredStatusChecks {
575+ parameters : RequiredStatusChecksParameters ,
576+ } ,
577+ NonFastForward ,
578+ }
579+
580+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
581+ pub ( crate ) struct MergeQueueParameters {
582+ pub ( crate ) check_response_timeout_minutes : i32 ,
583+ pub ( crate ) grouping_strategy : MergeQueueGroupingStrategy ,
584+ pub ( crate ) max_entries_to_build : i32 ,
585+ pub ( crate ) max_entries_to_merge : i32 ,
586+ pub ( crate ) merge_method : MergeQueueMergeMethod ,
587+ pub ( crate ) min_entries_to_merge : i32 ,
588+ pub ( crate ) min_entries_to_merge_wait_minutes : i32 ,
589+ }
590+
591+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
592+ #[ serde( rename_all = "SCREAMING_SNAKE_CASE" ) ]
593+ pub ( crate ) enum MergeQueueGroupingStrategy {
594+ Allgreen ,
595+ Headgreen ,
596+ }
597+
598+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
599+ #[ serde( rename_all = "SCREAMING_SNAKE_CASE" ) ]
600+ pub ( crate ) enum MergeQueueMergeMethod {
601+ Merge ,
602+ Squash ,
603+ Rebase ,
604+ }
605+
606+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
607+ pub ( crate ) struct RequiredDeploymentsParameters {
608+ pub ( crate ) required_deployment_environments : Vec < String > ,
609+ }
610+
611+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
612+ pub ( crate ) struct PullRequestParameters {
613+ pub ( crate ) dismiss_stale_reviews_on_push : bool ,
614+ pub ( crate ) require_code_owner_review : bool ,
615+ pub ( crate ) require_last_push_approval : bool ,
616+ pub ( crate ) required_approving_review_count : i32 ,
617+ pub ( crate ) required_review_thread_resolution : bool ,
618+ }
619+
620+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
621+ pub ( crate ) struct RequiredStatusChecksParameters {
622+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
623+ pub ( crate ) do_not_enforce_on_create : Option < bool > ,
624+ pub ( crate ) required_status_checks : Vec < RequiredStatusCheck > ,
625+ pub ( crate ) strict_required_status_checks_policy : bool ,
626+ }
627+
628+ #[ derive( Clone , Debug , PartialEq , Eq , serde:: Serialize , serde:: Deserialize ) ]
629+ pub ( crate ) struct RequiredStatusCheck {
630+ pub ( crate ) context : String ,
631+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
632+ pub ( crate ) integration_id : Option < i64 > ,
633+ }
634+
635+ pub ( crate ) enum RulesetOp {
636+ CreateForRepo ,
637+ UpdateRuleset ( i64 ) ,
638+ }
0 commit comments