Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 56e65268d7 |
@@ -28,16 +28,23 @@ type OrgProtectedBranch struct {
|
|||||||
CanPush bool `xorm:"NOT NULL DEFAULT false"`
|
CanPush bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
EnableWhitelist bool `xorm:"NOT NULL DEFAULT false"`
|
EnableWhitelist bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
WhitelistTeamIDs []int64 `xorm:"JSON TEXT"`
|
WhitelistTeamIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
WhitelistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
WhitelistActionsUser bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
EnableMergeWhitelist bool `xorm:"NOT NULL DEFAULT false"`
|
EnableMergeWhitelist bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
MergeWhitelistTeamIDs []int64 `xorm:"JSON TEXT"`
|
MergeWhitelistTeamIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
MergeWhitelistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
MergeWhitelistActionsUser bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
CanForcePush bool `xorm:"NOT NULL DEFAULT false"`
|
CanForcePush bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
EnableForcePushAllowlist bool `xorm:"NOT NULL DEFAULT false"`
|
EnableForcePushAllowlist bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
ForcePushAllowlistTeamIDs []int64 `xorm:"JSON TEXT"`
|
ForcePushAllowlistTeamIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
ForcePushAllowlistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
ForcePushAllowlistActionsUser bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
EnableStatusCheck bool `xorm:"NOT NULL DEFAULT false"`
|
EnableStatusCheck bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
StatusCheckContexts []string `xorm:"JSON TEXT"`
|
StatusCheckContexts []string `xorm:"JSON TEXT"`
|
||||||
RequiredApprovals int64 `xorm:"NOT NULL DEFAULT 0"`
|
RequiredApprovals int64 `xorm:"NOT NULL DEFAULT 0"`
|
||||||
EnableApprovalsWhitelist bool `xorm:"NOT NULL DEFAULT false"`
|
EnableApprovalsWhitelist bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
ApprovalsWhitelistTeamIDs []int64 `xorm:"JSON TEXT"`
|
ApprovalsWhitelistTeamIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
ApprovalsWhitelistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
BlockOnRejectedReviews bool `xorm:"NOT NULL DEFAULT false"`
|
BlockOnRejectedReviews bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
BlockOnOfficialReviewRequests bool `xorm:"NOT NULL DEFAULT false"`
|
BlockOnOfficialReviewRequests bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
BlockOnOutdatedBranch bool `xorm:"NOT NULL DEFAULT false"`
|
BlockOnOutdatedBranch bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
@@ -81,8 +88,10 @@ func (o *OrgProtectedBranch) Match(branchName string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ToProtectedBranch converts an org-level rule to a ProtectedBranch for use
|
// ToProtectedBranch converts an org-level rule to a ProtectedBranch for use
|
||||||
// in the standard enforcement path. Fields that are user-scoped (WhitelistUserIDs etc.)
|
// in the standard enforcement path. Both team-scoped and user-scoped allowlists
|
||||||
// are left empty because org rules only reference teams.
|
// (plus the "allow the actions bot" toggles) are carried over so org rules can
|
||||||
|
// grant push/merge/force-push/approval access to individual users and the actions
|
||||||
|
// bot, in addition to teams.
|
||||||
func (o *OrgProtectedBranch) ToProtectedBranch() *ProtectedBranch {
|
func (o *OrgProtectedBranch) ToProtectedBranch() *ProtectedBranch {
|
||||||
return &ProtectedBranch{
|
return &ProtectedBranch{
|
||||||
ID: o.ID,
|
ID: o.ID,
|
||||||
@@ -91,16 +100,23 @@ func (o *OrgProtectedBranch) ToProtectedBranch() *ProtectedBranch {
|
|||||||
CanPush: o.CanPush,
|
CanPush: o.CanPush,
|
||||||
EnableWhitelist: o.EnableWhitelist,
|
EnableWhitelist: o.EnableWhitelist,
|
||||||
WhitelistTeamIDs: o.WhitelistTeamIDs,
|
WhitelistTeamIDs: o.WhitelistTeamIDs,
|
||||||
|
WhitelistUserIDs: o.WhitelistUserIDs,
|
||||||
|
WhitelistActionsUser: o.WhitelistActionsUser,
|
||||||
EnableMergeWhitelist: o.EnableMergeWhitelist,
|
EnableMergeWhitelist: o.EnableMergeWhitelist,
|
||||||
MergeWhitelistTeamIDs: o.MergeWhitelistTeamIDs,
|
MergeWhitelistTeamIDs: o.MergeWhitelistTeamIDs,
|
||||||
|
MergeWhitelistUserIDs: o.MergeWhitelistUserIDs,
|
||||||
|
MergeWhitelistActionsUser: o.MergeWhitelistActionsUser,
|
||||||
CanForcePush: o.CanForcePush,
|
CanForcePush: o.CanForcePush,
|
||||||
EnableForcePushAllowlist: o.EnableForcePushAllowlist,
|
EnableForcePushAllowlist: o.EnableForcePushAllowlist,
|
||||||
ForcePushAllowlistTeamIDs: o.ForcePushAllowlistTeamIDs,
|
ForcePushAllowlistTeamIDs: o.ForcePushAllowlistTeamIDs,
|
||||||
|
ForcePushAllowlistUserIDs: o.ForcePushAllowlistUserIDs,
|
||||||
|
ForcePushAllowlistActionsUser: o.ForcePushAllowlistActionsUser,
|
||||||
EnableStatusCheck: o.EnableStatusCheck,
|
EnableStatusCheck: o.EnableStatusCheck,
|
||||||
StatusCheckContexts: o.StatusCheckContexts,
|
StatusCheckContexts: o.StatusCheckContexts,
|
||||||
RequiredApprovals: o.RequiredApprovals,
|
RequiredApprovals: o.RequiredApprovals,
|
||||||
EnableApprovalsWhitelist: o.EnableApprovalsWhitelist,
|
EnableApprovalsWhitelist: o.EnableApprovalsWhitelist,
|
||||||
ApprovalsWhitelistTeamIDs: o.ApprovalsWhitelistTeamIDs,
|
ApprovalsWhitelistTeamIDs: o.ApprovalsWhitelistTeamIDs,
|
||||||
|
ApprovalsWhitelistUserIDs: o.ApprovalsWhitelistUserIDs,
|
||||||
BlockOnRejectedReviews: o.BlockOnRejectedReviews,
|
BlockOnRejectedReviews: o.BlockOnRejectedReviews,
|
||||||
BlockOnOfficialReviewRequests: o.BlockOnOfficialReviewRequests,
|
BlockOnOfficialReviewRequests: o.BlockOnOfficialReviewRequests,
|
||||||
BlockOnOutdatedBranch: o.BlockOnOutdatedBranch,
|
BlockOnOutdatedBranch: o.BlockOnOutdatedBranch,
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
// Copyright 2026 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package git
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TestOrgProtectedBranchToProtectedBranch verifies that the org-level rule carries
|
||||||
|
// its team allowlists, user allowlists and actions-user toggles across to the
|
||||||
|
// standard ProtectedBranch used by the enforcement path.
|
||||||
|
func TestOrgProtectedBranchToProtectedBranch(t *testing.T) {
|
||||||
|
org := &OrgProtectedBranch{
|
||||||
|
ID: 7,
|
||||||
|
RuleName: "main",
|
||||||
|
Priority: 3,
|
||||||
|
|
||||||
|
CanPush: true,
|
||||||
|
EnableWhitelist: true,
|
||||||
|
WhitelistTeamIDs: []int64{1, 2},
|
||||||
|
WhitelistUserIDs: []int64{10, 11},
|
||||||
|
WhitelistActionsUser: true,
|
||||||
|
|
||||||
|
EnableMergeWhitelist: true,
|
||||||
|
MergeWhitelistTeamIDs: []int64{3},
|
||||||
|
MergeWhitelistUserIDs: []int64{12},
|
||||||
|
MergeWhitelistActionsUser: true,
|
||||||
|
|
||||||
|
CanForcePush: true,
|
||||||
|
EnableForcePushAllowlist: true,
|
||||||
|
ForcePushAllowlistTeamIDs: []int64{4},
|
||||||
|
ForcePushAllowlistUserIDs: []int64{13, 14},
|
||||||
|
ForcePushAllowlistActionsUser: true,
|
||||||
|
|
||||||
|
RequiredApprovals: 2,
|
||||||
|
EnableApprovalsWhitelist: true,
|
||||||
|
ApprovalsWhitelistTeamIDs: []int64{5},
|
||||||
|
ApprovalsWhitelistUserIDs: []int64{15},
|
||||||
|
}
|
||||||
|
|
||||||
|
pb := org.ToProtectedBranch()
|
||||||
|
|
||||||
|
// Push allowlist
|
||||||
|
assert.Equal(t, []int64{1, 2}, pb.WhitelistTeamIDs)
|
||||||
|
assert.Equal(t, []int64{10, 11}, pb.WhitelistUserIDs)
|
||||||
|
assert.True(t, pb.WhitelistActionsUser)
|
||||||
|
|
||||||
|
// Merge allowlist
|
||||||
|
assert.Equal(t, []int64{3}, pb.MergeWhitelistTeamIDs)
|
||||||
|
assert.Equal(t, []int64{12}, pb.MergeWhitelistUserIDs)
|
||||||
|
assert.True(t, pb.MergeWhitelistActionsUser)
|
||||||
|
|
||||||
|
// Force-push allowlist
|
||||||
|
assert.Equal(t, []int64{4}, pb.ForcePushAllowlistTeamIDs)
|
||||||
|
assert.Equal(t, []int64{13, 14}, pb.ForcePushAllowlistUserIDs)
|
||||||
|
assert.True(t, pb.ForcePushAllowlistActionsUser)
|
||||||
|
|
||||||
|
// Approvals allowlist (no actions-user at the approval stage, matching repo-level)
|
||||||
|
assert.Equal(t, []int64{5}, pb.ApprovalsWhitelistTeamIDs)
|
||||||
|
assert.Equal(t, []int64{15}, pb.ApprovalsWhitelistUserIDs)
|
||||||
|
|
||||||
|
// Sanity: identity fields propagate
|
||||||
|
assert.Equal(t, int64(7), pb.ID)
|
||||||
|
assert.Equal(t, "main", pb.RuleName)
|
||||||
|
assert.Equal(t, int64(3), pb.Priority)
|
||||||
|
assert.EqualValues(t, 2, pb.RequiredApprovals)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestOrgProtectedBranchToProtectedBranchEmpty verifies that when the org rule does
|
||||||
|
// not grant actions-user access, the toggles remain false (opt-in semantics).
|
||||||
|
func TestOrgProtectedBranchToProtectedBranchEmpty(t *testing.T) {
|
||||||
|
pb := (&OrgProtectedBranch{RuleName: "release/*"}).ToProtectedBranch()
|
||||||
|
|
||||||
|
assert.False(t, pb.WhitelistActionsUser)
|
||||||
|
assert.False(t, pb.MergeWhitelistActionsUser)
|
||||||
|
assert.False(t, pb.ForcePushAllowlistActionsUser)
|
||||||
|
assert.Nil(t, pb.WhitelistUserIDs)
|
||||||
|
assert.Nil(t, pb.MergeWhitelistUserIDs)
|
||||||
|
assert.Nil(t, pb.ForcePushAllowlistUserIDs)
|
||||||
|
assert.Nil(t, pb.ApprovalsWhitelistUserIDs)
|
||||||
|
}
|
||||||
@@ -439,6 +439,7 @@ func prepareMigrationTasks() []*migration {
|
|||||||
newMigration(359, "Add deploy fields to repo manifest", v1_27.AddDeployFieldsToRepoManifest),
|
newMigration(359, "Add deploy fields to repo manifest", v1_27.AddDeployFieldsToRepoManifest),
|
||||||
newMigration(360, "Add delete allowlist to protected branch", v1_27.AddDeleteAllowlistToProtectedBranch),
|
newMigration(360, "Add delete allowlist to protected branch", v1_27.AddDeleteAllowlistToProtectedBranch),
|
||||||
newMigration(361, "Add cascade merge rule table", v1_27.AddCascadeMergeRuleTable),
|
newMigration(361, "Add cascade merge rule table", v1_27.AddCascadeMergeRuleTable),
|
||||||
|
newMigration(362, "Add user allowlists and actions-user toggles to org protected branch", v1_27.AddUserAllowlistsToOrgProtectedBranch),
|
||||||
}
|
}
|
||||||
return preparedMigrations
|
return preparedMigrations
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
// Copyright 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
package v1_27
|
||||||
|
|
||||||
|
import (
|
||||||
|
"xorm.io/xorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AddUserAllowlistsToOrgProtectedBranch adds per-user allowlists (by user ID) and
|
||||||
|
// "allow the actions bot" toggles to org-level branch protection rules, alongside
|
||||||
|
// the existing team-only allowlists. Additive columns only.
|
||||||
|
func AddUserAllowlistsToOrgProtectedBranch(x *xorm.Engine) error {
|
||||||
|
type OrgProtectedBranch struct {
|
||||||
|
WhitelistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
WhitelistActionsUser bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
|
MergeWhitelistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
MergeWhitelistActionsUser bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
|
ForcePushAllowlistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
ForcePushAllowlistActionsUser bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
|
ApprovalsWhitelistUserIDs []int64 `xorm:"JSON TEXT"`
|
||||||
|
}
|
||||||
|
return x.Sync(new(OrgProtectedBranch))
|
||||||
|
}
|
||||||
@@ -14,16 +14,23 @@ type OrgBranchProtection struct {
|
|||||||
EnablePush bool `json:"enable_push"`
|
EnablePush bool `json:"enable_push"`
|
||||||
EnablePushWhitelist bool `json:"enable_push_whitelist"`
|
EnablePushWhitelist bool `json:"enable_push_whitelist"`
|
||||||
PushWhitelistTeams []string `json:"push_whitelist_teams"`
|
PushWhitelistTeams []string `json:"push_whitelist_teams"`
|
||||||
|
PushWhitelistUsernames []string `json:"push_whitelist_usernames"`
|
||||||
|
PushWhitelistActionsUser bool `json:"push_whitelist_actions_user"`
|
||||||
EnableForcePush bool `json:"enable_force_push"`
|
EnableForcePush bool `json:"enable_force_push"`
|
||||||
EnableForcePushAllowlist bool `json:"enable_force_push_allowlist"`
|
EnableForcePushAllowlist bool `json:"enable_force_push_allowlist"`
|
||||||
ForcePushAllowlistTeams []string `json:"force_push_allowlist_teams"`
|
ForcePushAllowlistTeams []string `json:"force_push_allowlist_teams"`
|
||||||
|
ForcePushAllowlistUsernames []string `json:"force_push_allowlist_usernames"`
|
||||||
|
ForcePushAllowlistActionsUser bool `json:"force_push_allowlist_actions_user"`
|
||||||
EnableMergeWhitelist bool `json:"enable_merge_whitelist"`
|
EnableMergeWhitelist bool `json:"enable_merge_whitelist"`
|
||||||
MergeWhitelistTeams []string `json:"merge_whitelist_teams"`
|
MergeWhitelistTeams []string `json:"merge_whitelist_teams"`
|
||||||
|
MergeWhitelistUsernames []string `json:"merge_whitelist_usernames"`
|
||||||
|
MergeWhitelistActionsUser bool `json:"merge_whitelist_actions_user"`
|
||||||
EnableStatusCheck bool `json:"enable_status_check"`
|
EnableStatusCheck bool `json:"enable_status_check"`
|
||||||
StatusCheckContexts []string `json:"status_check_contexts"`
|
StatusCheckContexts []string `json:"status_check_contexts"`
|
||||||
RequiredApprovals int64 `json:"required_approvals"`
|
RequiredApprovals int64 `json:"required_approvals"`
|
||||||
EnableApprovalsWhitelist bool `json:"enable_approvals_whitelist"`
|
EnableApprovalsWhitelist bool `json:"enable_approvals_whitelist"`
|
||||||
ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"`
|
ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"`
|
||||||
|
ApprovalsWhitelistUsernames []string `json:"approvals_whitelist_username"`
|
||||||
BlockOnRejectedReviews bool `json:"block_on_rejected_reviews"`
|
BlockOnRejectedReviews bool `json:"block_on_rejected_reviews"`
|
||||||
BlockOnOfficialReviewRequests bool `json:"block_on_official_review_requests"`
|
BlockOnOfficialReviewRequests bool `json:"block_on_official_review_requests"`
|
||||||
BlockOnOutdatedBranch bool `json:"block_on_outdated_branch"`
|
BlockOnOutdatedBranch bool `json:"block_on_outdated_branch"`
|
||||||
@@ -46,16 +53,23 @@ type CreateOrgBranchProtectionOption struct {
|
|||||||
EnablePush bool `json:"enable_push"`
|
EnablePush bool `json:"enable_push"`
|
||||||
EnablePushWhitelist bool `json:"enable_push_whitelist"`
|
EnablePushWhitelist bool `json:"enable_push_whitelist"`
|
||||||
PushWhitelistTeams []string `json:"push_whitelist_teams"`
|
PushWhitelistTeams []string `json:"push_whitelist_teams"`
|
||||||
|
PushWhitelistUsernames []string `json:"push_whitelist_usernames"`
|
||||||
|
PushWhitelistActionsUser bool `json:"push_whitelist_actions_user"`
|
||||||
EnableForcePush bool `json:"enable_force_push"`
|
EnableForcePush bool `json:"enable_force_push"`
|
||||||
EnableForcePushAllowlist bool `json:"enable_force_push_allowlist"`
|
EnableForcePushAllowlist bool `json:"enable_force_push_allowlist"`
|
||||||
ForcePushAllowlistTeams []string `json:"force_push_allowlist_teams"`
|
ForcePushAllowlistTeams []string `json:"force_push_allowlist_teams"`
|
||||||
|
ForcePushAllowlistUsernames []string `json:"force_push_allowlist_usernames"`
|
||||||
|
ForcePushAllowlistActionsUser bool `json:"force_push_allowlist_actions_user"`
|
||||||
EnableMergeWhitelist bool `json:"enable_merge_whitelist"`
|
EnableMergeWhitelist bool `json:"enable_merge_whitelist"`
|
||||||
MergeWhitelistTeams []string `json:"merge_whitelist_teams"`
|
MergeWhitelistTeams []string `json:"merge_whitelist_teams"`
|
||||||
|
MergeWhitelistUsernames []string `json:"merge_whitelist_usernames"`
|
||||||
|
MergeWhitelistActionsUser bool `json:"merge_whitelist_actions_user"`
|
||||||
EnableStatusCheck bool `json:"enable_status_check"`
|
EnableStatusCheck bool `json:"enable_status_check"`
|
||||||
StatusCheckContexts []string `json:"status_check_contexts"`
|
StatusCheckContexts []string `json:"status_check_contexts"`
|
||||||
RequiredApprovals int64 `json:"required_approvals"`
|
RequiredApprovals int64 `json:"required_approvals"`
|
||||||
EnableApprovalsWhitelist bool `json:"enable_approvals_whitelist"`
|
EnableApprovalsWhitelist bool `json:"enable_approvals_whitelist"`
|
||||||
ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"`
|
ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"`
|
||||||
|
ApprovalsWhitelistUsernames []string `json:"approvals_whitelist_username"`
|
||||||
BlockOnRejectedReviews bool `json:"block_on_rejected_reviews"`
|
BlockOnRejectedReviews bool `json:"block_on_rejected_reviews"`
|
||||||
BlockOnOfficialReviewRequests bool `json:"block_on_official_review_requests"`
|
BlockOnOfficialReviewRequests bool `json:"block_on_official_review_requests"`
|
||||||
BlockOnOutdatedBranch bool `json:"block_on_outdated_branch"`
|
BlockOnOutdatedBranch bool `json:"block_on_outdated_branch"`
|
||||||
@@ -73,16 +87,23 @@ type EditOrgBranchProtectionOption struct {
|
|||||||
EnablePush *bool `json:"enable_push"`
|
EnablePush *bool `json:"enable_push"`
|
||||||
EnablePushWhitelist *bool `json:"enable_push_whitelist"`
|
EnablePushWhitelist *bool `json:"enable_push_whitelist"`
|
||||||
PushWhitelistTeams []string `json:"push_whitelist_teams"`
|
PushWhitelistTeams []string `json:"push_whitelist_teams"`
|
||||||
|
PushWhitelistUsernames []string `json:"push_whitelist_usernames"`
|
||||||
|
PushWhitelistActionsUser *bool `json:"push_whitelist_actions_user"`
|
||||||
EnableForcePush *bool `json:"enable_force_push"`
|
EnableForcePush *bool `json:"enable_force_push"`
|
||||||
EnableForcePushAllowlist *bool `json:"enable_force_push_allowlist"`
|
EnableForcePushAllowlist *bool `json:"enable_force_push_allowlist"`
|
||||||
ForcePushAllowlistTeams []string `json:"force_push_allowlist_teams"`
|
ForcePushAllowlistTeams []string `json:"force_push_allowlist_teams"`
|
||||||
|
ForcePushAllowlistUsernames []string `json:"force_push_allowlist_usernames"`
|
||||||
|
ForcePushAllowlistActionsUser *bool `json:"force_push_allowlist_actions_user"`
|
||||||
EnableMergeWhitelist *bool `json:"enable_merge_whitelist"`
|
EnableMergeWhitelist *bool `json:"enable_merge_whitelist"`
|
||||||
MergeWhitelistTeams []string `json:"merge_whitelist_teams"`
|
MergeWhitelistTeams []string `json:"merge_whitelist_teams"`
|
||||||
|
MergeWhitelistUsernames []string `json:"merge_whitelist_usernames"`
|
||||||
|
MergeWhitelistActionsUser *bool `json:"merge_whitelist_actions_user"`
|
||||||
EnableStatusCheck *bool `json:"enable_status_check"`
|
EnableStatusCheck *bool `json:"enable_status_check"`
|
||||||
StatusCheckContexts []string `json:"status_check_contexts"`
|
StatusCheckContexts []string `json:"status_check_contexts"`
|
||||||
RequiredApprovals *int64 `json:"required_approvals"`
|
RequiredApprovals *int64 `json:"required_approvals"`
|
||||||
EnableApprovalsWhitelist *bool `json:"enable_approvals_whitelist"`
|
EnableApprovalsWhitelist *bool `json:"enable_approvals_whitelist"`
|
||||||
ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"`
|
ApprovalsWhitelistTeams []string `json:"approvals_whitelist_teams"`
|
||||||
|
ApprovalsWhitelistUsernames []string `json:"approvals_whitelist_username"`
|
||||||
BlockOnRejectedReviews *bool `json:"block_on_rejected_reviews"`
|
BlockOnRejectedReviews *bool `json:"block_on_rejected_reviews"`
|
||||||
BlockOnOfficialReviewRequests *bool `json:"block_on_official_review_requests"`
|
BlockOnOfficialReviewRequests *bool `json:"block_on_official_review_requests"`
|
||||||
BlockOnOutdatedBranch *bool `json:"block_on_outdated_branch"`
|
BlockOnOutdatedBranch *bool `json:"block_on_outdated_branch"`
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
git_model "code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/git"
|
git_model "code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/git"
|
||||||
"code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/organization"
|
"code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/organization"
|
||||||
|
user_model "code.mokoconsulting.tech/MokoConsulting/MokoGitea/models/user"
|
||||||
api "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
api "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
"code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/web"
|
"code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/web"
|
||||||
"code.mokoconsulting.tech/MokoConsulting/MokoGitea/services/context"
|
"code.mokoconsulting.tech/MokoConsulting/MokoGitea/services/context"
|
||||||
@@ -36,6 +37,18 @@ func toAPIOrgBranchProtection(ctx *context.APIContext, rule *git_model.OrgProtec
|
|||||||
return names
|
return names
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolveUserNames := func(ids []int64) []string {
|
||||||
|
names := make([]string, 0, len(ids))
|
||||||
|
for _, id := range ids {
|
||||||
|
u, err := user_model.GetUserByID(ctx, id)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
names = append(names, u.Name)
|
||||||
|
}
|
||||||
|
return names
|
||||||
|
}
|
||||||
|
|
||||||
return &api.OrgBranchProtection{
|
return &api.OrgBranchProtection{
|
||||||
ID: rule.ID,
|
ID: rule.ID,
|
||||||
OrgID: rule.OrgID,
|
OrgID: rule.OrgID,
|
||||||
@@ -44,16 +57,23 @@ func toAPIOrgBranchProtection(ctx *context.APIContext, rule *git_model.OrgProtec
|
|||||||
EnablePush: rule.CanPush,
|
EnablePush: rule.CanPush,
|
||||||
EnablePushWhitelist: rule.EnableWhitelist,
|
EnablePushWhitelist: rule.EnableWhitelist,
|
||||||
PushWhitelistTeams: resolveTeamNames(rule.WhitelistTeamIDs),
|
PushWhitelistTeams: resolveTeamNames(rule.WhitelistTeamIDs),
|
||||||
|
PushWhitelistUsernames: resolveUserNames(rule.WhitelistUserIDs),
|
||||||
|
PushWhitelistActionsUser: rule.WhitelistActionsUser,
|
||||||
EnableForcePush: rule.CanForcePush,
|
EnableForcePush: rule.CanForcePush,
|
||||||
EnableForcePushAllowlist: rule.EnableForcePushAllowlist,
|
EnableForcePushAllowlist: rule.EnableForcePushAllowlist,
|
||||||
ForcePushAllowlistTeams: resolveTeamNames(rule.ForcePushAllowlistTeamIDs),
|
ForcePushAllowlistTeams: resolveTeamNames(rule.ForcePushAllowlistTeamIDs),
|
||||||
|
ForcePushAllowlistUsernames: resolveUserNames(rule.ForcePushAllowlistUserIDs),
|
||||||
|
ForcePushAllowlistActionsUser: rule.ForcePushAllowlistActionsUser,
|
||||||
EnableMergeWhitelist: rule.EnableMergeWhitelist,
|
EnableMergeWhitelist: rule.EnableMergeWhitelist,
|
||||||
MergeWhitelistTeams: resolveTeamNames(rule.MergeWhitelistTeamIDs),
|
MergeWhitelistTeams: resolveTeamNames(rule.MergeWhitelistTeamIDs),
|
||||||
|
MergeWhitelistUsernames: resolveUserNames(rule.MergeWhitelistUserIDs),
|
||||||
|
MergeWhitelistActionsUser: rule.MergeWhitelistActionsUser,
|
||||||
EnableStatusCheck: rule.EnableStatusCheck,
|
EnableStatusCheck: rule.EnableStatusCheck,
|
||||||
StatusCheckContexts: rule.StatusCheckContexts,
|
StatusCheckContexts: rule.StatusCheckContexts,
|
||||||
RequiredApprovals: rule.RequiredApprovals,
|
RequiredApprovals: rule.RequiredApprovals,
|
||||||
EnableApprovalsWhitelist: rule.EnableApprovalsWhitelist,
|
EnableApprovalsWhitelist: rule.EnableApprovalsWhitelist,
|
||||||
ApprovalsWhitelistTeams: resolveTeamNames(rule.ApprovalsWhitelistTeamIDs),
|
ApprovalsWhitelistTeams: resolveTeamNames(rule.ApprovalsWhitelistTeamIDs),
|
||||||
|
ApprovalsWhitelistUsernames: resolveUserNames(rule.ApprovalsWhitelistUserIDs),
|
||||||
BlockOnRejectedReviews: rule.BlockOnRejectedReviews,
|
BlockOnRejectedReviews: rule.BlockOnRejectedReviews,
|
||||||
BlockOnOfficialReviewRequests: rule.BlockOnOfficialReviewRequests,
|
BlockOnOfficialReviewRequests: rule.BlockOnOfficialReviewRequests,
|
||||||
BlockOnOutdatedBranch: rule.BlockOnOutdatedBranch,
|
BlockOnOutdatedBranch: rule.BlockOnOutdatedBranch,
|
||||||
@@ -85,6 +105,45 @@ func resolveTeamIDs(ctx *context.APIContext, orgID int64, names []string) ([]int
|
|||||||
return ids, true
|
return ids, true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// resolveUserIDs converts a list of usernames or emails to user IDs, returning 422
|
||||||
|
// on any entry that matches no user. Each entry is first looked up by username and,
|
||||||
|
// if that user does not exist, by email address. Empty entries are ignored and the
|
||||||
|
// resulting IDs are deduplicated.
|
||||||
|
func resolveUserIDs(ctx *context.APIContext, names []string) ([]int64, bool) {
|
||||||
|
if len(names) == 0 {
|
||||||
|
return nil, true
|
||||||
|
}
|
||||||
|
seen := make(map[int64]struct{}, len(names))
|
||||||
|
ids := make([]int64, 0, len(names))
|
||||||
|
for _, name := range names {
|
||||||
|
if name == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
u, err := user_model.GetUserByName(ctx, name)
|
||||||
|
if err != nil {
|
||||||
|
if !user_model.IsErrUserNotExist(err) {
|
||||||
|
ctx.APIErrorInternal(err)
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
u, err = user_model.GetUserByEmail(ctx, name)
|
||||||
|
if err != nil {
|
||||||
|
if user_model.IsErrUserNotExist(err) {
|
||||||
|
ctx.APIError(http.StatusUnprocessableEntity, "user does not exist: "+name)
|
||||||
|
} else {
|
||||||
|
ctx.APIErrorInternal(err)
|
||||||
|
}
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if _, ok := seen[u.ID]; ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
seen[u.ID] = struct{}{}
|
||||||
|
ids = append(ids, u.ID)
|
||||||
|
}
|
||||||
|
return ids, true
|
||||||
|
}
|
||||||
|
|
||||||
// ListOrgBranchProtections list org-level branch protection rules
|
// ListOrgBranchProtections list org-level branch protection rules
|
||||||
func ListOrgBranchProtections(ctx *context.APIContext) {
|
func ListOrgBranchProtections(ctx *context.APIContext) {
|
||||||
// swagger:operation GET /orgs/{org}/branch_protections organization orgListBranchProtections
|
// swagger:operation GET /orgs/{org}/branch_protections organization orgListBranchProtections
|
||||||
@@ -212,23 +271,50 @@ func CreateOrgBranchProtection(ctx *context.APIContext) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pushUsers, ok := resolveUserIDs(ctx, form.PushWhitelistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
forcePushUsers, ok := resolveUserIDs(ctx, form.ForcePushAllowlistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
mergeUsers, ok := resolveUserIDs(ctx, form.MergeWhitelistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
approvalsUsers, ok := resolveUserIDs(ctx, form.ApprovalsWhitelistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
enablePushWhitelist := form.EnablePush && form.EnablePushWhitelist
|
||||||
|
enableForcePushAllowlist := form.EnablePush && form.EnableForcePush && form.EnableForcePushAllowlist
|
||||||
|
|
||||||
rule := &git_model.OrgProtectedBranch{
|
rule := &git_model.OrgProtectedBranch{
|
||||||
OrgID: orgID,
|
OrgID: orgID,
|
||||||
RuleName: form.RuleName,
|
RuleName: form.RuleName,
|
||||||
Priority: form.Priority,
|
Priority: form.Priority,
|
||||||
CanPush: form.EnablePush,
|
CanPush: form.EnablePush,
|
||||||
EnableWhitelist: form.EnablePush && form.EnablePushWhitelist,
|
EnableWhitelist: enablePushWhitelist,
|
||||||
WhitelistTeamIDs: pushTeams,
|
WhitelistTeamIDs: pushTeams,
|
||||||
|
WhitelistUserIDs: pushUsers,
|
||||||
|
WhitelistActionsUser: enablePushWhitelist && form.PushWhitelistActionsUser,
|
||||||
CanForcePush: form.EnablePush && form.EnableForcePush,
|
CanForcePush: form.EnablePush && form.EnableForcePush,
|
||||||
EnableForcePushAllowlist: form.EnablePush && form.EnableForcePush && form.EnableForcePushAllowlist,
|
EnableForcePushAllowlist: enableForcePushAllowlist,
|
||||||
ForcePushAllowlistTeamIDs: forcePushTeams,
|
ForcePushAllowlistTeamIDs: forcePushTeams,
|
||||||
|
ForcePushAllowlistUserIDs: forcePushUsers,
|
||||||
|
ForcePushAllowlistActionsUser: enableForcePushAllowlist && form.ForcePushAllowlistActionsUser,
|
||||||
EnableMergeWhitelist: form.EnableMergeWhitelist,
|
EnableMergeWhitelist: form.EnableMergeWhitelist,
|
||||||
MergeWhitelistTeamIDs: mergeTeams,
|
MergeWhitelistTeamIDs: mergeTeams,
|
||||||
|
MergeWhitelistUserIDs: mergeUsers,
|
||||||
|
MergeWhitelistActionsUser: form.EnableMergeWhitelist && form.MergeWhitelistActionsUser,
|
||||||
EnableStatusCheck: form.EnableStatusCheck,
|
EnableStatusCheck: form.EnableStatusCheck,
|
||||||
StatusCheckContexts: form.StatusCheckContexts,
|
StatusCheckContexts: form.StatusCheckContexts,
|
||||||
RequiredApprovals: form.RequiredApprovals,
|
RequiredApprovals: form.RequiredApprovals,
|
||||||
EnableApprovalsWhitelist: form.EnableApprovalsWhitelist,
|
EnableApprovalsWhitelist: form.EnableApprovalsWhitelist,
|
||||||
ApprovalsWhitelistTeamIDs: approvalsTeams,
|
ApprovalsWhitelistTeamIDs: approvalsTeams,
|
||||||
|
ApprovalsWhitelistUserIDs: approvalsUsers,
|
||||||
BlockOnRejectedReviews: form.BlockOnRejectedReviews,
|
BlockOnRejectedReviews: form.BlockOnRejectedReviews,
|
||||||
BlockOnOfficialReviewRequests: form.BlockOnOfficialReviewRequests,
|
BlockOnOfficialReviewRequests: form.BlockOnOfficialReviewRequests,
|
||||||
BlockOnOutdatedBranch: form.BlockOnOutdatedBranch,
|
BlockOnOutdatedBranch: form.BlockOnOutdatedBranch,
|
||||||
@@ -310,6 +396,16 @@ func EditOrgBranchProtection(ctx *context.APIContext) {
|
|||||||
}
|
}
|
||||||
rule.WhitelistTeamIDs = ids
|
rule.WhitelistTeamIDs = ids
|
||||||
}
|
}
|
||||||
|
if form.PushWhitelistUsernames != nil {
|
||||||
|
ids, ok := resolveUserIDs(ctx, form.PushWhitelistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rule.WhitelistUserIDs = ids
|
||||||
|
}
|
||||||
|
if form.PushWhitelistActionsUser != nil {
|
||||||
|
rule.WhitelistActionsUser = *form.PushWhitelistActionsUser
|
||||||
|
}
|
||||||
if form.EnableForcePush != nil {
|
if form.EnableForcePush != nil {
|
||||||
rule.CanForcePush = *form.EnableForcePush
|
rule.CanForcePush = *form.EnableForcePush
|
||||||
}
|
}
|
||||||
@@ -323,6 +419,16 @@ func EditOrgBranchProtection(ctx *context.APIContext) {
|
|||||||
}
|
}
|
||||||
rule.ForcePushAllowlistTeamIDs = ids
|
rule.ForcePushAllowlistTeamIDs = ids
|
||||||
}
|
}
|
||||||
|
if form.ForcePushAllowlistUsernames != nil {
|
||||||
|
ids, ok := resolveUserIDs(ctx, form.ForcePushAllowlistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rule.ForcePushAllowlistUserIDs = ids
|
||||||
|
}
|
||||||
|
if form.ForcePushAllowlistActionsUser != nil {
|
||||||
|
rule.ForcePushAllowlistActionsUser = *form.ForcePushAllowlistActionsUser
|
||||||
|
}
|
||||||
if form.EnableMergeWhitelist != nil {
|
if form.EnableMergeWhitelist != nil {
|
||||||
rule.EnableMergeWhitelist = *form.EnableMergeWhitelist
|
rule.EnableMergeWhitelist = *form.EnableMergeWhitelist
|
||||||
}
|
}
|
||||||
@@ -333,6 +439,16 @@ func EditOrgBranchProtection(ctx *context.APIContext) {
|
|||||||
}
|
}
|
||||||
rule.MergeWhitelistTeamIDs = ids
|
rule.MergeWhitelistTeamIDs = ids
|
||||||
}
|
}
|
||||||
|
if form.MergeWhitelistUsernames != nil {
|
||||||
|
ids, ok := resolveUserIDs(ctx, form.MergeWhitelistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rule.MergeWhitelistUserIDs = ids
|
||||||
|
}
|
||||||
|
if form.MergeWhitelistActionsUser != nil {
|
||||||
|
rule.MergeWhitelistActionsUser = *form.MergeWhitelistActionsUser
|
||||||
|
}
|
||||||
if form.EnableStatusCheck != nil {
|
if form.EnableStatusCheck != nil {
|
||||||
rule.EnableStatusCheck = *form.EnableStatusCheck
|
rule.EnableStatusCheck = *form.EnableStatusCheck
|
||||||
}
|
}
|
||||||
@@ -352,6 +468,13 @@ func EditOrgBranchProtection(ctx *context.APIContext) {
|
|||||||
}
|
}
|
||||||
rule.ApprovalsWhitelistTeamIDs = ids
|
rule.ApprovalsWhitelistTeamIDs = ids
|
||||||
}
|
}
|
||||||
|
if form.ApprovalsWhitelistUsernames != nil {
|
||||||
|
ids, ok := resolveUserIDs(ctx, form.ApprovalsWhitelistUsernames)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rule.ApprovalsWhitelistUserIDs = ids
|
||||||
|
}
|
||||||
if form.BlockOnRejectedReviews != nil {
|
if form.BlockOnRejectedReviews != nil {
|
||||||
rule.BlockOnRejectedReviews = *form.BlockOnRejectedReviews
|
rule.BlockOnRejectedReviews = *form.BlockOnRejectedReviews
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,6 +156,12 @@ type swaggerParameterBodies struct {
|
|||||||
// in:body
|
// in:body
|
||||||
EditBranchProtectionOption api.EditBranchProtectionOption
|
EditBranchProtectionOption api.EditBranchProtectionOption
|
||||||
|
|
||||||
|
// in:body
|
||||||
|
CreateOrgBranchProtectionOption api.CreateOrgBranchProtectionOption
|
||||||
|
|
||||||
|
// in:body
|
||||||
|
EditOrgBranchProtectionOption api.EditOrgBranchProtectionOption
|
||||||
|
|
||||||
// in:body
|
// in:body
|
||||||
UpdateBranchProtectionPriories api.UpdateBranchProtectionPriories
|
UpdateBranchProtectionPriories api.UpdateBranchProtectionPriories
|
||||||
|
|
||||||
|
|||||||
@@ -41,3 +41,17 @@ type swaggerResponseOrganizationPermissions struct {
|
|||||||
// in:body
|
// in:body
|
||||||
Body api.OrganizationPermissions `json:"body"`
|
Body api.OrganizationPermissions `json:"body"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OrgBranchProtection
|
||||||
|
// swagger:response OrgBranchProtection
|
||||||
|
type swaggerResponseOrgBranchProtection struct {
|
||||||
|
// in:body
|
||||||
|
Body api.OrgBranchProtection `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrgBranchProtectionList
|
||||||
|
// swagger:response OrgBranchProtectionList
|
||||||
|
type swaggerResponseOrgBranchProtectionList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.OrgBranchProtection `json:"body"`
|
||||||
|
}
|
||||||
|
|||||||
Generated
+697
@@ -21518,6 +21518,192 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"/orgs/{org}/branch_protections": {
|
||||||
|
"get": {
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
],
|
||||||
|
"summary": "List an organization's branch protection rules",
|
||||||
|
"operationId": "orgListBranchProtections",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the organization",
|
||||||
|
"name": "org",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"$ref": "#/responses/OrgBranchProtectionList"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/responses/notFound"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
],
|
||||||
|
"summary": "Create an org-level branch protection rule",
|
||||||
|
"operationId": "orgCreateBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the organization",
|
||||||
|
"name": "org",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/CreateOrgBranchProtectionOption"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"$ref": "#/responses/OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"$ref": "#/responses/forbidden"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/responses/notFound"
|
||||||
|
},
|
||||||
|
"422": {
|
||||||
|
"$ref": "#/responses/validationError"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/orgs/{org}/branch_protections/{name}": {
|
||||||
|
"get": {
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
],
|
||||||
|
"summary": "Get a specific org-level branch protection rule",
|
||||||
|
"operationId": "orgGetBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the organization",
|
||||||
|
"name": "org",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the branch protection rule",
|
||||||
|
"name": "name",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"$ref": "#/responses/OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/responses/notFound"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
],
|
||||||
|
"summary": "Delete an org-level branch protection rule",
|
||||||
|
"operationId": "orgDeleteBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the organization",
|
||||||
|
"name": "org",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the branch protection rule",
|
||||||
|
"name": "name",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"204": {
|
||||||
|
"$ref": "#/responses/empty"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/responses/notFound"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"patch": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
],
|
||||||
|
"summary": "Edit an org-level branch protection rule. Only fields that are set will be changed",
|
||||||
|
"operationId": "orgEditBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the organization",
|
||||||
|
"name": "org",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "name of the branch protection rule",
|
||||||
|
"name": "name",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/EditOrgBranchProtectionOption"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"$ref": "#/responses/OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/responses/notFound"
|
||||||
|
},
|
||||||
|
"422": {
|
||||||
|
"$ref": "#/responses/validationError"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"definitions": {
|
"definitions": {
|
||||||
@@ -30266,6 +30452,502 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
|
},
|
||||||
|
"CreateOrgBranchProtectionOption": {
|
||||||
|
"description": "CreateOrgBranchProtectionOption options for creating an org-level branch protection",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"approvals_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ApprovalsWhitelistTeams"
|
||||||
|
},
|
||||||
|
"approvals_whitelist_username": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ApprovalsWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"block_admin_merge_override": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockAdminMergeOverride"
|
||||||
|
},
|
||||||
|
"block_on_official_review_requests": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOfficialReviewRequests"
|
||||||
|
},
|
||||||
|
"block_on_outdated_branch": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOutdatedBranch"
|
||||||
|
},
|
||||||
|
"block_on_rejected_reviews": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnRejectedReviews"
|
||||||
|
},
|
||||||
|
"dismiss_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "DismissStaleApprovals"
|
||||||
|
},
|
||||||
|
"enable_approvals_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableApprovalsWhitelist"
|
||||||
|
},
|
||||||
|
"enable_force_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePush"
|
||||||
|
},
|
||||||
|
"enable_force_push_allowlist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePushAllowlist"
|
||||||
|
},
|
||||||
|
"enable_merge_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableMergeWhitelist"
|
||||||
|
},
|
||||||
|
"enable_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePush"
|
||||||
|
},
|
||||||
|
"enable_push_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePushWhitelist"
|
||||||
|
},
|
||||||
|
"enable_status_check": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableStatusCheck"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "ForcePushAllowlistActionsUser"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ForcePushAllowlistTeams"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ForcePushAllowlistUsernames"
|
||||||
|
},
|
||||||
|
"ignore_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "IgnoreStaleApprovals"
|
||||||
|
},
|
||||||
|
"merge_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "MergeWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"merge_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "MergeWhitelistTeams"
|
||||||
|
},
|
||||||
|
"merge_whitelist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "MergeWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "Priority"
|
||||||
|
},
|
||||||
|
"protected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "ProtectedFilePatterns"
|
||||||
|
},
|
||||||
|
"push_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "PushWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"push_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "PushWhitelistTeams"
|
||||||
|
},
|
||||||
|
"push_whitelist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "PushWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"require_signed_commits": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "RequireSignedCommits"
|
||||||
|
},
|
||||||
|
"required_approvals": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "RequiredApprovals"
|
||||||
|
},
|
||||||
|
"rule_name": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "RuleName"
|
||||||
|
},
|
||||||
|
"status_check_contexts": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "StatusCheckContexts"
|
||||||
|
},
|
||||||
|
"unprotected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "UnprotectedFilePatterns"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
|
},
|
||||||
|
"EditOrgBranchProtectionOption": {
|
||||||
|
"description": "EditOrgBranchProtectionOption options for editing an org-level branch protection",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"approvals_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ApprovalsWhitelistTeams"
|
||||||
|
},
|
||||||
|
"approvals_whitelist_username": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ApprovalsWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"block_admin_merge_override": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockAdminMergeOverride"
|
||||||
|
},
|
||||||
|
"block_on_official_review_requests": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOfficialReviewRequests"
|
||||||
|
},
|
||||||
|
"block_on_outdated_branch": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOutdatedBranch"
|
||||||
|
},
|
||||||
|
"block_on_rejected_reviews": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnRejectedReviews"
|
||||||
|
},
|
||||||
|
"dismiss_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "DismissStaleApprovals"
|
||||||
|
},
|
||||||
|
"enable_approvals_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableApprovalsWhitelist"
|
||||||
|
},
|
||||||
|
"enable_force_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePush"
|
||||||
|
},
|
||||||
|
"enable_force_push_allowlist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePushAllowlist"
|
||||||
|
},
|
||||||
|
"enable_merge_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableMergeWhitelist"
|
||||||
|
},
|
||||||
|
"enable_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePush"
|
||||||
|
},
|
||||||
|
"enable_push_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePushWhitelist"
|
||||||
|
},
|
||||||
|
"enable_status_check": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableStatusCheck"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "ForcePushAllowlistActionsUser"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ForcePushAllowlistTeams"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ForcePushAllowlistUsernames"
|
||||||
|
},
|
||||||
|
"ignore_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "IgnoreStaleApprovals"
|
||||||
|
},
|
||||||
|
"merge_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "MergeWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"merge_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "MergeWhitelistTeams"
|
||||||
|
},
|
||||||
|
"merge_whitelist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "MergeWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "Priority"
|
||||||
|
},
|
||||||
|
"protected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "ProtectedFilePatterns"
|
||||||
|
},
|
||||||
|
"push_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "PushWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"push_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "PushWhitelistTeams"
|
||||||
|
},
|
||||||
|
"push_whitelist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "PushWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"require_signed_commits": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "RequireSignedCommits"
|
||||||
|
},
|
||||||
|
"required_approvals": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "RequiredApprovals"
|
||||||
|
},
|
||||||
|
"status_check_contexts": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "StatusCheckContexts"
|
||||||
|
},
|
||||||
|
"unprotected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "UnprotectedFilePatterns"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
|
},
|
||||||
|
"OrgBranchProtection": {
|
||||||
|
"description": "OrgBranchProtection represents an org-level branch protection ruleset",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"approvals_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ApprovalsWhitelistTeams"
|
||||||
|
},
|
||||||
|
"approvals_whitelist_username": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ApprovalsWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"block_admin_merge_override": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockAdminMergeOverride"
|
||||||
|
},
|
||||||
|
"block_on_official_review_requests": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOfficialReviewRequests"
|
||||||
|
},
|
||||||
|
"block_on_outdated_branch": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOutdatedBranch"
|
||||||
|
},
|
||||||
|
"block_on_rejected_reviews": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnRejectedReviews"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"x-go-name": "Created"
|
||||||
|
},
|
||||||
|
"dismiss_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "DismissStaleApprovals"
|
||||||
|
},
|
||||||
|
"enable_approvals_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableApprovalsWhitelist"
|
||||||
|
},
|
||||||
|
"enable_force_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePush"
|
||||||
|
},
|
||||||
|
"enable_force_push_allowlist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePushAllowlist"
|
||||||
|
},
|
||||||
|
"enable_merge_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableMergeWhitelist"
|
||||||
|
},
|
||||||
|
"enable_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePush"
|
||||||
|
},
|
||||||
|
"enable_push_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePushWhitelist"
|
||||||
|
},
|
||||||
|
"enable_status_check": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableStatusCheck"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "ForcePushAllowlistActionsUser"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ForcePushAllowlistTeams"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "ForcePushAllowlistUsernames"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "ID"
|
||||||
|
},
|
||||||
|
"ignore_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "IgnoreStaleApprovals"
|
||||||
|
},
|
||||||
|
"merge_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "MergeWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"merge_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "MergeWhitelistTeams"
|
||||||
|
},
|
||||||
|
"merge_whitelist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "MergeWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"org_id": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "OrgID"
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "Priority"
|
||||||
|
},
|
||||||
|
"protected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "ProtectedFilePatterns"
|
||||||
|
},
|
||||||
|
"push_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "PushWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"push_whitelist_teams": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "PushWhitelistTeams"
|
||||||
|
},
|
||||||
|
"push_whitelist_usernames": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "PushWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"require_signed_commits": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "RequireSignedCommits"
|
||||||
|
},
|
||||||
|
"required_approvals": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"x-go-name": "RequiredApprovals"
|
||||||
|
},
|
||||||
|
"rule_name": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "RuleName"
|
||||||
|
},
|
||||||
|
"status_check_contexts": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"x-go-name": "StatusCheckContexts"
|
||||||
|
},
|
||||||
|
"unprotected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "UnprotectedFilePatterns"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"x-go-name": "Updated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"responses": {
|
"responses": {
|
||||||
@@ -31404,6 +32086,21 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"OrgBranchProtection": {
|
||||||
|
"description": "OrgBranchProtection",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/OrgBranchProtection"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OrgBranchProtectionList": {
|
||||||
|
"description": "OrgBranchProtectionList",
|
||||||
|
"schema": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/OrgBranchProtection"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"securityDefinitions": {
|
"securityDefinitions": {
|
||||||
|
|||||||
@@ -911,6 +911,29 @@
|
|||||||
},
|
},
|
||||||
"description": "OAuth2ApplicationList represents a list of OAuth2 applications."
|
"description": "OAuth2ApplicationList represents a list of OAuth2 applications."
|
||||||
},
|
},
|
||||||
|
"OrgBranchProtection": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/OrgBranchProtection"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"OrgBranchProtectionList": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "OrgBranchProtectionList"
|
||||||
|
},
|
||||||
"Organization": {
|
"Organization": {
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
@@ -4264,6 +4287,166 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
},
|
},
|
||||||
|
"CreateOrgBranchProtectionOption": {
|
||||||
|
"description": "CreateOrgBranchProtectionOption options for creating an org-level branch protection",
|
||||||
|
"properties": {
|
||||||
|
"approvals_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ApprovalsWhitelistTeams"
|
||||||
|
},
|
||||||
|
"approvals_whitelist_username": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ApprovalsWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"block_admin_merge_override": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockAdminMergeOverride"
|
||||||
|
},
|
||||||
|
"block_on_official_review_requests": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOfficialReviewRequests"
|
||||||
|
},
|
||||||
|
"block_on_outdated_branch": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOutdatedBranch"
|
||||||
|
},
|
||||||
|
"block_on_rejected_reviews": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnRejectedReviews"
|
||||||
|
},
|
||||||
|
"dismiss_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "DismissStaleApprovals"
|
||||||
|
},
|
||||||
|
"enable_approvals_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableApprovalsWhitelist"
|
||||||
|
},
|
||||||
|
"enable_force_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePush"
|
||||||
|
},
|
||||||
|
"enable_force_push_allowlist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePushAllowlist"
|
||||||
|
},
|
||||||
|
"enable_merge_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableMergeWhitelist"
|
||||||
|
},
|
||||||
|
"enable_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePush"
|
||||||
|
},
|
||||||
|
"enable_push_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePushWhitelist"
|
||||||
|
},
|
||||||
|
"enable_status_check": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableStatusCheck"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "ForcePushAllowlistActionsUser"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ForcePushAllowlistTeams"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ForcePushAllowlistUsernames"
|
||||||
|
},
|
||||||
|
"ignore_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "IgnoreStaleApprovals"
|
||||||
|
},
|
||||||
|
"merge_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "MergeWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"merge_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "MergeWhitelistTeams"
|
||||||
|
},
|
||||||
|
"merge_whitelist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "MergeWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "Priority"
|
||||||
|
},
|
||||||
|
"protected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "ProtectedFilePatterns"
|
||||||
|
},
|
||||||
|
"push_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "PushWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"push_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "PushWhitelistTeams"
|
||||||
|
},
|
||||||
|
"push_whitelist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "PushWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"require_signed_commits": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "RequireSignedCommits"
|
||||||
|
},
|
||||||
|
"required_approvals": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "RequiredApprovals"
|
||||||
|
},
|
||||||
|
"rule_name": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "RuleName"
|
||||||
|
},
|
||||||
|
"status_check_contexts": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "StatusCheckContexts"
|
||||||
|
},
|
||||||
|
"unprotected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "UnprotectedFilePatterns"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object",
|
||||||
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
|
},
|
||||||
"CreateOrgOption": {
|
"CreateOrgOption": {
|
||||||
"description": "CreateOrgOption options for creating an organization",
|
"description": "CreateOrgOption options for creating an organization",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -5431,6 +5614,162 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
},
|
},
|
||||||
|
"EditOrgBranchProtectionOption": {
|
||||||
|
"description": "EditOrgBranchProtectionOption options for editing an org-level branch protection",
|
||||||
|
"properties": {
|
||||||
|
"approvals_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ApprovalsWhitelistTeams"
|
||||||
|
},
|
||||||
|
"approvals_whitelist_username": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ApprovalsWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"block_admin_merge_override": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockAdminMergeOverride"
|
||||||
|
},
|
||||||
|
"block_on_official_review_requests": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOfficialReviewRequests"
|
||||||
|
},
|
||||||
|
"block_on_outdated_branch": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOutdatedBranch"
|
||||||
|
},
|
||||||
|
"block_on_rejected_reviews": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnRejectedReviews"
|
||||||
|
},
|
||||||
|
"dismiss_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "DismissStaleApprovals"
|
||||||
|
},
|
||||||
|
"enable_approvals_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableApprovalsWhitelist"
|
||||||
|
},
|
||||||
|
"enable_force_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePush"
|
||||||
|
},
|
||||||
|
"enable_force_push_allowlist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePushAllowlist"
|
||||||
|
},
|
||||||
|
"enable_merge_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableMergeWhitelist"
|
||||||
|
},
|
||||||
|
"enable_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePush"
|
||||||
|
},
|
||||||
|
"enable_push_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePushWhitelist"
|
||||||
|
},
|
||||||
|
"enable_status_check": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableStatusCheck"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "ForcePushAllowlistActionsUser"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ForcePushAllowlistTeams"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ForcePushAllowlistUsernames"
|
||||||
|
},
|
||||||
|
"ignore_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "IgnoreStaleApprovals"
|
||||||
|
},
|
||||||
|
"merge_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "MergeWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"merge_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "MergeWhitelistTeams"
|
||||||
|
},
|
||||||
|
"merge_whitelist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "MergeWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "Priority"
|
||||||
|
},
|
||||||
|
"protected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "ProtectedFilePatterns"
|
||||||
|
},
|
||||||
|
"push_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "PushWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"push_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "PushWhitelistTeams"
|
||||||
|
},
|
||||||
|
"push_whitelist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "PushWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"require_signed_commits": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "RequireSignedCommits"
|
||||||
|
},
|
||||||
|
"required_approvals": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "RequiredApprovals"
|
||||||
|
},
|
||||||
|
"status_check_contexts": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "StatusCheckContexts"
|
||||||
|
},
|
||||||
|
"unprotected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "UnprotectedFilePatterns"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object",
|
||||||
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
|
},
|
||||||
"EditOrgOption": {
|
"EditOrgOption": {
|
||||||
"description": "EditOrgOption options for editing an organization",
|
"description": "EditOrgOption options for editing an organization",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -7900,6 +8239,186 @@
|
|||||||
],
|
],
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
"OrgBranchProtection": {
|
||||||
|
"description": "OrgBranchProtection represents an org-level branch protection ruleset",
|
||||||
|
"properties": {
|
||||||
|
"approvals_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ApprovalsWhitelistTeams"
|
||||||
|
},
|
||||||
|
"approvals_whitelist_username": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ApprovalsWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"block_admin_merge_override": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockAdminMergeOverride"
|
||||||
|
},
|
||||||
|
"block_on_official_review_requests": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOfficialReviewRequests"
|
||||||
|
},
|
||||||
|
"block_on_outdated_branch": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnOutdatedBranch"
|
||||||
|
},
|
||||||
|
"block_on_rejected_reviews": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "BlockOnRejectedReviews"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"format": "date-time",
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "Created"
|
||||||
|
},
|
||||||
|
"dismiss_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "DismissStaleApprovals"
|
||||||
|
},
|
||||||
|
"enable_approvals_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableApprovalsWhitelist"
|
||||||
|
},
|
||||||
|
"enable_force_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePush"
|
||||||
|
},
|
||||||
|
"enable_force_push_allowlist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableForcePushAllowlist"
|
||||||
|
},
|
||||||
|
"enable_merge_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableMergeWhitelist"
|
||||||
|
},
|
||||||
|
"enable_push": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePush"
|
||||||
|
},
|
||||||
|
"enable_push_whitelist": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnablePushWhitelist"
|
||||||
|
},
|
||||||
|
"enable_status_check": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "EnableStatusCheck"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "ForcePushAllowlistActionsUser"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ForcePushAllowlistTeams"
|
||||||
|
},
|
||||||
|
"force_push_allowlist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "ForcePushAllowlistUsernames"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "ID"
|
||||||
|
},
|
||||||
|
"ignore_stale_approvals": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "IgnoreStaleApprovals"
|
||||||
|
},
|
||||||
|
"merge_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "MergeWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"merge_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "MergeWhitelistTeams"
|
||||||
|
},
|
||||||
|
"merge_whitelist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "MergeWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"org_id": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "OrgID"
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "Priority"
|
||||||
|
},
|
||||||
|
"protected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "ProtectedFilePatterns"
|
||||||
|
},
|
||||||
|
"push_whitelist_actions_user": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "PushWhitelistActionsUser"
|
||||||
|
},
|
||||||
|
"push_whitelist_teams": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "PushWhitelistTeams"
|
||||||
|
},
|
||||||
|
"push_whitelist_usernames": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "PushWhitelistUsernames"
|
||||||
|
},
|
||||||
|
"require_signed_commits": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "RequireSignedCommits"
|
||||||
|
},
|
||||||
|
"required_approvals": {
|
||||||
|
"format": "int64",
|
||||||
|
"type": "integer",
|
||||||
|
"x-go-name": "RequiredApprovals"
|
||||||
|
},
|
||||||
|
"rule_name": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "RuleName"
|
||||||
|
},
|
||||||
|
"status_check_contexts": {
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
"x-go-name": "StatusCheckContexts"
|
||||||
|
},
|
||||||
|
"unprotected_file_patterns": {
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "UnprotectedFilePatterns"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"format": "date-time",
|
||||||
|
"type": "string",
|
||||||
|
"x-go-name": "Updated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object",
|
||||||
|
"x-go-package": "code.mokoconsulting.tech/MokoConsulting/MokoGitea/modules/structs"
|
||||||
|
},
|
||||||
"Organization": {
|
"Organization": {
|
||||||
"description": "Organization represents an organization",
|
"description": "Organization represents an organization",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -13484,6 +14003,196 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/orgs/{org}/branch_protections": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "orgListBranchProtections",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "name of the organization",
|
||||||
|
"in": "path",
|
||||||
|
"name": "org",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"$ref": "#/components/responses/OrgBranchProtectionList"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/components/responses/notFound"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "List an organization's branch protection rules",
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"operationId": "orgCreateBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "name of the organization",
|
||||||
|
"in": "path",
|
||||||
|
"name": "org",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"requestBody": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/CreateOrgBranchProtectionOption"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-originalParamName": "body"
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"$ref": "#/components/responses/OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"$ref": "#/components/responses/forbidden"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/components/responses/notFound"
|
||||||
|
},
|
||||||
|
"422": {
|
||||||
|
"$ref": "#/components/responses/validationError"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Create an org-level branch protection rule",
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/orgs/{org}/branch_protections/{name}": {
|
||||||
|
"delete": {
|
||||||
|
"operationId": "orgDeleteBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "name of the organization",
|
||||||
|
"in": "path",
|
||||||
|
"name": "org",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "name of the branch protection rule",
|
||||||
|
"in": "path",
|
||||||
|
"name": "name",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"204": {
|
||||||
|
"$ref": "#/components/responses/empty"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/components/responses/notFound"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Delete an org-level branch protection rule",
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"operationId": "orgGetBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "name of the organization",
|
||||||
|
"in": "path",
|
||||||
|
"name": "org",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "name of the branch protection rule",
|
||||||
|
"in": "path",
|
||||||
|
"name": "name",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"$ref": "#/components/responses/OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/components/responses/notFound"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Get a specific org-level branch protection rule",
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"patch": {
|
||||||
|
"operationId": "orgEditBranchProtection",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "name of the organization",
|
||||||
|
"in": "path",
|
||||||
|
"name": "org",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "name of the branch protection rule",
|
||||||
|
"in": "path",
|
||||||
|
"name": "name",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"requestBody": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/EditOrgBranchProtectionOption"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"x-originalParamName": "body"
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"$ref": "#/components/responses/OrgBranchProtection"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"$ref": "#/components/responses/notFound"
|
||||||
|
},
|
||||||
|
"422": {
|
||||||
|
"$ref": "#/components/responses/validationError"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Edit an org-level branch protection rule. Only fields that are set will be changed",
|
||||||
|
"tags": [
|
||||||
|
"organization"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"/orgs/{org}/hooks": {
|
"/orgs/{org}/hooks": {
|
||||||
"get": {
|
"get": {
|
||||||
"operationId": "orgListHooks",
|
"operationId": "orgListHooks",
|
||||||
|
|||||||
Reference in New Issue
Block a user