// *** 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.bigqueryanalyticshub.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 GetDataExchangeIamPolicyPlainArgs extends com.pulumi.resources.InvokeArgs {

    public static final GetDataExchangeIamPolicyPlainArgs Empty = new GetDataExchangeIamPolicyPlainArgs();

    /**
     * The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Used to find the parent resource to bind the IAM policy to
     * 
     */
    @Import(name="dataExchangeId", required=true)
    private String dataExchangeId;

    /**
     * @return The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Used to find the parent resource to bind the IAM policy to
     * 
     */
    public String dataExchangeId() {
        return this.dataExchangeId;
    }

    /**
     * The name of the location this data exchange.
     * Used to find the parent resource to bind the IAM policy to
     * 
     */
    @Import(name="location")
    private @Nullable String location;

    /**
     * @return The name of the location this data exchange.
     * Used to find the parent resource to bind the IAM policy to
     * 
     */
    public Optional<String> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * 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);
    }

    private GetDataExchangeIamPolicyPlainArgs() {}

    private GetDataExchangeIamPolicyPlainArgs(GetDataExchangeIamPolicyPlainArgs $) {
        this.dataExchangeId = $.dataExchangeId;
        this.location = $.location;
        this.project = $.project;
    }

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

    public static final class Builder {
        private GetDataExchangeIamPolicyPlainArgs $;

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

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

        /**
         * @param dataExchangeId The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Used to find the parent resource to bind the IAM policy to
         * 
         * @return builder
         * 
         */
        public Builder dataExchangeId(String dataExchangeId) {
            $.dataExchangeId = dataExchangeId;
            return this;
        }

        /**
         * @param location The name of the location this data exchange.
         * Used to find the parent resource to bind the IAM policy to
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable String location) {
            $.location = location;
            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 GetDataExchangeIamPolicyPlainArgs build() {
            $.dataExchangeId = Objects.requireNonNull($.dataExchangeId, "expected parameter 'dataExchangeId' to be non-null");
            return $;
        }
    }

}
