pulumi-github 6.11.0a1768542226__py3-none-any.whl → 6.12.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. pulumi_github/__init__.py +37 -0
  2. pulumi_github/_inputs.py +527 -34
  3. pulumi_github/actions_environment_secret.py +141 -12
  4. pulumi_github/actions_environment_variable.py +73 -39
  5. pulumi_github/actions_organization_permissions.py +50 -3
  6. pulumi_github/actions_organization_secret.py +164 -55
  7. pulumi_github/actions_organization_secret_repositories.py +44 -28
  8. pulumi_github/actions_organization_secret_repository.py +44 -28
  9. pulumi_github/actions_organization_variable.py +44 -47
  10. pulumi_github/actions_organization_variable_repositories.py +262 -0
  11. pulumi_github/actions_organization_variable_repository.py +262 -0
  12. pulumi_github/actions_organization_workflow_permissions.py +320 -0
  13. pulumi_github/actions_repository_permissions.py +50 -3
  14. pulumi_github/actions_secret.py +176 -41
  15. pulumi_github/actions_variable.py +65 -33
  16. pulumi_github/app_installation_repositories.py +6 -6
  17. pulumi_github/app_installation_repository.py +6 -6
  18. pulumi_github/dependabot_organization_secret.py +128 -59
  19. pulumi_github/dependabot_organization_secret_repositories.py +44 -36
  20. pulumi_github/dependabot_organization_secret_repository.py +262 -0
  21. pulumi_github/dependabot_secret.py +154 -41
  22. pulumi_github/emu_group_mapping.py +62 -6
  23. pulumi_github/get_ip_ranges.py +3 -0
  24. pulumi_github/get_release_asset.py +370 -0
  25. pulumi_github/get_repository.py +17 -2
  26. pulumi_github/get_team.py +29 -13
  27. pulumi_github/organization_ruleset.py +11 -17
  28. pulumi_github/outputs.py +404 -25
  29. pulumi_github/pulumi-plugin.json +1 -1
  30. pulumi_github/repository.py +88 -23
  31. pulumi_github/repository_custom_property.py +2 -2
  32. pulumi_github/repository_environment.py +11 -11
  33. pulumi_github/repository_environment_deployment_policy.py +4 -4
  34. pulumi_github/repository_ruleset.py +7 -7
  35. pulumi_github/team.py +70 -21
  36. {pulumi_github-6.11.0a1768542226.dist-info → pulumi_github-6.12.0.dist-info}/METADATA +1 -1
  37. {pulumi_github-6.11.0a1768542226.dist-info → pulumi_github-6.12.0.dist-info}/RECORD +39 -34
  38. {pulumi_github-6.11.0a1768542226.dist-info → pulumi_github-6.12.0.dist-info}/WHEEL +1 -1
  39. {pulumi_github-6.11.0a1768542226.dist-info → pulumi_github-6.12.0.dist-info}/top_level.txt +0 -0
