All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.gitlab.inputs.GroupState Maven / Gradle / Ivy

The newest version!
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.gitlab.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.gitlab.inputs.GroupDefaultBranchProtectionDefaultsArgs;
import com.pulumi.gitlab.inputs.GroupPushRulesArgs;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class GroupState extends com.pulumi.resources.ResourceArgs {

    public static final GroupState Empty = new GroupState();

    /**
     * Default to Auto DevOps pipeline for all projects within this group.
     * 
     */
    @Import(name="autoDevopsEnabled")
    private @Nullable Output autoDevopsEnabled;

    /**
     * @return Default to Auto DevOps pipeline for all projects within this group.
     * 
     */
    public Optional> autoDevopsEnabled() {
        return Optional.ofNullable(this.autoDevopsEnabled);
    }

    /**
     * A local path to the avatar image to upload. **Note**: not available for imported resources.
     * 
     */
    @Import(name="avatar")
    private @Nullable Output avatar;

    /**
     * @return A local path to the avatar image to upload. **Note**: not available for imported resources.
     * 
     */
    public Optional> avatar() {
        return Optional.ofNullable(this.avatar);
    }

    /**
     * The hash of the avatar image. Use `filesha256("path/to/avatar.png")` whenever possible. **Note**: this is used to trigger an update of the avatar. If it's not given, but an avatar is given, the avatar will be updated each time.
     * 
     */
    @Import(name="avatarHash")
    private @Nullable Output avatarHash;

    /**
     * @return The hash of the avatar image. Use `filesha256("path/to/avatar.png")` whenever possible. **Note**: this is used to trigger an update of the avatar. If it's not given, but an avatar is given, the avatar will be updated each time.
     * 
     */
    public Optional> avatarHash() {
        return Optional.ofNullable(this.avatarHash);
    }

    /**
     * The URL of the avatar image.
     * 
     */
    @Import(name="avatarUrl")
    private @Nullable Output avatarUrl;

    /**
     * @return The URL of the avatar image.
     * 
     */
    public Optional> avatarUrl() {
        return Optional.ofNullable(this.avatarUrl);
    }

    /**
     * See https://docs.gitlab.com/ee/api/groups.html#options-for-default*branch*protection. Valid values are: `0`, `1`, `2`, `3`, `4`.
     * 
     * @deprecated
     * Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead.
     * 
     */
    @Deprecated /* Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead. */
    @Import(name="defaultBranchProtection")
    private @Nullable Output defaultBranchProtection;

    /**
     * @return See https://docs.gitlab.com/ee/api/groups.html#options-for-default*branch*protection. Valid values are: `0`, `1`, `2`, `3`, `4`.
     * 
     * @deprecated
     * Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead.
     * 
     */
    @Deprecated /* Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead. */
    public Optional> defaultBranchProtection() {
        return Optional.ofNullable(this.defaultBranchProtection);
    }

    /**
     * The default branch protection defaults
     * 
     */
    @Import(name="defaultBranchProtectionDefaults")
    private @Nullable Output defaultBranchProtectionDefaults;

    /**
     * @return The default branch protection defaults
     * 
     */
    public Optional> defaultBranchProtectionDefaults() {
        return Optional.ofNullable(this.defaultBranchProtectionDefaults);
    }

    /**
     * The group's description.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return The group's description.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * Enable email notifications.
     * 
     */
    @Import(name="emailsEnabled")
    private @Nullable Output emailsEnabled;

    /**
     * @return Enable email notifications.
     * 
     */
    public Optional> emailsEnabled() {
        return Optional.ofNullable(this.emailsEnabled);
    }

    /**
     * Can be set by administrators only. Additional CI/CD minutes for this group.
     * 
     */
    @Import(name="extraSharedRunnersMinutesLimit")
    private @Nullable Output extraSharedRunnersMinutesLimit;

    /**
     * @return Can be set by administrators only. Additional CI/CD minutes for this group.
     * 
     */
    public Optional> extraSharedRunnersMinutesLimit() {
        return Optional.ofNullable(this.extraSharedRunnersMinutesLimit);
    }

    /**
     * The full name of the group.
     * 
     */
    @Import(name="fullName")
    private @Nullable Output fullName;

    /**
     * @return The full name of the group.
     * 
     */
    public Optional> fullName() {
        return Optional.ofNullable(this.fullName);
    }

    /**
     * The full path of the group.
     * 
     */
    @Import(name="fullPath")
    private @Nullable Output fullPath;

    /**
     * @return The full path of the group.
     * 
     */
    public Optional> fullPath() {
        return Optional.ofNullable(this.fullPath);
    }

    /**
     * A list of IP addresses or subnet masks to restrict group access. Will be concatenated together into a comma separated string. Only allowed on top level groups.
     * 
     */
    @Import(name="ipRestrictionRanges")
    private @Nullable Output> ipRestrictionRanges;

    /**
     * @return A list of IP addresses or subnet masks to restrict group access. Will be concatenated together into a comma separated string. Only allowed on top level groups.
     * 
     */
    public Optional>> ipRestrictionRanges() {
        return Optional.ofNullable(this.ipRestrictionRanges);
    }

    /**
     * Enable/disable Large File Storage (LFS) for the projects in this group.
     * 
     */
    @Import(name="lfsEnabled")
    private @Nullable Output lfsEnabled;

    /**
     * @return Enable/disable Large File Storage (LFS) for the projects in this group.
     * 
     */
    public Optional> lfsEnabled() {
        return Optional.ofNullable(this.lfsEnabled);
    }

    /**
     * Users cannot be added to projects in this group.
     * 
     */
    @Import(name="membershipLock")
    private @Nullable Output membershipLock;

    /**
     * @return Users cannot be added to projects in this group.
     * 
     */
    public Optional> membershipLock() {
        return Optional.ofNullable(this.membershipLock);
    }

    /**
     * Disable the capability of a group from getting mentioned.
     * 
     */
    @Import(name="mentionsDisabled")
    private @Nullable Output mentionsDisabled;

    /**
     * @return Disable the capability of a group from getting mentioned.
     * 
     */
    public Optional> mentionsDisabled() {
        return Optional.ofNullable(this.mentionsDisabled);
    }

    /**
     * The name of the group.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return The name of the group.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Id of the parent group (creates a nested group).
     * 
     */
    @Import(name="parentId")
    private @Nullable Output parentId;

    /**
     * @return Id of the parent group (creates a nested group).
     * 
     */
    public Optional> parentId() {
        return Optional.ofNullable(this.parentId);
    }

    /**
     * The path of the group.
     * 
     */
    @Import(name="path")
    private @Nullable Output path;

    /**
     * @return The path of the group.
     * 
     */
    public Optional> path() {
        return Optional.ofNullable(this.path);
    }

    /**
     * Whether the group should be permanently removed during a `delete` operation. This only works with subgroups. Must be configured via an `apply` before the `destroy` is run.
     * 
     */
    @Import(name="permanentlyRemoveOnDelete")
    private @Nullable Output permanentlyRemoveOnDelete;

    /**
     * @return Whether the group should be permanently removed during a `delete` operation. This only works with subgroups. Must be configured via an `apply` before the `destroy` is run.
     * 
     */
    public Optional> permanentlyRemoveOnDelete() {
        return Optional.ofNullable(this.permanentlyRemoveOnDelete);
    }

    /**
     * Defaults to false. When enabled, users can not fork projects from this group to external namespaces.
     * 
     */
    @Import(name="preventForkingOutsideGroup")
    private @Nullable Output preventForkingOutsideGroup;

    /**
     * @return Defaults to false. When enabled, users can not fork projects from this group to external namespaces.
     * 
     */
    public Optional> preventForkingOutsideGroup() {
        return Optional.ofNullable(this.preventForkingOutsideGroup);
    }

    /**
     * Determine if developers can create projects in the group. Valid values are: `noone`, `maintainer`, `developer`
     * 
     */
    @Import(name="projectCreationLevel")
    private @Nullable Output projectCreationLevel;

    /**
     * @return Determine if developers can create projects in the group. Valid values are: `noone`, `maintainer`, `developer`
     * 
     */
    public Optional> projectCreationLevel() {
        return Optional.ofNullable(this.projectCreationLevel);
    }

    /**
     * Push rules for the group.
     * 
     */
    @Import(name="pushRules")
    private @Nullable Output pushRules;

    /**
     * @return Push rules for the group.
     * 
     */
    public Optional> pushRules() {
        return Optional.ofNullable(this.pushRules);
    }

    /**
     * Allow users to request member access.
     * 
     */
    @Import(name="requestAccessEnabled")
    private @Nullable Output requestAccessEnabled;

    /**
     * @return Allow users to request member access.
     * 
     */
    public Optional> requestAccessEnabled() {
        return Optional.ofNullable(this.requestAccessEnabled);
    }

    /**
     * Require all users in this group to setup Two-factor authentication.
     * 
     */
    @Import(name="requireTwoFactorAuthentication")
    private @Nullable Output requireTwoFactorAuthentication;

    /**
     * @return Require all users in this group to setup Two-factor authentication.
     * 
     */
    public Optional> requireTwoFactorAuthentication() {
        return Optional.ofNullable(this.requireTwoFactorAuthentication);
    }

    /**
     * The group level registration token to use during runner setup.
     * 
     */
    @Import(name="runnersToken")
    private @Nullable Output runnersToken;

    /**
     * @return The group level registration token to use during runner setup.
     * 
     */
    public Optional> runnersToken() {
        return Optional.ofNullable(this.runnersToken);
    }

    /**
     * Prevent sharing a project with another group within this group.
     * 
     */
    @Import(name="shareWithGroupLock")
    private @Nullable Output shareWithGroupLock;

    /**
     * @return Prevent sharing a project with another group within this group.
     * 
     */
    public Optional> shareWithGroupLock() {
        return Optional.ofNullable(this.shareWithGroupLock);
    }

    /**
     * Can be set by administrators only. Maximum number of monthly CI/CD minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or > 0.
     * 
     */
    @Import(name="sharedRunnersMinutesLimit")
    private @Nullable Output sharedRunnersMinutesLimit;

    /**
     * @return Can be set by administrators only. Maximum number of monthly CI/CD minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or > 0.
     * 
     */
    public Optional> sharedRunnersMinutesLimit() {
        return Optional.ofNullable(this.sharedRunnersMinutesLimit);
    }

    /**
     * Enable or disable shared runners for a group’s subgroups and projects. Valid values are: `enabled`, `disabled_and_overridable`, `disabled_and_unoverridable`, `disabled_with_override`.
     * 
     */
    @Import(name="sharedRunnersSetting")
    private @Nullable Output sharedRunnersSetting;

    /**
     * @return Enable or disable shared runners for a group’s subgroups and projects. Valid values are: `enabled`, `disabled_and_overridable`, `disabled_and_unoverridable`, `disabled_with_override`.
     * 
     */
    public Optional> sharedRunnersSetting() {
        return Optional.ofNullable(this.sharedRunnersSetting);
    }

    /**
     * Allowed to create subgroups. Valid values are: `owner`, `maintainer`.
     * 
     */
    @Import(name="subgroupCreationLevel")
    private @Nullable Output subgroupCreationLevel;

    /**
     * @return Allowed to create subgroups. Valid values are: `owner`, `maintainer`.
     * 
     */
    public Optional> subgroupCreationLevel() {
        return Optional.ofNullable(this.subgroupCreationLevel);
    }

    /**
     * Defaults to 48. Time before Two-factor authentication is enforced (in hours).
     * 
     */
    @Import(name="twoFactorGracePeriod")
    private @Nullable Output twoFactorGracePeriod;

    /**
     * @return Defaults to 48. Time before Two-factor authentication is enforced (in hours).
     * 
     */
    public Optional> twoFactorGracePeriod() {
        return Optional.ofNullable(this.twoFactorGracePeriod);
    }

    /**
     * The group's visibility. Can be `private`, `internal`, or `public`. Valid values are: `private`, `internal`, `public`.
     * 
     */
    @Import(name="visibilityLevel")
    private @Nullable Output visibilityLevel;

    /**
     * @return The group's visibility. Can be `private`, `internal`, or `public`. Valid values are: `private`, `internal`, `public`.
     * 
     */
    public Optional> visibilityLevel() {
        return Optional.ofNullable(this.visibilityLevel);
    }

    /**
     * Web URL of the group.
     * 
     */
    @Import(name="webUrl")
    private @Nullable Output webUrl;

    /**
     * @return Web URL of the group.
     * 
     */
    public Optional> webUrl() {
        return Optional.ofNullable(this.webUrl);
    }

    /**
     * The group's wiki access level. Only available on Premium and Ultimate plans. Valid values are `disabled`, `private`, `enabled`.
     * 
     */
    @Import(name="wikiAccessLevel")
    private @Nullable Output wikiAccessLevel;

    /**
     * @return The group's wiki access level. Only available on Premium and Ultimate plans. Valid values are `disabled`, `private`, `enabled`.
     * 
     */
    public Optional> wikiAccessLevel() {
        return Optional.ofNullable(this.wikiAccessLevel);
    }

    private GroupState() {}

    private GroupState(GroupState $) {
        this.autoDevopsEnabled = $.autoDevopsEnabled;
        this.avatar = $.avatar;
        this.avatarHash = $.avatarHash;
        this.avatarUrl = $.avatarUrl;
        this.defaultBranchProtection = $.defaultBranchProtection;
        this.defaultBranchProtectionDefaults = $.defaultBranchProtectionDefaults;
        this.description = $.description;
        this.emailsEnabled = $.emailsEnabled;
        this.extraSharedRunnersMinutesLimit = $.extraSharedRunnersMinutesLimit;
        this.fullName = $.fullName;
        this.fullPath = $.fullPath;
        this.ipRestrictionRanges = $.ipRestrictionRanges;
        this.lfsEnabled = $.lfsEnabled;
        this.membershipLock = $.membershipLock;
        this.mentionsDisabled = $.mentionsDisabled;
        this.name = $.name;
        this.parentId = $.parentId;
        this.path = $.path;
        this.permanentlyRemoveOnDelete = $.permanentlyRemoveOnDelete;
        this.preventForkingOutsideGroup = $.preventForkingOutsideGroup;
        this.projectCreationLevel = $.projectCreationLevel;
        this.pushRules = $.pushRules;
        this.requestAccessEnabled = $.requestAccessEnabled;
        this.requireTwoFactorAuthentication = $.requireTwoFactorAuthentication;
        this.runnersToken = $.runnersToken;
        this.shareWithGroupLock = $.shareWithGroupLock;
        this.sharedRunnersMinutesLimit = $.sharedRunnersMinutesLimit;
        this.sharedRunnersSetting = $.sharedRunnersSetting;
        this.subgroupCreationLevel = $.subgroupCreationLevel;
        this.twoFactorGracePeriod = $.twoFactorGracePeriod;
        this.visibilityLevel = $.visibilityLevel;
        this.webUrl = $.webUrl;
        this.wikiAccessLevel = $.wikiAccessLevel;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(GroupState defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private GroupState $;

        public Builder() {
            $ = new GroupState();
        }

        public Builder(GroupState defaults) {
            $ = new GroupState(Objects.requireNonNull(defaults));
        }

        /**
         * @param autoDevopsEnabled Default to Auto DevOps pipeline for all projects within this group.
         * 
         * @return builder
         * 
         */
        public Builder autoDevopsEnabled(@Nullable Output autoDevopsEnabled) {
            $.autoDevopsEnabled = autoDevopsEnabled;
            return this;
        }

        /**
         * @param autoDevopsEnabled Default to Auto DevOps pipeline for all projects within this group.
         * 
         * @return builder
         * 
         */
        public Builder autoDevopsEnabled(Boolean autoDevopsEnabled) {
            return autoDevopsEnabled(Output.of(autoDevopsEnabled));
        }

        /**
         * @param avatar A local path to the avatar image to upload. **Note**: not available for imported resources.
         * 
         * @return builder
         * 
         */
        public Builder avatar(@Nullable Output avatar) {
            $.avatar = avatar;
            return this;
        }

        /**
         * @param avatar A local path to the avatar image to upload. **Note**: not available for imported resources.
         * 
         * @return builder
         * 
         */
        public Builder avatar(String avatar) {
            return avatar(Output.of(avatar));
        }

        /**
         * @param avatarHash The hash of the avatar image. Use `filesha256("path/to/avatar.png")` whenever possible. **Note**: this is used to trigger an update of the avatar. If it's not given, but an avatar is given, the avatar will be updated each time.
         * 
         * @return builder
         * 
         */
        public Builder avatarHash(@Nullable Output avatarHash) {
            $.avatarHash = avatarHash;
            return this;
        }

        /**
         * @param avatarHash The hash of the avatar image. Use `filesha256("path/to/avatar.png")` whenever possible. **Note**: this is used to trigger an update of the avatar. If it's not given, but an avatar is given, the avatar will be updated each time.
         * 
         * @return builder
         * 
         */
        public Builder avatarHash(String avatarHash) {
            return avatarHash(Output.of(avatarHash));
        }

        /**
         * @param avatarUrl The URL of the avatar image.
         * 
         * @return builder
         * 
         */
        public Builder avatarUrl(@Nullable Output avatarUrl) {
            $.avatarUrl = avatarUrl;
            return this;
        }

        /**
         * @param avatarUrl The URL of the avatar image.
         * 
         * @return builder
         * 
         */
        public Builder avatarUrl(String avatarUrl) {
            return avatarUrl(Output.of(avatarUrl));
        }

        /**
         * @param defaultBranchProtection See https://docs.gitlab.com/ee/api/groups.html#options-for-default*branch*protection. Valid values are: `0`, `1`, `2`, `3`, `4`.
         * 
         * @return builder
         * 
         * @deprecated
         * Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead.
         * 
         */
        @Deprecated /* Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead. */
        public Builder defaultBranchProtection(@Nullable Output defaultBranchProtection) {
            $.defaultBranchProtection = defaultBranchProtection;
            return this;
        }

        /**
         * @param defaultBranchProtection See https://docs.gitlab.com/ee/api/groups.html#options-for-default*branch*protection. Valid values are: `0`, `1`, `2`, `3`, `4`.
         * 
         * @return builder
         * 
         * @deprecated
         * Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead.
         * 
         */
        @Deprecated /* Deprecated in GitLab 17.0. Use default_branch_protection_defaults instead. */
        public Builder defaultBranchProtection(Integer defaultBranchProtection) {
            return defaultBranchProtection(Output.of(defaultBranchProtection));
        }

        /**
         * @param defaultBranchProtectionDefaults The default branch protection defaults
         * 
         * @return builder
         * 
         */
        public Builder defaultBranchProtectionDefaults(@Nullable Output defaultBranchProtectionDefaults) {
            $.defaultBranchProtectionDefaults = defaultBranchProtectionDefaults;
            return this;
        }

        /**
         * @param defaultBranchProtectionDefaults The default branch protection defaults
         * 
         * @return builder
         * 
         */
        public Builder defaultBranchProtectionDefaults(GroupDefaultBranchProtectionDefaultsArgs defaultBranchProtectionDefaults) {
            return defaultBranchProtectionDefaults(Output.of(defaultBranchProtectionDefaults));
        }

        /**
         * @param description The group's description.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description The group's description.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param emailsEnabled Enable email notifications.
         * 
         * @return builder
         * 
         */
        public Builder emailsEnabled(@Nullable Output emailsEnabled) {
            $.emailsEnabled = emailsEnabled;
            return this;
        }

        /**
         * @param emailsEnabled Enable email notifications.
         * 
         * @return builder
         * 
         */
        public Builder emailsEnabled(Boolean emailsEnabled) {
            return emailsEnabled(Output.of(emailsEnabled));
        }

        /**
         * @param extraSharedRunnersMinutesLimit Can be set by administrators only. Additional CI/CD minutes for this group.
         * 
         * @return builder
         * 
         */
        public Builder extraSharedRunnersMinutesLimit(@Nullable Output extraSharedRunnersMinutesLimit) {
            $.extraSharedRunnersMinutesLimit = extraSharedRunnersMinutesLimit;
            return this;
        }

        /**
         * @param extraSharedRunnersMinutesLimit Can be set by administrators only. Additional CI/CD minutes for this group.
         * 
         * @return builder
         * 
         */
        public Builder extraSharedRunnersMinutesLimit(Integer extraSharedRunnersMinutesLimit) {
            return extraSharedRunnersMinutesLimit(Output.of(extraSharedRunnersMinutesLimit));
        }

        /**
         * @param fullName The full name of the group.
         * 
         * @return builder
         * 
         */
        public Builder fullName(@Nullable Output fullName) {
            $.fullName = fullName;
            return this;
        }

        /**
         * @param fullName The full name of the group.
         * 
         * @return builder
         * 
         */
        public Builder fullName(String fullName) {
            return fullName(Output.of(fullName));
        }

        /**
         * @param fullPath The full path of the group.
         * 
         * @return builder
         * 
         */
        public Builder fullPath(@Nullable Output fullPath) {
            $.fullPath = fullPath;
            return this;
        }

        /**
         * @param fullPath The full path of the group.
         * 
         * @return builder
         * 
         */
        public Builder fullPath(String fullPath) {
            return fullPath(Output.of(fullPath));
        }

        /**
         * @param ipRestrictionRanges A list of IP addresses or subnet masks to restrict group access. Will be concatenated together into a comma separated string. Only allowed on top level groups.
         * 
         * @return builder
         * 
         */
        public Builder ipRestrictionRanges(@Nullable Output> ipRestrictionRanges) {
            $.ipRestrictionRanges = ipRestrictionRanges;
            return this;
        }

        /**
         * @param ipRestrictionRanges A list of IP addresses or subnet masks to restrict group access. Will be concatenated together into a comma separated string. Only allowed on top level groups.
         * 
         * @return builder
         * 
         */
        public Builder ipRestrictionRanges(List ipRestrictionRanges) {
            return ipRestrictionRanges(Output.of(ipRestrictionRanges));
        }

        /**
         * @param ipRestrictionRanges A list of IP addresses or subnet masks to restrict group access. Will be concatenated together into a comma separated string. Only allowed on top level groups.
         * 
         * @return builder
         * 
         */
        public Builder ipRestrictionRanges(String... ipRestrictionRanges) {
            return ipRestrictionRanges(List.of(ipRestrictionRanges));
        }

        /**
         * @param lfsEnabled Enable/disable Large File Storage (LFS) for the projects in this group.
         * 
         * @return builder
         * 
         */
        public Builder lfsEnabled(@Nullable Output lfsEnabled) {
            $.lfsEnabled = lfsEnabled;
            return this;
        }

        /**
         * @param lfsEnabled Enable/disable Large File Storage (LFS) for the projects in this group.
         * 
         * @return builder
         * 
         */
        public Builder lfsEnabled(Boolean lfsEnabled) {
            return lfsEnabled(Output.of(lfsEnabled));
        }

        /**
         * @param membershipLock Users cannot be added to projects in this group.
         * 
         * @return builder
         * 
         */
        public Builder membershipLock(@Nullable Output membershipLock) {
            $.membershipLock = membershipLock;
            return this;
        }

        /**
         * @param membershipLock Users cannot be added to projects in this group.
         * 
         * @return builder
         * 
         */
        public Builder membershipLock(Boolean membershipLock) {
            return membershipLock(Output.of(membershipLock));
        }

        /**
         * @param mentionsDisabled Disable the capability of a group from getting mentioned.
         * 
         * @return builder
         * 
         */
        public Builder mentionsDisabled(@Nullable Output mentionsDisabled) {
            $.mentionsDisabled = mentionsDisabled;
            return this;
        }

        /**
         * @param mentionsDisabled Disable the capability of a group from getting mentioned.
         * 
         * @return builder
         * 
         */
        public Builder mentionsDisabled(Boolean mentionsDisabled) {
            return mentionsDisabled(Output.of(mentionsDisabled));
        }

        /**
         * @param name The name of the group.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the group.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param parentId Id of the parent group (creates a nested group).
         * 
         * @return builder
         * 
         */
        public Builder parentId(@Nullable Output parentId) {
            $.parentId = parentId;
            return this;
        }

        /**
         * @param parentId Id of the parent group (creates a nested group).
         * 
         * @return builder
         * 
         */
        public Builder parentId(Integer parentId) {
            return parentId(Output.of(parentId));
        }

        /**
         * @param path The path of the group.
         * 
         * @return builder
         * 
         */
        public Builder path(@Nullable Output path) {
            $.path = path;
            return this;
        }

        /**
         * @param path The path of the group.
         * 
         * @return builder
         * 
         */
        public Builder path(String path) {
            return path(Output.of(path));
        }

        /**
         * @param permanentlyRemoveOnDelete Whether the group should be permanently removed during a `delete` operation. This only works with subgroups. Must be configured via an `apply` before the `destroy` is run.
         * 
         * @return builder
         * 
         */
        public Builder permanentlyRemoveOnDelete(@Nullable Output permanentlyRemoveOnDelete) {
            $.permanentlyRemoveOnDelete = permanentlyRemoveOnDelete;
            return this;
        }

        /**
         * @param permanentlyRemoveOnDelete Whether the group should be permanently removed during a `delete` operation. This only works with subgroups. Must be configured via an `apply` before the `destroy` is run.
         * 
         * @return builder
         * 
         */
        public Builder permanentlyRemoveOnDelete(Boolean permanentlyRemoveOnDelete) {
            return permanentlyRemoveOnDelete(Output.of(permanentlyRemoveOnDelete));
        }

        /**
         * @param preventForkingOutsideGroup Defaults to false. When enabled, users can not fork projects from this group to external namespaces.
         * 
         * @return builder
         * 
         */
        public Builder preventForkingOutsideGroup(@Nullable Output preventForkingOutsideGroup) {
            $.preventForkingOutsideGroup = preventForkingOutsideGroup;
            return this;
        }

        /**
         * @param preventForkingOutsideGroup Defaults to false. When enabled, users can not fork projects from this group to external namespaces.
         * 
         * @return builder
         * 
         */
        public Builder preventForkingOutsideGroup(Boolean preventForkingOutsideGroup) {
            return preventForkingOutsideGroup(Output.of(preventForkingOutsideGroup));
        }

        /**
         * @param projectCreationLevel Determine if developers can create projects in the group. Valid values are: `noone`, `maintainer`, `developer`
         * 
         * @return builder
         * 
         */
        public Builder projectCreationLevel(@Nullable Output projectCreationLevel) {
            $.projectCreationLevel = projectCreationLevel;
            return this;
        }

        /**
         * @param projectCreationLevel Determine if developers can create projects in the group. Valid values are: `noone`, `maintainer`, `developer`
         * 
         * @return builder
         * 
         */
        public Builder projectCreationLevel(String projectCreationLevel) {
            return projectCreationLevel(Output.of(projectCreationLevel));
        }

        /**
         * @param pushRules Push rules for the group.
         * 
         * @return builder
         * 
         */
        public Builder pushRules(@Nullable Output pushRules) {
            $.pushRules = pushRules;
            return this;
        }

        /**
         * @param pushRules Push rules for the group.
         * 
         * @return builder
         * 
         */
        public Builder pushRules(GroupPushRulesArgs pushRules) {
            return pushRules(Output.of(pushRules));
        }

        /**
         * @param requestAccessEnabled Allow users to request member access.
         * 
         * @return builder
         * 
         */
        public Builder requestAccessEnabled(@Nullable Output requestAccessEnabled) {
            $.requestAccessEnabled = requestAccessEnabled;
            return this;
        }

        /**
         * @param requestAccessEnabled Allow users to request member access.
         * 
         * @return builder
         * 
         */
        public Builder requestAccessEnabled(Boolean requestAccessEnabled) {
            return requestAccessEnabled(Output.of(requestAccessEnabled));
        }

        /**
         * @param requireTwoFactorAuthentication Require all users in this group to setup Two-factor authentication.
         * 
         * @return builder
         * 
         */
        public Builder requireTwoFactorAuthentication(@Nullable Output requireTwoFactorAuthentication) {
            $.requireTwoFactorAuthentication = requireTwoFactorAuthentication;
            return this;
        }

        /**
         * @param requireTwoFactorAuthentication Require all users in this group to setup Two-factor authentication.
         * 
         * @return builder
         * 
         */
        public Builder requireTwoFactorAuthentication(Boolean requireTwoFactorAuthentication) {
            return requireTwoFactorAuthentication(Output.of(requireTwoFactorAuthentication));
        }

        /**
         * @param runnersToken The group level registration token to use during runner setup.
         * 
         * @return builder
         * 
         */
        public Builder runnersToken(@Nullable Output runnersToken) {
            $.runnersToken = runnersToken;
            return this;
        }

        /**
         * @param runnersToken The group level registration token to use during runner setup.
         * 
         * @return builder
         * 
         */
        public Builder runnersToken(String runnersToken) {
            return runnersToken(Output.of(runnersToken));
        }

        /**
         * @param shareWithGroupLock Prevent sharing a project with another group within this group.
         * 
         * @return builder
         * 
         */
        public Builder shareWithGroupLock(@Nullable Output shareWithGroupLock) {
            $.shareWithGroupLock = shareWithGroupLock;
            return this;
        }

        /**
         * @param shareWithGroupLock Prevent sharing a project with another group within this group.
         * 
         * @return builder
         * 
         */
        public Builder shareWithGroupLock(Boolean shareWithGroupLock) {
            return shareWithGroupLock(Output.of(shareWithGroupLock));
        }

        /**
         * @param sharedRunnersMinutesLimit Can be set by administrators only. Maximum number of monthly CI/CD minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or > 0.
         * 
         * @return builder
         * 
         */
        public Builder sharedRunnersMinutesLimit(@Nullable Output sharedRunnersMinutesLimit) {
            $.sharedRunnersMinutesLimit = sharedRunnersMinutesLimit;
            return this;
        }

        /**
         * @param sharedRunnersMinutesLimit Can be set by administrators only. Maximum number of monthly CI/CD minutes for this group. Can be nil (default; inherit system default), 0 (unlimited), or > 0.
         * 
         * @return builder
         * 
         */
        public Builder sharedRunnersMinutesLimit(Integer sharedRunnersMinutesLimit) {
            return sharedRunnersMinutesLimit(Output.of(sharedRunnersMinutesLimit));
        }

        /**
         * @param sharedRunnersSetting Enable or disable shared runners for a group’s subgroups and projects. Valid values are: `enabled`, `disabled_and_overridable`, `disabled_and_unoverridable`, `disabled_with_override`.
         * 
         * @return builder
         * 
         */
        public Builder sharedRunnersSetting(@Nullable Output sharedRunnersSetting) {
            $.sharedRunnersSetting = sharedRunnersSetting;
            return this;
        }

        /**
         * @param sharedRunnersSetting Enable or disable shared runners for a group’s subgroups and projects. Valid values are: `enabled`, `disabled_and_overridable`, `disabled_and_unoverridable`, `disabled_with_override`.
         * 
         * @return builder
         * 
         */
        public Builder sharedRunnersSetting(String sharedRunnersSetting) {
            return sharedRunnersSetting(Output.of(sharedRunnersSetting));
        }

        /**
         * @param subgroupCreationLevel Allowed to create subgroups. Valid values are: `owner`, `maintainer`.
         * 
         * @return builder
         * 
         */
        public Builder subgroupCreationLevel(@Nullable Output subgroupCreationLevel) {
            $.subgroupCreationLevel = subgroupCreationLevel;
            return this;
        }

        /**
         * @param subgroupCreationLevel Allowed to create subgroups. Valid values are: `owner`, `maintainer`.
         * 
         * @return builder
         * 
         */
        public Builder subgroupCreationLevel(String subgroupCreationLevel) {
            return subgroupCreationLevel(Output.of(subgroupCreationLevel));
        }

        /**
         * @param twoFactorGracePeriod Defaults to 48. Time before Two-factor authentication is enforced (in hours).
         * 
         * @return builder
         * 
         */
        public Builder twoFactorGracePeriod(@Nullable Output twoFactorGracePeriod) {
            $.twoFactorGracePeriod = twoFactorGracePeriod;
            return this;
        }

        /**
         * @param twoFactorGracePeriod Defaults to 48. Time before Two-factor authentication is enforced (in hours).
         * 
         * @return builder
         * 
         */
        public Builder twoFactorGracePeriod(Integer twoFactorGracePeriod) {
            return twoFactorGracePeriod(Output.of(twoFactorGracePeriod));
        }

        /**
         * @param visibilityLevel The group's visibility. Can be `private`, `internal`, or `public`. Valid values are: `private`, `internal`, `public`.
         * 
         * @return builder
         * 
         */
        public Builder visibilityLevel(@Nullable Output visibilityLevel) {
            $.visibilityLevel = visibilityLevel;
            return this;
        }

        /**
         * @param visibilityLevel The group's visibility. Can be `private`, `internal`, or `public`. Valid values are: `private`, `internal`, `public`.
         * 
         * @return builder
         * 
         */
        public Builder visibilityLevel(String visibilityLevel) {
            return visibilityLevel(Output.of(visibilityLevel));
        }

        /**
         * @param webUrl Web URL of the group.
         * 
         * @return builder
         * 
         */
        public Builder webUrl(@Nullable Output webUrl) {
            $.webUrl = webUrl;
            return this;
        }

        /**
         * @param webUrl Web URL of the group.
         * 
         * @return builder
         * 
         */
        public Builder webUrl(String webUrl) {
            return webUrl(Output.of(webUrl));
        }

        /**
         * @param wikiAccessLevel The group's wiki access level. Only available on Premium and Ultimate plans. Valid values are `disabled`, `private`, `enabled`.
         * 
         * @return builder
         * 
         */
        public Builder wikiAccessLevel(@Nullable Output wikiAccessLevel) {
            $.wikiAccessLevel = wikiAccessLevel;
            return this;
        }

        /**
         * @param wikiAccessLevel The group's wiki access level. Only available on Premium and Ultimate plans. Valid values are `disabled`, `private`, `enabled`.
         * 
         * @return builder
         * 
         */
        public Builder wikiAccessLevel(String wikiAccessLevel) {
            return wikiAccessLevel(Output.of(wikiAccessLevel));
        }

        public GroupState build() {
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy