// *** 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.gcp.iam.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final WorkforcePoolState Empty = new WorkforcePoolState();

    /**
     * A user-specified description of the pool. Cannot exceed 256 characters.
     * 
     */
    @Import(name="description")
    private @Nullable Output<String> description;

    /**
     * @return A user-specified description of the pool. Cannot exceed 256 characters.
     * 
     */
    public Optional<Output<String>> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * Whether the pool is disabled. You cannot use a disabled pool to exchange tokens,
     * or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again.
     * 
     */
    @Import(name="disabled")
    private @Nullable Output<Boolean> disabled;

    /**
     * @return Whether the pool is disabled. You cannot use a disabled pool to exchange tokens,
     * or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again.
     * 
     */
    public Optional<Output<Boolean>> disabled() {
        return Optional.ofNullable(this.disabled);
    }

    /**
     * A user-specified display name of the pool in Google Cloud Console. Cannot exceed 32 characters.
     * 
     */
    @Import(name="displayName")
    private @Nullable Output<String> displayName;

    /**
     * @return A user-specified display name of the pool in Google Cloud Console. Cannot exceed 32 characters.
     * 
     */
    public Optional<Output<String>> displayName() {
        return Optional.ofNullable(this.displayName);
    }

    /**
     * The location for the resource.
     * 
     */
    @Import(name="location")
    private @Nullable Output<String> location;

    /**
     * @return The location for the resource.
     * 
     */
    public Optional<Output<String>> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * Output only. The resource name of the pool.
     * Format: `locations/{location}/workforcePools/{workforcePoolId}`
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return Output only. The resource name of the pool.
     * Format: `locations/{location}/workforcePools/{workforcePoolId}`
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Immutable. The resource name of the parent. Format: `organizations/{org-id}`.
     * 
     * ***
     * 
     */
    @Import(name="parent")
    private @Nullable Output<String> parent;

    /**
     * @return Immutable. The resource name of the parent. Format: `organizations/{org-id}`.
     * 
     * ***
     * 
     */
    public Optional<Output<String>> parent() {
        return Optional.ofNullable(this.parent);
    }

    /**
     * Duration that the Google Cloud access tokens, console sign-in sessions,
     * and `gcloud` sign-in sessions from this pool are valid.
     * Must be greater than 15 minutes (900s) and less than 12 hours (43200s).
     * If `sessionDuration` is not configured, minted credentials have a default duration of one hour (3600s).
     * A duration in seconds with up to nine fractional digits, ending with &#39;`s`&#39;. Example: &#34;`3.5s`&#34;.
     * 
     */
    @Import(name="sessionDuration")
    private @Nullable Output<String> sessionDuration;

    /**
     * @return Duration that the Google Cloud access tokens, console sign-in sessions,
     * and `gcloud` sign-in sessions from this pool are valid.
     * Must be greater than 15 minutes (900s) and less than 12 hours (43200s).
     * If `sessionDuration` is not configured, minted credentials have a default duration of one hour (3600s).
     * A duration in seconds with up to nine fractional digits, ending with &#39;`s`&#39;. Example: &#34;`3.5s`&#34;.
     * 
     */
    public Optional<Output<String>> sessionDuration() {
        return Optional.ofNullable(this.sessionDuration);
    }

    /**
     * Output only. The state of the pool.
     * * STATE_UNSPECIFIED: State unspecified.
     * * ACTIVE: The pool is active, and may be used in Google Cloud policies.
     * * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted
     *   after approximately 30 days. You can restore a soft-deleted pool using
     *   [workforcePools.undelete](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools/undelete#google.iam.admin.v1.WorkforcePools.UndeleteWorkforcePool).
     *   You cannot reuse the ID of a soft-deleted pool until it is permanently deleted.
     *   While a pool is deleted, you cannot use it to exchange tokens, or use
     *   existing tokens to access resources. If the pool is undeleted, existing
     *   tokens grant access again.
     * 
     */
    @Import(name="state")
    private @Nullable Output<String> state;

    /**
     * @return Output only. The state of the pool.
     * * STATE_UNSPECIFIED: State unspecified.
     * * ACTIVE: The pool is active, and may be used in Google Cloud policies.
     * * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted
     *   after approximately 30 days. You can restore a soft-deleted pool using
     *   [workforcePools.undelete](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools/undelete#google.iam.admin.v1.WorkforcePools.UndeleteWorkforcePool).
     *   You cannot reuse the ID of a soft-deleted pool until it is permanently deleted.
     *   While a pool is deleted, you cannot use it to exchange tokens, or use
     *   existing tokens to access resources. If the pool is undeleted, existing
     *   tokens grant access again.
     * 
     */
    public Optional<Output<String>> state() {
        return Optional.ofNullable(this.state);
    }

    /**
     * The name of the pool. The ID must be a globally unique string of 6 to 63 lowercase letters,
     * digits, or hyphens. It must start with a letter, and cannot have a trailing hyphen.
     * The prefix `gcp-` is reserved for use by Google, and may not be specified.
     * 
     */
    @Import(name="workforcePoolId")
    private @Nullable Output<String> workforcePoolId;

    /**
     * @return The name of the pool. The ID must be a globally unique string of 6 to 63 lowercase letters,
     * digits, or hyphens. It must start with a letter, and cannot have a trailing hyphen.
     * The prefix `gcp-` is reserved for use by Google, and may not be specified.
     * 
     */
    public Optional<Output<String>> workforcePoolId() {
        return Optional.ofNullable(this.workforcePoolId);
    }

    private WorkforcePoolState() {}

    private WorkforcePoolState(WorkforcePoolState $) {
        this.description = $.description;
        this.disabled = $.disabled;
        this.displayName = $.displayName;
        this.location = $.location;
        this.name = $.name;
        this.parent = $.parent;
        this.sessionDuration = $.sessionDuration;
        this.state = $.state;
        this.workforcePoolId = $.workforcePoolId;
    }

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

    public static final class Builder {
        private WorkforcePoolState $;

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

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

        /**
         * @param description A user-specified description of the pool. Cannot exceed 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output<String> description) {
            $.description = description;
            return this;
        }

        /**
         * @param description A user-specified description of the pool. Cannot exceed 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param disabled Whether the pool is disabled. You cannot use a disabled pool to exchange tokens,
         * or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again.
         * 
         * @return builder
         * 
         */
        public Builder disabled(@Nullable Output<Boolean> disabled) {
            $.disabled = disabled;
            return this;
        }

        /**
         * @param disabled Whether the pool is disabled. You cannot use a disabled pool to exchange tokens,
         * or use existing tokens to access resources. If the pool is re-enabled, existing tokens grant access again.
         * 
         * @return builder
         * 
         */
        public Builder disabled(Boolean disabled) {
            return disabled(Output.of(disabled));
        }

        /**
         * @param displayName A user-specified display name of the pool in Google Cloud Console. Cannot exceed 32 characters.
         * 
         * @return builder
         * 
         */
        public Builder displayName(@Nullable Output<String> displayName) {
            $.displayName = displayName;
            return this;
        }

        /**
         * @param displayName A user-specified display name of the pool in Google Cloud Console. Cannot exceed 32 characters.
         * 
         * @return builder
         * 
         */
        public Builder displayName(String displayName) {
            return displayName(Output.of(displayName));
        }

        /**
         * @param location The location for the resource.
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output<String> location) {
            $.location = location;
            return this;
        }

        /**
         * @param location The location for the resource.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param name Output only. The resource name of the pool.
         * Format: `locations/{location}/workforcePools/{workforcePoolId}`
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name Output only. The resource name of the pool.
         * Format: `locations/{location}/workforcePools/{workforcePoolId}`
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param parent Immutable. The resource name of the parent. Format: `organizations/{org-id}`.
         * 
         * ***
         * 
         * @return builder
         * 
         */
        public Builder parent(@Nullable Output<String> parent) {
            $.parent = parent;
            return this;
        }

        /**
         * @param parent Immutable. The resource name of the parent. Format: `organizations/{org-id}`.
         * 
         * ***
         * 
         * @return builder
         * 
         */
        public Builder parent(String parent) {
            return parent(Output.of(parent));
        }

        /**
         * @param sessionDuration Duration that the Google Cloud access tokens, console sign-in sessions,
         * and `gcloud` sign-in sessions from this pool are valid.
         * Must be greater than 15 minutes (900s) and less than 12 hours (43200s).
         * If `sessionDuration` is not configured, minted credentials have a default duration of one hour (3600s).
         * A duration in seconds with up to nine fractional digits, ending with &#39;`s`&#39;. Example: &#34;`3.5s`&#34;.
         * 
         * @return builder
         * 
         */
        public Builder sessionDuration(@Nullable Output<String> sessionDuration) {
            $.sessionDuration = sessionDuration;
            return this;
        }

        /**
         * @param sessionDuration Duration that the Google Cloud access tokens, console sign-in sessions,
         * and `gcloud` sign-in sessions from this pool are valid.
         * Must be greater than 15 minutes (900s) and less than 12 hours (43200s).
         * If `sessionDuration` is not configured, minted credentials have a default duration of one hour (3600s).
         * A duration in seconds with up to nine fractional digits, ending with &#39;`s`&#39;. Example: &#34;`3.5s`&#34;.
         * 
         * @return builder
         * 
         */
        public Builder sessionDuration(String sessionDuration) {
            return sessionDuration(Output.of(sessionDuration));
        }

        /**
         * @param state Output only. The state of the pool.
         * * STATE_UNSPECIFIED: State unspecified.
         * * ACTIVE: The pool is active, and may be used in Google Cloud policies.
         * * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted
         *   after approximately 30 days. You can restore a soft-deleted pool using
         *   [workforcePools.undelete](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools/undelete#google.iam.admin.v1.WorkforcePools.UndeleteWorkforcePool).
         *   You cannot reuse the ID of a soft-deleted pool until it is permanently deleted.
         *   While a pool is deleted, you cannot use it to exchange tokens, or use
         *   existing tokens to access resources. If the pool is undeleted, existing
         *   tokens grant access again.
         * 
         * @return builder
         * 
         */
        public Builder state(@Nullable Output<String> state) {
            $.state = state;
            return this;
        }

        /**
         * @param state Output only. The state of the pool.
         * * STATE_UNSPECIFIED: State unspecified.
         * * ACTIVE: The pool is active, and may be used in Google Cloud policies.
         * * DELETED: The pool is soft-deleted. Soft-deleted pools are permanently deleted
         *   after approximately 30 days. You can restore a soft-deleted pool using
         *   [workforcePools.undelete](https://cloud.google.com/iam/docs/reference/rest/v1/locations.workforcePools/undelete#google.iam.admin.v1.WorkforcePools.UndeleteWorkforcePool).
         *   You cannot reuse the ID of a soft-deleted pool until it is permanently deleted.
         *   While a pool is deleted, you cannot use it to exchange tokens, or use
         *   existing tokens to access resources. If the pool is undeleted, existing
         *   tokens grant access again.
         * 
         * @return builder
         * 
         */
        public Builder state(String state) {
            return state(Output.of(state));
        }

        /**
         * @param workforcePoolId The name of the pool. The ID must be a globally unique string of 6 to 63 lowercase letters,
         * digits, or hyphens. It must start with a letter, and cannot have a trailing hyphen.
         * The prefix `gcp-` is reserved for use by Google, and may not be specified.
         * 
         * @return builder
         * 
         */
        public Builder workforcePoolId(@Nullable Output<String> workforcePoolId) {
            $.workforcePoolId = workforcePoolId;
            return this;
        }

        /**
         * @param workforcePoolId The name of the pool. The ID must be a globally unique string of 6 to 63 lowercase letters,
         * digits, or hyphens. It must start with a letter, and cannot have a trailing hyphen.
         * The prefix `gcp-` is reserved for use by Google, and may not be specified.
         * 
         * @return builder
         * 
         */
        public Builder workforcePoolId(String workforcePoolId) {
            return workforcePoolId(Output.of(workforcePoolId));
        }

        public WorkforcePoolState build() {
            return $;
        }
    }

}