pulumi_github/_inputs.py CHANGED
@@ -65,6 +65,8 @@ __all__ = [
65
65
  'OrganizationRulesetRulesCommitMessagePatternArgsDict',
66
66
  'OrganizationRulesetRulesCommitterEmailPatternArgs',
67
67
  'OrganizationRulesetRulesCommitterEmailPatternArgsDict',
68
+ 'OrganizationRulesetRulesCopilotCodeReviewArgs',
69
+ 'OrganizationRulesetRulesCopilotCodeReviewArgsDict',
68
70
  'OrganizationRulesetRulesFileExtensionRestrictionArgs',
69
71
  'OrganizationRulesetRulesFileExtensionRestrictionArgsDict',
70
72
  'OrganizationRulesetRulesFilePathRestrictionArgs',
@@ -75,6 +77,10 @@ __all__ = [
75
77
  'OrganizationRulesetRulesMaxFileSizeArgsDict',
76
78
  'OrganizationRulesetRulesPullRequestArgs',
77
79
  'OrganizationRulesetRulesPullRequestArgsDict',
80
+ 'OrganizationRulesetRulesPullRequestRequiredReviewerArgs',
81
+ 'OrganizationRulesetRulesPullRequestRequiredReviewerArgsDict',
82
+ 'OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgs',
83
+ 'OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgsDict',
78
84
  'OrganizationRulesetRulesRequiredCodeScanningArgs',
79
85
  'OrganizationRulesetRulesRequiredCodeScanningArgsDict',
80
86
  'OrganizationRulesetRulesRequiredCodeScanningRequiredCodeScanningToolArgs',
@@ -123,6 +129,8 @@ __all__ = [
123
129
  'RepositoryRulesetRulesCommitMessagePatternArgsDict',
124
130
  'RepositoryRulesetRulesCommitterEmailPatternArgs',
125
131
  'RepositoryRulesetRulesCommitterEmailPatternArgsDict',
132
+ 'RepositoryRulesetRulesCopilotCodeReviewArgs',
133
+ 'RepositoryRulesetRulesCopilotCodeReviewArgsDict',
126
134
  'RepositoryRulesetRulesFileExtensionRestrictionArgs',
127
135
  'RepositoryRulesetRulesFileExtensionRestrictionArgsDict',
128
136
  'RepositoryRulesetRulesFilePathRestrictionArgs',
@@ -135,6 +143,10 @@ __all__ = [
135
143
  'RepositoryRulesetRulesMergeQueueArgsDict',
136
144
  'RepositoryRulesetRulesPullRequestArgs',
137
145
  'RepositoryRulesetRulesPullRequestArgsDict',
146
+ 'RepositoryRulesetRulesPullRequestRequiredReviewerArgs',
147
+ 'RepositoryRulesetRulesPullRequestRequiredReviewerArgsDict',
148
+ 'RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgs',
149
+ 'RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgsDict',
138
150
  'RepositoryRulesetRulesRequiredCodeScanningArgs',
139
151
  'RepositoryRulesetRulesRequiredCodeScanningArgsDict',
140
152
  'RepositoryRulesetRulesRequiredCodeScanningRequiredCodeScanningToolArgs',
@@ -1514,12 +1526,12 @@ if not MYPY:
1514
1526
 
1515
1527
  ~>Note: at the time of writing this, the following actor types correspond to the following actor IDs:
1516
1528
 
1517
- * `OrganizationAdmin` > `1`
1518
- * `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
1529
+ - `OrganizationAdmin` > `1`
1530
+ - `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
1519
1531
  """
1520
1532
  actor_id: NotRequired[pulumi.Input[_builtins.int]]
1521
1533
  """
1522
- (Number) The ID of the actor that can bypass a ruleset.
1534
+ (Number) The ID of the actor that can bypass a ruleset. Some actor types such as `DeployKey` do not have an ID.
1523
1535
  """
1524
1536
  elif False:
1525
1537
  OrganizationRulesetBypassActorArgsDict: TypeAlias = Mapping[str, Any]
@@ -1536,9 +1548,9 @@ class OrganizationRulesetBypassActorArgs:
1536
1548
 
1537
1549
  ~>Note: at the time of writing this, the following actor types correspond to the following actor IDs:
1538
1550
 
1539
- * `OrganizationAdmin` > `1`
1540
- * `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
1541
- :param pulumi.Input[_builtins.int] actor_id: (Number) The ID of the actor that can bypass a ruleset.
1551
+ - `OrganizationAdmin` > `1`
1552
+ - `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
1553
+ :param pulumi.Input[_builtins.int] actor_id: (Number) The ID of the actor that can bypass a ruleset. Some actor types such as `DeployKey` do not have an ID.
1542
1554
  """
1543
1555
  pulumi.set(__self__, "actor_type", actor_type)
1544
1556
  pulumi.set(__self__, "bypass_mode", bypass_mode)
@@ -1565,8 +1577,8 @@ class OrganizationRulesetBypassActorArgs:
1565
1577
 
1566
1578
  ~>Note: at the time of writing this, the following actor types correspond to the following actor IDs:
1567
1579
 
1568
- * `OrganizationAdmin` > `1`
1569
- * `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
1580
+ - `OrganizationAdmin` > `1`
1581
+ - `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
1570
1582
  """
1571
1583
  return pulumi.get(self, "bypass_mode")
1572
1584
 
@@ -1578,7 +1590,7 @@ class OrganizationRulesetBypassActorArgs:
1578
1590
  @pulumi.getter(name="actorId")
1579
1591
  def actor_id(self) -> Optional[pulumi.Input[_builtins.int]]:
1580
1592
  """
1581
- (Number) The ID of the actor that can bypass a ruleset.
1593
+ (Number) The ID of the actor that can bypass a ruleset. Some actor types such as `DeployKey` do not have an ID.
1582
1594
  """
1583
1595
  return pulumi.get(self, "actor_id")
1584
1596
 
@@ -1589,9 +1601,9 @@ class OrganizationRulesetBypassActorArgs:
1589
1601
 
1590
1602
  if not MYPY:
1591
1603
  class OrganizationRulesetConditionsArgsDict(TypedDict):
1592
- ref_name: pulumi.Input['OrganizationRulesetConditionsRefNameArgsDict']
1604
+ ref_name: NotRequired[pulumi.Input['OrganizationRulesetConditionsRefNameArgsDict']]
1593
1605
  """
1594
- (Block List, Min: 1, Max: 1) (see below for nested schema)
1606
+ (Block List, Max: 1) Required for `branch` and `tag` targets. Must NOT be set for `push` targets. (see below for nested schema)
1595
1607
  """
1596
1608
  repository_ids: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.int]]]]
1597
1609
  """
@@ -1602,6 +1614,8 @@ if not MYPY:
1602
1614
  Conflicts with `repository_id`. (see below for nested schema)
1603
1615
 
1604
1616
  One of `repository_id` and `repository_name` must be set for the rule to target any repositories.
1617
+
1618
+ > **Note:** For `push` targets, do not include `ref_name` in conditions. Push rulesets operate on file content, not on refs.
1605
1619
  """
1606
1620
  elif False:
1607
1621
  OrganizationRulesetConditionsArgsDict: TypeAlias = Mapping[str, Any]
@@ -1609,17 +1623,20 @@ elif False:
1609
1623
  @pulumi.input_type
1610
1624
  class OrganizationRulesetConditionsArgs:
1611
1625
  def __init__(__self__, *,
1612
- ref_name: pulumi.Input['OrganizationRulesetConditionsRefNameArgs'],
1626
+ ref_name: Optional[pulumi.Input['OrganizationRulesetConditionsRefNameArgs']] = None,
1613
1627
  repository_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.int]]]] = None,
1614
1628
  repository_name: Optional[pulumi.Input['OrganizationRulesetConditionsRepositoryNameArgs']] = None):
1615
1629
  """
1616
- :param pulumi.Input['OrganizationRulesetConditionsRefNameArgs'] ref_name: (Block List, Min: 1, Max: 1) (see below for nested schema)
1630
+ :param pulumi.Input['OrganizationRulesetConditionsRefNameArgs'] ref_name: (Block List, Max: 1) Required for `branch` and `tag` targets. Must NOT be set for `push` targets. (see below for nested schema)
1617
1631
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.int]]] repository_ids: The repository IDs that the ruleset applies to. One of these IDs must match for the condition to pass. Conflicts with `repository_name`.
1618
1632
  :param pulumi.Input['OrganizationRulesetConditionsRepositoryNameArgs'] repository_name: Conflicts with `repository_id`. (see below for nested schema)
1619
1633
 
1620
1634
  One of `repository_id` and `repository_name` must be set for the rule to target any repositories.
1635
+
1636
+ > **Note:** For `push` targets, do not include `ref_name` in conditions. Push rulesets operate on file content, not on refs.
1621
1637
  """
1622
- pulumi.set(__self__, "ref_name", ref_name)
1638
+ if ref_name is not None:
1639
+ pulumi.set(__self__, "ref_name", ref_name)
1623
1640
  if repository_ids is not None:
1624
1641
  pulumi.set(__self__, "repository_ids", repository_ids)
1625
1642
  if repository_name is not None:
@@ -1627,14 +1644,14 @@ class OrganizationRulesetConditionsArgs:
1627
1644
 
1628
1645
  @_builtins.property
1629
1646
  @pulumi.getter(name="refName")
1630
- def ref_name(self) -> pulumi.Input['OrganizationRulesetConditionsRefNameArgs']:
1647
+ def ref_name(self) -> Optional[pulumi.Input['OrganizationRulesetConditionsRefNameArgs']]:
1631
1648
  """
1632
- (Block List, Min: 1, Max: 1) (see below for nested schema)
1649
+ (Block List, Max: 1) Required for `branch` and `tag` targets. Must NOT be set for `push` targets. (see below for nested schema)
1633
1650
  """
1634
1651
  return pulumi.get(self, "ref_name")
1635
1652
 
1636
1653
  @ref_name.setter
1637
- def ref_name(self, value: pulumi.Input['OrganizationRulesetConditionsRefNameArgs']):
1654
+ def ref_name(self, value: Optional[pulumi.Input['OrganizationRulesetConditionsRefNameArgs']]):
1638
1655
  pulumi.set(self, "ref_name", value)
1639
1656
 
1640
1657
  @_builtins.property
@@ -1656,6 +1673,8 @@ class OrganizationRulesetConditionsArgs:
1656
1673
  Conflicts with `repository_id`. (see below for nested schema)
1657
1674
 
1658
1675
  One of `repository_id` and `repository_name` must be set for the rule to target any repositories.
1676
+
1677
+ > **Note:** For `push` targets, do not include `ref_name` in conditions. Push rulesets operate on file content, not on refs.
1659
1678
  """
1660
1679
  return pulumi.get(self, "repository_name")
1661
1680
 
@@ -1802,6 +1821,10 @@ if not MYPY:
1802
1821
  """
1803
1822
  (Block List, Max: 1) Parameters to be used for the committer_email_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
1804
1823
  """
1824
+ copilot_code_review: NotRequired[pulumi.Input['OrganizationRulesetRulesCopilotCodeReviewArgsDict']]
1825
+ """
1826
+ (Block List, Max: 1) Automatically request Copilot code review for new pull requests if the author has access to Copilot code review and their premium requests quota has not reached the limit. (see below for nested schema)
1827
+ """
1805
1828
  creation: NotRequired[pulumi.Input[_builtins.bool]]
1806
1829
  """
1807
1830
  (Boolean) Only allow users with bypass permission to create matching refs.
@@ -1872,6 +1895,7 @@ class OrganizationRulesetRulesArgs:
1872
1895
  commit_author_email_pattern: Optional[pulumi.Input['OrganizationRulesetRulesCommitAuthorEmailPatternArgs']] = None,
1873
1896
  commit_message_pattern: Optional[pulumi.Input['OrganizationRulesetRulesCommitMessagePatternArgs']] = None,
1874
1897
  committer_email_pattern: Optional[pulumi.Input['OrganizationRulesetRulesCommitterEmailPatternArgs']] = None,
1898
+ copilot_code_review: Optional[pulumi.Input['OrganizationRulesetRulesCopilotCodeReviewArgs']] = None,
1875
1899
  creation: Optional[pulumi.Input[_builtins.bool]] = None,
1876
1900
  deletion: Optional[pulumi.Input[_builtins.bool]] = None,
1877
1901
  file_extension_restriction: Optional[pulumi.Input['OrganizationRulesetRulesFileExtensionRestrictionArgs']] = None,
@@ -1892,6 +1916,7 @@ class OrganizationRulesetRulesArgs:
1892
1916
  :param pulumi.Input['OrganizationRulesetRulesCommitAuthorEmailPatternArgs'] commit_author_email_pattern: (Block List, Max: 1) Parameters to be used for the commit_author_email_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
1893
1917
  :param pulumi.Input['OrganizationRulesetRulesCommitMessagePatternArgs'] commit_message_pattern: (Block List, Max: 1) Parameters to be used for the commit_message_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
1894
1918
  :param pulumi.Input['OrganizationRulesetRulesCommitterEmailPatternArgs'] committer_email_pattern: (Block List, Max: 1) Parameters to be used for the committer_email_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
1919
+ :param pulumi.Input['OrganizationRulesetRulesCopilotCodeReviewArgs'] copilot_code_review: (Block List, Max: 1) Automatically request Copilot code review for new pull requests if the author has access to Copilot code review and their premium requests quota has not reached the limit. (see below for nested schema)
1895
1920
  :param pulumi.Input[_builtins.bool] creation: (Boolean) Only allow users with bypass permission to create matching refs.
1896
1921
  :param pulumi.Input[_builtins.bool] deletion: (Boolean) Only allow users with bypass permissions to delete matching refs.
1897
1922
  :param pulumi.Input['OrganizationRulesetRulesFileExtensionRestrictionArgs'] file_extension_restriction: (Block List, Max: 1) Prevent commits that include files with specified file extensions from being pushed to the commit graph. This rule only applies to rulesets with target `push`. (see below for nested schema)
@@ -1916,6 +1941,8 @@ class OrganizationRulesetRulesArgs:
1916
1941
  pulumi.set(__self__, "commit_message_pattern", commit_message_pattern)
1917
1942
  if committer_email_pattern is not None:
1918
1943
  pulumi.set(__self__, "committer_email_pattern", committer_email_pattern)
1944
+ if copilot_code_review is not None:
1945
+ pulumi.set(__self__, "copilot_code_review", copilot_code_review)
1919
1946
  if creation is not None:
1920
1947
  pulumi.set(__self__, "creation", creation)
1921
1948
  if deletion is not None:
@@ -1995,6 +2022,18 @@ class OrganizationRulesetRulesArgs:
1995
2022
  def committer_email_pattern(self, value: Optional[pulumi.Input['OrganizationRulesetRulesCommitterEmailPatternArgs']]):
1996
2023
  pulumi.set(self, "committer_email_pattern", value)
1997
2024
 
2025
+ @_builtins.property
2026
+ @pulumi.getter(name="copilotCodeReview")
2027
+ def copilot_code_review(self) -> Optional[pulumi.Input['OrganizationRulesetRulesCopilotCodeReviewArgs']]:
2028
+ """
2029
+ (Block List, Max: 1) Automatically request Copilot code review for new pull requests if the author has access to Copilot code review and their premium requests quota has not reached the limit. (see below for nested schema)
2030
+ """
2031
+ return pulumi.get(self, "copilot_code_review")
2032
+
2033
+ @copilot_code_review.setter
2034
+ def copilot_code_review(self, value: Optional[pulumi.Input['OrganizationRulesetRulesCopilotCodeReviewArgs']]):
2035
+ pulumi.set(self, "copilot_code_review", value)
2036
+
1998
2037
  @_builtins.property
1999
2038
  @pulumi.getter
2000
2039
  def creation(self) -> Optional[pulumi.Input[_builtins.bool]]:
@@ -2536,6 +2575,58 @@ class OrganizationRulesetRulesCommitterEmailPatternArgs:
2536
2575
  pulumi.set(self, "negate", value)
2537
2576
 
2538
2577
 
2578
+ if not MYPY:
2579
+ class OrganizationRulesetRulesCopilotCodeReviewArgsDict(TypedDict):
2580
+ review_draft_pull_requests: NotRequired[pulumi.Input[_builtins.bool]]
2581
+ """
2582
+ Copilot automatically reviews draft pull requests before they are marked as ready for review. Defaults to `false`.
2583
+ """
2584
+ review_on_push: NotRequired[pulumi.Input[_builtins.bool]]
2585
+ """
2586
+ Copilot automatically reviews each new push to the pull request. Defaults to `false`.
2587
+ """
2588
+ elif False:
2589
+ OrganizationRulesetRulesCopilotCodeReviewArgsDict: TypeAlias = Mapping[str, Any]
2590
+
2591
+ @pulumi.input_type
2592
+ class OrganizationRulesetRulesCopilotCodeReviewArgs:
2593
+ def __init__(__self__, *,
2594
+ review_draft_pull_requests: Optional[pulumi.Input[_builtins.bool]] = None,
2595
+ review_on_push: Optional[pulumi.Input[_builtins.bool]] = None):
2596
+ """
2597
+ :param pulumi.Input[_builtins.bool] review_draft_pull_requests: Copilot automatically reviews draft pull requests before they are marked as ready for review. Defaults to `false`.
2598
+ :param pulumi.Input[_builtins.bool] review_on_push: Copilot automatically reviews each new push to the pull request. Defaults to `false`.
2599
+ """
2600
+ if review_draft_pull_requests is not None:
2601
+ pulumi.set(__self__, "review_draft_pull_requests", review_draft_pull_requests)
2602
+ if review_on_push is not None:
2603
+ pulumi.set(__self__, "review_on_push", review_on_push)
2604
+
2605
+ @_builtins.property
2606
+ @pulumi.getter(name="reviewDraftPullRequests")
2607
+ def review_draft_pull_requests(self) -> Optional[pulumi.Input[_builtins.bool]]:
2608
+ """
2609
+ Copilot automatically reviews draft pull requests before they are marked as ready for review. Defaults to `false`.
2610
+ """
2611
+ return pulumi.get(self, "review_draft_pull_requests")
2612
+
2613
+ @review_draft_pull_requests.setter
2614
+ def review_draft_pull_requests(self, value: Optional[pulumi.Input[_builtins.bool]]):
2615
+ pulumi.set(self, "review_draft_pull_requests", value)
2616
+
2617
+ @_builtins.property
2618
+ @pulumi.getter(name="reviewOnPush")
2619
+ def review_on_push(self) -> Optional[pulumi.Input[_builtins.bool]]:
2620
+ """
2621
+ Copilot automatically reviews each new push to the pull request. Defaults to `false`.
2622
+ """
2623
+ return pulumi.get(self, "review_on_push")
2624
+
2625
+ @review_on_push.setter
2626
+ def review_on_push(self, value: Optional[pulumi.Input[_builtins.bool]]):
2627
+ pulumi.set(self, "review_on_push", value)
2628
+
2629
+
2539
2630
  if not MYPY:
2540
2631
  class OrganizationRulesetRulesFileExtensionRestrictionArgsDict(TypedDict):
2541
2632
  restricted_file_extensions: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
@@ -2662,6 +2753,10 @@ class OrganizationRulesetRulesMaxFileSizeArgs:
2662
2753
 
2663
2754
  if not MYPY:
2664
2755
  class OrganizationRulesetRulesPullRequestArgsDict(TypedDict):
2756
+ allowed_merge_methods: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
2757
+ """
2758
+ Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.
2759
+ """
2665
2760
  dismiss_stale_reviews_on_push: NotRequired[pulumi.Input[_builtins.bool]]
2666
2761
  """
2667
2762
  New, reviewable commits pushed will dismiss previous pull request review approvals. Defaults to `false`.
@@ -2682,24 +2777,34 @@ if not MYPY:
2682
2777
  """
2683
2778
  All conversations on code must be resolved before a pull request can be merged. Defaults to `false`.
2684
2779
  """
2780
+ required_reviewers: NotRequired[pulumi.Input[Sequence[pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerArgsDict']]]]
2781
+ """
2782
+ Require specific reviewers to approve pull requests targeting matching branches. Note: This feature is in beta and subject to change.
2783
+ """
2685
2784
  elif False:
2686
2785
  OrganizationRulesetRulesPullRequestArgsDict: TypeAlias = Mapping[str, Any]
2687
2786
 
2688
2787
  @pulumi.input_type
2689
2788
  class OrganizationRulesetRulesPullRequestArgs:
2690
2789
  def __init__(__self__, *,
2790
+ allowed_merge_methods: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
2691
2791
  dismiss_stale_reviews_on_push: Optional[pulumi.Input[_builtins.bool]] = None,
2692
2792
  require_code_owner_review: Optional[pulumi.Input[_builtins.bool]] = None,
2693
2793
  require_last_push_approval: Optional[pulumi.Input[_builtins.bool]] = None,
2694
2794
  required_approving_review_count: Optional[pulumi.Input[_builtins.int]] = None,
2695
- required_review_thread_resolution: Optional[pulumi.Input[_builtins.bool]] = None):
2795
+ required_review_thread_resolution: Optional[pulumi.Input[_builtins.bool]] = None,
2796
+ required_reviewers: Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerArgs']]]] = None):
2696
2797
  """
2798
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_merge_methods: Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.
2697
2799
  :param pulumi.Input[_builtins.bool] dismiss_stale_reviews_on_push: New, reviewable commits pushed will dismiss previous pull request review approvals. Defaults to `false`.
2698
2800
  :param pulumi.Input[_builtins.bool] require_code_owner_review: Require an approving review in pull requests that modify files that have a designated code owner. Defaults to `false`.
2699
2801
  :param pulumi.Input[_builtins.bool] require_last_push_approval: Whether the most recent reviewable push must be approved by someone other than the person who pushed it. Defaults to `false`.
2700
2802
  :param pulumi.Input[_builtins.int] required_approving_review_count: The number of approving reviews that are required before a pull request can be merged. Defaults to `0`.
2701
2803
  :param pulumi.Input[_builtins.bool] required_review_thread_resolution: All conversations on code must be resolved before a pull request can be merged. Defaults to `false`.
2804
+ :param pulumi.Input[Sequence[pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerArgs']]] required_reviewers: Require specific reviewers to approve pull requests targeting matching branches. Note: This feature is in beta and subject to change.
2702
2805
  """
2806
+ if allowed_merge_methods is not None:
2807
+ pulumi.set(__self__, "allowed_merge_methods", allowed_merge_methods)
2703
2808
  if dismiss_stale_reviews_on_push is not None:
2704
2809
  pulumi.set(__self__, "dismiss_stale_reviews_on_push", dismiss_stale_reviews_on_push)
2705
2810
  if require_code_owner_review is not None:
@@ -2710,6 +2815,20 @@ class OrganizationRulesetRulesPullRequestArgs:
2710
2815
  pulumi.set(__self__, "required_approving_review_count", required_approving_review_count)
2711
2816
  if required_review_thread_resolution is not None:
2712
2817
  pulumi.set(__self__, "required_review_thread_resolution", required_review_thread_resolution)
2818
+ if required_reviewers is not None:
2819
+ pulumi.set(__self__, "required_reviewers", required_reviewers)
2820
+
2821
+ @_builtins.property
2822
+ @pulumi.getter(name="allowedMergeMethods")
2823
+ def allowed_merge_methods(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
2824
+ """
2825
+ Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.
2826
+ """
2827
+ return pulumi.get(self, "allowed_merge_methods")
2828
+
2829
+ @allowed_merge_methods.setter
2830
+ def allowed_merge_methods(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
2831
+ pulumi.set(self, "allowed_merge_methods", value)
2713
2832
 
2714
2833
  @_builtins.property
2715
2834
  @pulumi.getter(name="dismissStaleReviewsOnPush")
@@ -2771,6 +2890,137 @@ class OrganizationRulesetRulesPullRequestArgs:
2771
2890
  def required_review_thread_resolution(self, value: Optional[pulumi.Input[_builtins.bool]]):
2772
2891
  pulumi.set(self, "required_review_thread_resolution", value)
2773
2892
 
2893
+ @_builtins.property
2894
+ @pulumi.getter(name="requiredReviewers")
2895
+ def required_reviewers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerArgs']]]]:
2896
+ """
2897
+ Require specific reviewers to approve pull requests targeting matching branches. Note: This feature is in beta and subject to change.
2898
+ """
2899
+ return pulumi.get(self, "required_reviewers")
2900
+
2901
+ @required_reviewers.setter
2902
+ def required_reviewers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerArgs']]]]):
2903
+ pulumi.set(self, "required_reviewers", value)
2904
+
2905
+
2906
+ if not MYPY:
2907
+ class OrganizationRulesetRulesPullRequestRequiredReviewerArgsDict(TypedDict):
2908
+ file_patterns: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
2909
+ """
2910
+ File patterns (fnmatch syntax) that this reviewer must approve.
2911
+ """
2912
+ minimum_approvals: pulumi.Input[_builtins.int]
2913
+ """
2914
+ Minimum number of approvals required from this reviewer. Set to 0 to make approval optional.
2915
+ """
2916
+ reviewer: pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgsDict']
2917
+ """
2918
+ The reviewer that must review matching files.
2919
+ """
2920
+ elif False:
2921
+ OrganizationRulesetRulesPullRequestRequiredReviewerArgsDict: TypeAlias = Mapping[str, Any]
2922
+
2923
+ @pulumi.input_type
2924
+ class OrganizationRulesetRulesPullRequestRequiredReviewerArgs:
2925
+ def __init__(__self__, *,
2926
+ file_patterns: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
2927
+ minimum_approvals: pulumi.Input[_builtins.int],
2928
+ reviewer: pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgs']):
2929
+ """
2930
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] file_patterns: File patterns (fnmatch syntax) that this reviewer must approve.
2931
+ :param pulumi.Input[_builtins.int] minimum_approvals: Minimum number of approvals required from this reviewer. Set to 0 to make approval optional.
2932
+ :param pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgs'] reviewer: The reviewer that must review matching files.
2933
+ """
2934
+ pulumi.set(__self__, "file_patterns", file_patterns)
2935
+ pulumi.set(__self__, "minimum_approvals", minimum_approvals)
2936
+ pulumi.set(__self__, "reviewer", reviewer)
2937
+
2938
+ @_builtins.property
2939
+ @pulumi.getter(name="filePatterns")
2940
+ def file_patterns(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
2941
+ """
2942
+ File patterns (fnmatch syntax) that this reviewer must approve.
2943
+ """
2944
+ return pulumi.get(self, "file_patterns")
2945
+
2946
+ @file_patterns.setter
2947
+ def file_patterns(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
2948
+ pulumi.set(self, "file_patterns", value)
2949
+
2950
+ @_builtins.property
2951
+ @pulumi.getter(name="minimumApprovals")
2952
+ def minimum_approvals(self) -> pulumi.Input[_builtins.int]:
2953
+ """
2954
+ Minimum number of approvals required from this reviewer. Set to 0 to make approval optional.
2955
+ """
2956
+ return pulumi.get(self, "minimum_approvals")
2957
+
2958
+ @minimum_approvals.setter
2959
+ def minimum_approvals(self, value: pulumi.Input[_builtins.int]):
2960
+ pulumi.set(self, "minimum_approvals", value)
2961
+
2962
+ @_builtins.property
2963
+ @pulumi.getter
2964
+ def reviewer(self) -> pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgs']:
2965
+ """
2966
+ The reviewer that must review matching files.
2967
+ """
2968
+ return pulumi.get(self, "reviewer")
2969
+
2970
+ @reviewer.setter
2971
+ def reviewer(self, value: pulumi.Input['OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgs']):
2972
+ pulumi.set(self, "reviewer", value)
2973
+
2974
+
2975
+ if not MYPY:
2976
+ class OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgsDict(TypedDict):
2977
+ id: pulumi.Input[_builtins.int]
2978
+ """
2979
+ The ID of the reviewer that must review.
2980
+ """
2981
+ type: pulumi.Input[_builtins.str]
2982
+ """
2983
+ The type of reviewer. Currently only `Team` is supported.
2984
+ """
2985
+ elif False:
2986
+ OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgsDict: TypeAlias = Mapping[str, Any]
2987
+
2988
+ @pulumi.input_type
2989
+ class OrganizationRulesetRulesPullRequestRequiredReviewerReviewerArgs:
2990
+ def __init__(__self__, *,
2991
+ id: pulumi.Input[_builtins.int],
2992
+ type: pulumi.Input[_builtins.str]):
2993
+ """
2994
+ :param pulumi.Input[_builtins.int] id: The ID of the reviewer that must review.
2995
+ :param pulumi.Input[_builtins.str] type: The type of reviewer. Currently only `Team` is supported.
2996
+ """
2997
+ pulumi.set(__self__, "id", id)
2998
+ pulumi.set(__self__, "type", type)
2999
+
3000
+ @_builtins.property
3001
+ @pulumi.getter
3002
+ def id(self) -> pulumi.Input[_builtins.int]:
3003
+ """
3004
+ The ID of the reviewer that must review.
3005
+ """
3006
+ return pulumi.get(self, "id")
3007
+
3008
+ @id.setter
3009
+ def id(self, value: pulumi.Input[_builtins.int]):
3010
+ pulumi.set(self, "id", value)
3011
+
3012
+ @_builtins.property
3013
+ @pulumi.getter
3014
+ def type(self) -> pulumi.Input[_builtins.str]:
3015
+ """
3016
+ The type of reviewer. Currently only `Team` is supported.
3017
+ """
3018
+ return pulumi.get(self, "type")
3019
+
3020
+ @type.setter
3021
+ def type(self, value: pulumi.Input[_builtins.str]):
3022
+ pulumi.set(self, "type", value)
3023
+
2774
3024
 
2775
3025
  if not MYPY:
2776
3026
  class OrganizationRulesetRulesRequiredCodeScanningArgsDict(TypedDict):
@@ -3820,12 +4070,12 @@ if not MYPY:
3820
4070
 
3821
4071
  > Note: at the time of writing this, the following actor types correspond to the following actor IDs:
3822
4072
 
3823
- * `OrganizationAdmin` > `1`
3824
- * `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
4073
+ - `OrganizationAdmin` > `1`
4074
+ - `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
3825
4075
  """
3826
4076
  actor_id: NotRequired[pulumi.Input[_builtins.int]]
3827
4077
  """
3828
- The ID of the actor that can bypass a ruleset. If `actor_type` is `Integration`, `actor_id` is a GitHub App ID. App ID can be obtained by following instructions from the [Get an App API docs](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-app)
4078
+ (Number) The ID of the actor that can bypass a ruleset. If `actor_type` is `Integration`, `actor_id` is a GitHub App ID. App ID can be obtained by following instructions from the [Get an App API docs](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-app). Some actor types such as `DeployKey` do not have an ID.
3829
4079
  """
3830
4080
  elif False:
3831
4081
  RepositoryRulesetBypassActorArgsDict: TypeAlias = Mapping[str, Any]
@@ -3842,9 +4092,9 @@ class RepositoryRulesetBypassActorArgs:
3842
4092
 
3843
4093
  > Note: at the time of writing this, the following actor types correspond to the following actor IDs:
3844
4094
 
3845
- * `OrganizationAdmin` > `1`
3846
- * `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
3847
- :param pulumi.Input[_builtins.int] actor_id: The ID of the actor that can bypass a ruleset. If `actor_type` is `Integration`, `actor_id` is a GitHub App ID. App ID can be obtained by following instructions from the [Get an App API docs](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-app)
4095
+ - `OrganizationAdmin` > `1`
4096
+ - `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
4097
+ :param pulumi.Input[_builtins.int] actor_id: (Number) The ID of the actor that can bypass a ruleset. If `actor_type` is `Integration`, `actor_id` is a GitHub App ID. App ID can be obtained by following instructions from the [Get an App API docs](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-app). Some actor types such as `DeployKey` do not have an ID.
3848
4098
  """
3849
4099
  pulumi.set(__self__, "actor_type", actor_type)
3850
4100
  pulumi.set(__self__, "bypass_mode", bypass_mode)
@@ -3871,8 +4121,8 @@ class RepositoryRulesetBypassActorArgs:
3871
4121
 
3872
4122
  > Note: at the time of writing this, the following actor types correspond to the following actor IDs:
3873
4123
 
3874
- * `OrganizationAdmin` > `1`
3875
- * `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
4124
+ - `OrganizationAdmin` > `1`
4125
+ - `RepositoryRole` (This is the actor type, the following are the base repository roles and their associated IDs.)
3876
4126
  """
3877
4127
  return pulumi.get(self, "bypass_mode")
3878
4128
 
@@ -3884,7 +4134,7 @@ class RepositoryRulesetBypassActorArgs:
3884
4134
  @pulumi.getter(name="actorId")
3885
4135
  def actor_id(self) -> Optional[pulumi.Input[_builtins.int]]:
3886
4136
  """
3887
- The ID of the actor that can bypass a ruleset. If `actor_type` is `Integration`, `actor_id` is a GitHub App ID. App ID can be obtained by following instructions from the [Get an App API docs](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-app)
4137
+ (Number) The ID of the actor that can bypass a ruleset. If `actor_type` is `Integration`, `actor_id` is a GitHub App ID. App ID can be obtained by following instructions from the [Get an App API docs](https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-app). Some actor types such as `DeployKey` do not have an ID.
3888
4138
  """
3889
4139
  return pulumi.get(self, "actor_id")
3890
4140
 
@@ -3897,7 +4147,9 @@ if not MYPY:
3897
4147
  class RepositoryRulesetConditionsArgsDict(TypedDict):
3898
4148
  ref_name: pulumi.Input['RepositoryRulesetConditionsRefNameArgsDict']
3899
4149
  """
3900
- (Block List, Min: 1, Max: 1) (see below for nested schema)
4150
+ (Block List, Max: 1) Required for `branch` and `tag` targets. Must NOT be set for `push` targets. (see below for nested schema)
4151
+
4152
+ > **Note:** For `push` targets, do not include `ref_name` in conditions. Push rulesets operate on file content, not on refs. The `conditions` block is optional for push targets.
3901
4153
  """
3902
4154
  elif False:
3903
4155
  RepositoryRulesetConditionsArgsDict: TypeAlias = Mapping[str, Any]
@@ -3907,7 +4159,9 @@ class RepositoryRulesetConditionsArgs:
3907
4159
  def __init__(__self__, *,
3908
4160
  ref_name: pulumi.Input['RepositoryRulesetConditionsRefNameArgs']):
3909
4161
  """
3910
- :param pulumi.Input['RepositoryRulesetConditionsRefNameArgs'] ref_name: (Block List, Min: 1, Max: 1) (see below for nested schema)
4162
+ :param pulumi.Input['RepositoryRulesetConditionsRefNameArgs'] ref_name: (Block List, Max: 1) Required for `branch` and `tag` targets. Must NOT be set for `push` targets. (see below for nested schema)
4163
+
4164
+ > **Note:** For `push` targets, do not include `ref_name` in conditions. Push rulesets operate on file content, not on refs. The `conditions` block is optional for push targets.
3911
4165
  """
3912
4166
  pulumi.set(__self__, "ref_name", ref_name)
3913
4167
 
@@ -3915,7 +4169,9 @@ class RepositoryRulesetConditionsArgs:
3915
4169
  @pulumi.getter(name="refName")
3916
4170
  def ref_name(self) -> pulumi.Input['RepositoryRulesetConditionsRefNameArgs']:
3917
4171
  """
3918
- (Block List, Min: 1, Max: 1) (see below for nested schema)
4172
+ (Block List, Max: 1) Required for `branch` and `tag` targets. Must NOT be set for `push` targets. (see below for nested schema)
4173
+
4174
+ > **Note:** For `push` targets, do not include `ref_name` in conditions. Push rulesets operate on file content, not on refs. The `conditions` block is optional for push targets.
3919
4175
  """
3920
4176
  return pulumi.get(self, "ref_name")
3921
4177
 
@@ -3992,6 +4248,10 @@ if not MYPY:
3992
4248
  """
3993
4249
  (Block List, Max: 1) Parameters to be used for the committer_email_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
3994
4250
  """
4251
+ copilot_code_review: NotRequired[pulumi.Input['RepositoryRulesetRulesCopilotCodeReviewArgsDict']]
4252
+ """
4253
+ (Block List, Max: 1) Automatically request Copilot code review for new pull requests if the author has access to Copilot code review and their premium requests quota has not reached the limit. (see below for nested schema)
4254
+ """
3995
4255
  creation: NotRequired[pulumi.Input[_builtins.bool]]
3996
4256
  """
3997
4257
  (Boolean) Only allow users with bypass permission to create matching refs.
@@ -4070,6 +4330,7 @@ class RepositoryRulesetRulesArgs:
4070
4330
  commit_author_email_pattern: Optional[pulumi.Input['RepositoryRulesetRulesCommitAuthorEmailPatternArgs']] = None,
4071
4331
  commit_message_pattern: Optional[pulumi.Input['RepositoryRulesetRulesCommitMessagePatternArgs']] = None,
4072
4332
  committer_email_pattern: Optional[pulumi.Input['RepositoryRulesetRulesCommitterEmailPatternArgs']] = None,
4333
+ copilot_code_review: Optional[pulumi.Input['RepositoryRulesetRulesCopilotCodeReviewArgs']] = None,
4073
4334
  creation: Optional[pulumi.Input[_builtins.bool]] = None,
4074
4335
  deletion: Optional[pulumi.Input[_builtins.bool]] = None,
4075
4336
  file_extension_restriction: Optional[pulumi.Input['RepositoryRulesetRulesFileExtensionRestrictionArgs']] = None,
@@ -4092,6 +4353,7 @@ class RepositoryRulesetRulesArgs:
4092
4353
  :param pulumi.Input['RepositoryRulesetRulesCommitAuthorEmailPatternArgs'] commit_author_email_pattern: (Block List, Max: 1) Parameters to be used for the commit_author_email_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
4093
4354
  :param pulumi.Input['RepositoryRulesetRulesCommitMessagePatternArgs'] commit_message_pattern: (Block List, Max: 1) Parameters to be used for the commit_message_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
4094
4355
  :param pulumi.Input['RepositoryRulesetRulesCommitterEmailPatternArgs'] committer_email_pattern: (Block List, Max: 1) Parameters to be used for the committer_email_pattern rule. This rule only applies to repositories within an enterprise, it cannot be applied to repositories owned by individuals or regular organizations. (see below for nested schema)
4356
+ :param pulumi.Input['RepositoryRulesetRulesCopilotCodeReviewArgs'] copilot_code_review: (Block List, Max: 1) Automatically request Copilot code review for new pull requests if the author has access to Copilot code review and their premium requests quota has not reached the limit. (see below for nested schema)
4095
4357
  :param pulumi.Input[_builtins.bool] creation: (Boolean) Only allow users with bypass permission to create matching refs.
4096
4358
  :param pulumi.Input[_builtins.bool] deletion: (Boolean) Only allow users with bypass permissions to delete matching refs.
4097
4359
  :param pulumi.Input['RepositoryRulesetRulesFileExtensionRestrictionArgs'] file_extension_restriction: (Block List, Max: 1) Prevent commits that include files with specified file extensions from being pushed to the commit graph. This rule only applies to rulesets with target `push`. (see below for nested schema)
@@ -4118,6 +4380,8 @@ class RepositoryRulesetRulesArgs:
4118
4380
  pulumi.set(__self__, "commit_message_pattern", commit_message_pattern)
4119
4381
  if committer_email_pattern is not None:
4120
4382
  pulumi.set(__self__, "committer_email_pattern", committer_email_pattern)
4383
+ if copilot_code_review is not None:
4384
+ pulumi.set(__self__, "copilot_code_review", copilot_code_review)
4121
4385
  if creation is not None:
4122
4386
  pulumi.set(__self__, "creation", creation)
4123
4387
  if deletion is not None:
@@ -4201,6 +4465,18 @@ class RepositoryRulesetRulesArgs:
4201
4465
  def committer_email_pattern(self, value: Optional[pulumi.Input['RepositoryRulesetRulesCommitterEmailPatternArgs']]):
4202
4466
  pulumi.set(self, "committer_email_pattern", value)
4203
4467
 
4468
+ @_builtins.property
4469
+ @pulumi.getter(name="copilotCodeReview")
4470
+ def copilot_code_review(self) -> Optional[pulumi.Input['RepositoryRulesetRulesCopilotCodeReviewArgs']]:
4471
+ """
4472
+ (Block List, Max: 1) Automatically request Copilot code review for new pull requests if the author has access to Copilot code review and their premium requests quota has not reached the limit. (see below for nested schema)
4473
+ """
4474
+ return pulumi.get(self, "copilot_code_review")
4475
+
4476
+ @copilot_code_review.setter
4477
+ def copilot_code_review(self, value: Optional[pulumi.Input['RepositoryRulesetRulesCopilotCodeReviewArgs']]):
4478
+ pulumi.set(self, "copilot_code_review", value)
4479
+
4204
4480
  @_builtins.property
4205
4481
  @pulumi.getter
4206
4482
  def creation(self) -> Optional[pulumi.Input[_builtins.bool]]:
@@ -4766,6 +5042,58 @@ class RepositoryRulesetRulesCommitterEmailPatternArgs:
4766
5042
  pulumi.set(self, "negate", value)
4767
5043
 
4768
5044
 
5045
+ if not MYPY:
5046
+ class RepositoryRulesetRulesCopilotCodeReviewArgsDict(TypedDict):
5047
+ review_draft_pull_requests: NotRequired[pulumi.Input[_builtins.bool]]
5048
+ """
5049
+ Copilot automatically reviews draft pull requests before they are marked as ready for review. Defaults to `false`.
5050
+ """
5051
+ review_on_push: NotRequired[pulumi.Input[_builtins.bool]]
5052
+ """
5053
+ Copilot automatically reviews each new push to the pull request. Defaults to `false`.
5054
+ """
5055
+ elif False:
5056
+ RepositoryRulesetRulesCopilotCodeReviewArgsDict: TypeAlias = Mapping[str, Any]
5057
+
5058
+ @pulumi.input_type
5059
+ class RepositoryRulesetRulesCopilotCodeReviewArgs:
5060
+ def __init__(__self__, *,
5061
+ review_draft_pull_requests: Optional[pulumi.Input[_builtins.bool]] = None,
5062
+ review_on_push: Optional[pulumi.Input[_builtins.bool]] = None):
5063
+ """
5064
+ :param pulumi.Input[_builtins.bool] review_draft_pull_requests: Copilot automatically reviews draft pull requests before they are marked as ready for review. Defaults to `false`.
5065
+ :param pulumi.Input[_builtins.bool] review_on_push: Copilot automatically reviews each new push to the pull request. Defaults to `false`.
5066
+ """
5067
+ if review_draft_pull_requests is not None:
5068
+ pulumi.set(__self__, "review_draft_pull_requests", review_draft_pull_requests)
5069
+ if review_on_push is not None:
5070
+ pulumi.set(__self__, "review_on_push", review_on_push)
5071
+
5072
+ @_builtins.property
5073
+ @pulumi.getter(name="reviewDraftPullRequests")
5074
+ def review_draft_pull_requests(self) -> Optional[pulumi.Input[_builtins.bool]]:
5075
+ """
5076
+ Copilot automatically reviews draft pull requests before they are marked as ready for review. Defaults to `false`.
5077
+ """
5078
+ return pulumi.get(self, "review_draft_pull_requests")
5079
+
5080
+ @review_draft_pull_requests.setter
5081
+ def review_draft_pull_requests(self, value: Optional[pulumi.Input[_builtins.bool]]):
5082
+ pulumi.set(self, "review_draft_pull_requests", value)
5083
+
5084
+ @_builtins.property
5085
+ @pulumi.getter(name="reviewOnPush")
5086
+ def review_on_push(self) -> Optional[pulumi.Input[_builtins.bool]]:
5087
+ """
5088
+ Copilot automatically reviews each new push to the pull request. Defaults to `false`.
5089
+ """
5090
+ return pulumi.get(self, "review_on_push")
5091
+
5092
+ @review_on_push.setter
5093
+ def review_on_push(self, value: Optional[pulumi.Input[_builtins.bool]]):
5094
+ pulumi.set(self, "review_on_push", value)
5095
+
5096
+
4769
5097
  if not MYPY:
4770
5098
  class RepositoryRulesetRulesFileExtensionRestrictionArgsDict(TypedDict):
4771
5099
  restricted_file_extensions: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
@@ -5044,6 +5372,10 @@ class RepositoryRulesetRulesMergeQueueArgs:
5044
5372
 
5045
5373
  if not MYPY:
5046
5374
  class RepositoryRulesetRulesPullRequestArgsDict(TypedDict):
5375
+ allowed_merge_methods: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
5376
+ """
5377
+ Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.
5378
+ """
5047
5379
  dismiss_stale_reviews_on_push: NotRequired[pulumi.Input[_builtins.bool]]
5048
5380
  """
5049
5381
  New, reviewable commits pushed will dismiss previous pull request review approvals. Defaults to `false`.
@@ -5064,24 +5396,34 @@ if not MYPY:
5064
5396
  """
5065
5397
  All conversations on code must be resolved before a pull request can be merged. Defaults to `false`.
5066
5398
  """
5399
+ required_reviewers: NotRequired[pulumi.Input[Sequence[pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerArgsDict']]]]
5400
+ """
5401
+ Require specific reviewers to approve pull requests targeting matching branches. Note: This feature is in beta and subject to change.
5402
+ """
5067
5403
  elif False:
5068
5404
  RepositoryRulesetRulesPullRequestArgsDict: TypeAlias = Mapping[str, Any]
5069
5405
 
5070
5406
  @pulumi.input_type
5071
5407
  class RepositoryRulesetRulesPullRequestArgs:
5072
5408
  def __init__(__self__, *,
5409
+ allowed_merge_methods: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
5073
5410
  dismiss_stale_reviews_on_push: Optional[pulumi.Input[_builtins.bool]] = None,
5074
5411
  require_code_owner_review: Optional[pulumi.Input[_builtins.bool]] = None,
5075
5412
  require_last_push_approval: Optional[pulumi.Input[_builtins.bool]] = None,
5076
5413
  required_approving_review_count: Optional[pulumi.Input[_builtins.int]] = None,
5077
- required_review_thread_resolution: Optional[pulumi.Input[_builtins.bool]] = None):
5414
+ required_review_thread_resolution: Optional[pulumi.Input[_builtins.bool]] = None,
5415
+ required_reviewers: Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerArgs']]]] = None):
5078
5416
  """
5417
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] allowed_merge_methods: Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.
5079
5418
  :param pulumi.Input[_builtins.bool] dismiss_stale_reviews_on_push: New, reviewable commits pushed will dismiss previous pull request review approvals. Defaults to `false`.
5080
5419
  :param pulumi.Input[_builtins.bool] require_code_owner_review: Require an approving review in pull requests that modify files that have a designated code owner. Defaults to `false`.
5081
5420
  :param pulumi.Input[_builtins.bool] require_last_push_approval: Whether the most recent reviewable push must be approved by someone other than the person who pushed it. Defaults to `false`.
5082
5421
  :param pulumi.Input[_builtins.int] required_approving_review_count: The number of approving reviews that are required before a pull request can be merged. Defaults to `0`.
5083
5422
  :param pulumi.Input[_builtins.bool] required_review_thread_resolution: All conversations on code must be resolved before a pull request can be merged. Defaults to `false`.
5423
+ :param pulumi.Input[Sequence[pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerArgs']]] required_reviewers: Require specific reviewers to approve pull requests targeting matching branches. Note: This feature is in beta and subject to change.
5084
5424
  """
5425
+ if allowed_merge_methods is not None:
5426
+ pulumi.set(__self__, "allowed_merge_methods", allowed_merge_methods)
5085
5427
  if dismiss_stale_reviews_on_push is not None:
5086
5428
  pulumi.set(__self__, "dismiss_stale_reviews_on_push", dismiss_stale_reviews_on_push)
5087
5429
  if require_code_owner_review is not None:
@@ -5092,6 +5434,20 @@ class RepositoryRulesetRulesPullRequestArgs:
5092
5434
  pulumi.set(__self__, "required_approving_review_count", required_approving_review_count)
5093
5435
  if required_review_thread_resolution is not None:
5094
5436
  pulumi.set(__self__, "required_review_thread_resolution", required_review_thread_resolution)
5437
+ if required_reviewers is not None:
5438
+ pulumi.set(__self__, "required_reviewers", required_reviewers)
5439
+
5440
+ @_builtins.property
5441
+ @pulumi.getter(name="allowedMergeMethods")
5442
+ def allowed_merge_methods(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
5443
+ """
5444
+ Array of allowed merge methods. Allowed values include `merge`, `squash`, and `rebase`. At least one option must be enabled.
5445
+ """
5446
+ return pulumi.get(self, "allowed_merge_methods")
5447
+
5448
+ @allowed_merge_methods.setter
5449
+ def allowed_merge_methods(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
5450
+ pulumi.set(self, "allowed_merge_methods", value)
5095
5451
 
5096
5452
  @_builtins.property
5097
5453
  @pulumi.getter(name="dismissStaleReviewsOnPush")
@@ -5153,6 +5509,137 @@ class RepositoryRulesetRulesPullRequestArgs:
5153
5509
  def required_review_thread_resolution(self, value: Optional[pulumi.Input[_builtins.bool]]):
5154
5510
  pulumi.set(self, "required_review_thread_resolution", value)
5155
5511
 
5512
+ @_builtins.property
5513
+ @pulumi.getter(name="requiredReviewers")
5514
+ def required_reviewers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerArgs']]]]:
5515
+ """
5516
+ Require specific reviewers to approve pull requests targeting matching branches. Note: This feature is in beta and subject to change.
5517
+ """
5518
+ return pulumi.get(self, "required_reviewers")
5519
+
5520
+ @required_reviewers.setter
5521
+ def required_reviewers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerArgs']]]]):
5522
+ pulumi.set(self, "required_reviewers", value)
5523
+
5524
+
5525
+ if not MYPY:
5526
+ class RepositoryRulesetRulesPullRequestRequiredReviewerArgsDict(TypedDict):
5527
+ file_patterns: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
5528
+ """
5529
+ File patterns (fnmatch syntax) that this reviewer must approve.
5530
+ """
5531
+ minimum_approvals: pulumi.Input[_builtins.int]
5532
+ """
5533
+ Minimum number of approvals required from this reviewer. Set to 0 to make approval optional.
5534
+ """
5535
+ reviewer: pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgsDict']
5536
+ """
5537
+ The reviewer that must review matching files.
5538
+ """
5539
+ elif False:
5540
+ RepositoryRulesetRulesPullRequestRequiredReviewerArgsDict: TypeAlias = Mapping[str, Any]
5541
+
5542
+ @pulumi.input_type
5543
+ class RepositoryRulesetRulesPullRequestRequiredReviewerArgs:
5544
+ def __init__(__self__, *,
5545
+ file_patterns: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
5546
+ minimum_approvals: pulumi.Input[_builtins.int],
5547
+ reviewer: pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgs']):
5548
+ """
5549
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] file_patterns: File patterns (fnmatch syntax) that this reviewer must approve.
5550
+ :param pulumi.Input[_builtins.int] minimum_approvals: Minimum number of approvals required from this reviewer. Set to 0 to make approval optional.
5551
+ :param pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgs'] reviewer: The reviewer that must review matching files.
5552
+ """
5553
+ pulumi.set(__self__, "file_patterns", file_patterns)
5554
+ pulumi.set(__self__, "minimum_approvals", minimum_approvals)
5555
+ pulumi.set(__self__, "reviewer", reviewer)
5556
+
5557
+ @_builtins.property
5558
+ @pulumi.getter(name="filePatterns")
5559
+ def file_patterns(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
5560
+ """
5561
+ File patterns (fnmatch syntax) that this reviewer must approve.
5562
+ """
5563
+ return pulumi.get(self, "file_patterns")
5564
+
5565
+ @file_patterns.setter
5566
+ def file_patterns(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
5567
+ pulumi.set(self, "file_patterns", value)
5568
+
5569
+ @_builtins.property
5570
+ @pulumi.getter(name="minimumApprovals")
5571
+ def minimum_approvals(self) -> pulumi.Input[_builtins.int]:
5572
+ """
5573
+ Minimum number of approvals required from this reviewer. Set to 0 to make approval optional.
5574
+ """
5575
+ return pulumi.get(self, "minimum_approvals")
5576
+
5577
+ @minimum_approvals.setter
5578
+ def minimum_approvals(self, value: pulumi.Input[_builtins.int]):
5579
+ pulumi.set(self, "minimum_approvals", value)
5580
+
5581
+ @_builtins.property
5582
+ @pulumi.getter
5583
+ def reviewer(self) -> pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgs']:
5584
+ """
5585
+ The reviewer that must review matching files.
5586
+ """
5587
+ return pulumi.get(self, "reviewer")
5588
+
5589
+ @reviewer.setter
5590
+ def reviewer(self, value: pulumi.Input['RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgs']):
5591
+ pulumi.set(self, "reviewer", value)
5592
+
5593
+
5594
+ if not MYPY:
5595
+ class RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgsDict(TypedDict):
5596
+ id: pulumi.Input[_builtins.int]
5597
+ """
5598
+ The ID of the reviewer that must review.
5599
+ """
5600
+ type: pulumi.Input[_builtins.str]
5601
+ """
5602
+ The type of reviewer. Currently only `Team` is supported.
5603
+ """
5604
+ elif False:
5605
+ RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgsDict: TypeAlias = Mapping[str, Any]
5606
+
5607
+ @pulumi.input_type
5608
+ class RepositoryRulesetRulesPullRequestRequiredReviewerReviewerArgs:
5609
+ def __init__(__self__, *,
5610
+ id: pulumi.Input[_builtins.int],
5611
+ type: pulumi.Input[_builtins.str]):
5612
+ """
5613
+ :param pulumi.Input[_builtins.int] id: The ID of the reviewer that must review.
5614
+ :param pulumi.Input[_builtins.str] type: The type of reviewer. Currently only `Team` is supported.
5615
+ """
5616
+ pulumi.set(__self__, "id", id)
5617
+ pulumi.set(__self__, "type", type)
5618
+
5619
+ @_builtins.property
5620
+ @pulumi.getter
5621
+ def id(self) -> pulumi.Input[_builtins.int]:
5622
+ """
5623
+ The ID of the reviewer that must review.
5624
+ """
5625
+ return pulumi.get(self, "id")
5626
+
5627
+ @id.setter
5628
+ def id(self, value: pulumi.Input[_builtins.int]):
5629
+ pulumi.set(self, "id", value)
5630
+
5631
+ @_builtins.property
5632
+ @pulumi.getter
5633
+ def type(self) -> pulumi.Input[_builtins.str]:
5634
+ """
5635
+ The type of reviewer. Currently only `Team` is supported.
5636
+ """
5637
+ return pulumi.get(self, "type")
5638
+
5639
+ @type.setter
5640
+ def type(self, value: pulumi.Input[_builtins.str]):
5641
+ pulumi.set(self, "type", value)
5642
+
5156
5643
 
5157
5644
  if not MYPY:
5158
5645
  class RepositoryRulesetRulesRequiredCodeScanningArgsDict(TypedDict):
@@ -5726,7 +6213,7 @@ if not MYPY:
5726
6213
  class RepositorySecurityAndAnalysisSecretScanningAiDetectionArgsDict(TypedDict):
5727
6214
  status: pulumi.Input[_builtins.str]
5728
6215
  """
5729
- The GitHub Pages site's build status e.g. `building` or `built`.
6216
+ Set to `enabled` to enable secret scanning AI detection on the repository. Can be `enabled` or `disabled`. If set to `enabled`, the repository's visibility must be `public`, `security_and_analysis[0].advanced_security[0].status` must also be set to `enabled`, or your Organization must have split licensing for Advanced security.
5730
6217
  """
5731
6218
  elif False:
5732
6219
  RepositorySecurityAndAnalysisSecretScanningAiDetectionArgsDict: TypeAlias = Mapping[str, Any]
@@ -5736,7 +6223,7 @@ class RepositorySecurityAndAnalysisSecretScanningAiDetectionArgs:
5736
6223
  def __init__(__self__, *,
5737
6224
  status: pulumi.Input[_builtins.str]):
5738
6225
  """
5739
- :param pulumi.Input[_builtins.str] status: The GitHub Pages site's build status e.g. `building` or `built`.
6226
+ :param pulumi.Input[_builtins.str] status: Set to `enabled` to enable secret scanning AI detection on the repository. Can be `enabled` or `disabled`. If set to `enabled`, the repository's visibility must be `public`, `security_and_analysis[0].advanced_security[0].status` must also be set to `enabled`, or your Organization must have split licensing for Advanced security.
5740
6227
  """
5741
6228
  pulumi.set(__self__, "status", status)
5742
6229
 
@@ -5744,7 +6231,7 @@ class RepositorySecurityAndAnalysisSecretScanningAiDetectionArgs:
5744
6231
  @pulumi.getter
5745
6232
  def status(self) -> pulumi.Input[_builtins.str]:
5746
6233
  """
5747
- The GitHub Pages site's build status e.g. `building` or `built`.
6234
+ Set to `enabled` to enable secret scanning AI detection on the repository. Can be `enabled` or `disabled`. If set to `enabled`, the repository's visibility must be `public`, `security_and_analysis[0].advanced_security[0].status` must also be set to `enabled`, or your Organization must have split licensing for Advanced security.
5748
6235
  """
5749
6236
  return pulumi.get(self, "status")
5750
6237
 
@@ -5828,6 +6315,8 @@ if not MYPY:
5828
6315
  include_all_branches: NotRequired[pulumi.Input[_builtins.bool]]
5829
6316
  """
5830
6317
  Whether the new repository should include all the branches from the template repository (defaults to false, which includes only the default branch from the template).
6318
+
6319
+ > **Note on `internal` visibility with templates**: When creating a repository from a template with `visibility = "internal"`, the provider uses a two-step process due to GitHub API limitations. The template creation API only supports a `private` boolean parameter. Therefore, repositories with `visibility = "internal"` are initially created as private and then immediately updated to internal visibility. This ensures internal repositories are never exposed publicly during creation.
5831
6320
  """
5832
6321
  elif False:
5833
6322
  RepositoryTemplateArgsDict: TypeAlias = Mapping[str, Any]
@@ -5842,6 +6331,8 @@ class RepositoryTemplateArgs:
5842
6331
  :param pulumi.Input[_builtins.str] owner: The GitHub organization or user the template repository is owned by.
5843
6332
  :param pulumi.Input[_builtins.str] repository: The name of the template repository.
5844
6333
  :param pulumi.Input[_builtins.bool] include_all_branches: Whether the new repository should include all the branches from the template repository (defaults to false, which includes only the default branch from the template).
6334
+
6335
+ > **Note on `internal` visibility with templates**: When creating a repository from a template with `visibility = "internal"`, the provider uses a two-step process due to GitHub API limitations. The template creation API only supports a `private` boolean parameter. Therefore, repositories with `visibility = "internal"` are initially created as private and then immediately updated to internal visibility. This ensures internal repositories are never exposed publicly during creation.
5845
6336
  """
5846
6337
  pulumi.set(__self__, "owner", owner)
5847
6338
  pulumi.set(__self__, "repository", repository)
@@ -5877,6 +6368,8 @@ class RepositoryTemplateArgs:
5877
6368
  def include_all_branches(self) -> Optional[pulumi.Input[_builtins.bool]]:
5878
6369
  """
5879
6370
  Whether the new repository should include all the branches from the template repository (defaults to false, which includes only the default branch from the template).
6371
+
6372
+ > **Note on `internal` visibility with templates**: When creating a repository from a template with `visibility = "internal"`, the provider uses a two-step process due to GitHub API limitations. The template creation API only supports a `private` boolean parameter. Therefore, repositories with `visibility = "internal"` are initially created as private and then immediately updated to internal visibility. This ensures internal repositories are never exposed publicly during creation.
5880
6373
  """
5881
6374
  return pulumi.get(self, "include_all_branches")
5882
6375