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

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


public final class GetTunnelInstanceIamPolicyPlainArgs extends com.pulumi.resources.InvokeArgs {

    public static final GetTunnelInstanceIamPolicyPlainArgs Empty = new GetTunnelInstanceIamPolicyPlainArgs();

    /**
     * Used to find the parent resource to bind the IAM policy to
     * 
     */
    @Import(name="instance", required=true)
    private String instance;

    /**
     * @return Used to find the parent resource to bind the IAM policy to
     * 
     */
    public String instance() {
        return this.instance;
    }

    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
     * 
     */
    @Import(name="project")
    private @Nullable String project;

    /**
     * @return The ID of the project in which the resource belongs.
     * If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
     * 
     */
    public Optional<String> project() {
        return Optional.ofNullable(this.project);
    }

    @Import(name="zone")
    private @Nullable String zone;

    public Optional<String> zone() {
        return Optional.ofNullable(this.zone);
    }

    private GetTunnelInstanceIamPolicyPlainArgs() {}

    private GetTunnelInstanceIamPolicyPlainArgs(GetTunnelInstanceIamPolicyPlainArgs $) {
        this.instance = $.instance;
        this.project = $.project;
        this.zone = $.zone;
    }

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

    public static final class Builder {
        private GetTunnelInstanceIamPolicyPlainArgs $;

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

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

        /**
         * @param instance Used to find the parent resource to bind the IAM policy to
         * 
         * @return builder
         * 
         */
        public Builder instance(String instance) {
            $.instance = instance;
            return this;
        }

        /**
         * @param project The ID of the project in which the resource belongs.
         * If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
         * 
         * @return builder
         * 
         */
        public Builder project(@Nullable String project) {
            $.project = project;
            return this;
        }

        public Builder zone(@Nullable String zone) {
            $.zone = zone;
            return this;
        }

        public GetTunnelInstanceIamPolicyPlainArgs build() {
            $.instance = Objects.requireNonNull($.instance, "expected parameter 'instance' to be non-null");
            return $;
        }
    }

}
