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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.util.Objects;


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

    public static final GetAccountSASPermissionsArgs Empty = new GetAccountSASPermissionsArgs();

    /**
     * Should Add permissions be enabled for this SAS?
     * 
     */
    @Import(name="add", required=true)
    private Output<Boolean> add;

    /**
     * @return Should Add permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> add() {
        return this.add;
    }

    /**
     * Should Create permissions be enabled for this SAS?
     * 
     */
    @Import(name="create", required=true)
    private Output<Boolean> create;

    /**
     * @return Should Create permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> create() {
        return this.create;
    }

    /**
     * Should Delete permissions be enabled for this SAS?
     * 
     */
    @Import(name="delete", required=true)
    private Output<Boolean> delete;

    /**
     * @return Should Delete permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> delete() {
        return this.delete;
    }

    /**
     * Should Filter by Index Tags permissions be enabled for this SAS?
     * 
     * Refer to the [SAS creation reference from Azure](https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas)
     * for additional details on the fields above.
     * 
     */
    @Import(name="filter", required=true)
    private Output<Boolean> filter;

    /**
     * @return Should Filter by Index Tags permissions be enabled for this SAS?
     * 
     * Refer to the [SAS creation reference from Azure](https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas)
     * for additional details on the fields above.
     * 
     */
    public Output<Boolean> filter() {
        return this.filter;
    }

    /**
     * Should List permissions be enabled for this SAS?
     * 
     */
    @Import(name="list", required=true)
    private Output<Boolean> list;

    /**
     * @return Should List permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> list() {
        return this.list;
    }

    /**
     * Should Process permissions be enabled for this SAS?
     * 
     */
    @Import(name="process", required=true)
    private Output<Boolean> process;

    /**
     * @return Should Process permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> process() {
        return this.process;
    }

    /**
     * Should Read permissions be enabled for this SAS?
     * 
     */
    @Import(name="read", required=true)
    private Output<Boolean> read;

    /**
     * @return Should Read permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> read() {
        return this.read;
    }

    /**
     * Should Get / Set Index Tags permissions be enabled for this SAS?
     * 
     */
    @Import(name="tag", required=true)
    private Output<Boolean> tag;

    /**
     * @return Should Get / Set Index Tags permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> tag() {
        return this.tag;
    }

    /**
     * Should Update permissions be enabled for this SAS?
     * 
     */
    @Import(name="update", required=true)
    private Output<Boolean> update;

    /**
     * @return Should Update permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> update() {
        return this.update;
    }

    /**
     * Should Write permissions be enabled for this SAS?
     * 
     */
    @Import(name="write", required=true)
    private Output<Boolean> write;

    /**
     * @return Should Write permissions be enabled for this SAS?
     * 
     */
    public Output<Boolean> write() {
        return this.write;
    }

    private GetAccountSASPermissionsArgs() {}

    private GetAccountSASPermissionsArgs(GetAccountSASPermissionsArgs $) {
        this.add = $.add;
        this.create = $.create;
        this.delete = $.delete;
        this.filter = $.filter;
        this.list = $.list;
        this.process = $.process;
        this.read = $.read;
        this.tag = $.tag;
        this.update = $.update;
        this.write = $.write;
    }

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

    public static final class Builder {
        private GetAccountSASPermissionsArgs $;

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

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

        /**
         * @param add Should Add permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder add(Output<Boolean> add) {
            $.add = add;
            return this;
        }

        /**
         * @param add Should Add permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder add(Boolean add) {
            return add(Output.of(add));
        }

        /**
         * @param create Should Create permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder create(Output<Boolean> create) {
            $.create = create;
            return this;
        }

        /**
         * @param create Should Create permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder create(Boolean create) {
            return create(Output.of(create));
        }

        /**
         * @param delete Should Delete permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder delete(Output<Boolean> delete) {
            $.delete = delete;
            return this;
        }

        /**
         * @param delete Should Delete permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder delete(Boolean delete) {
            return delete(Output.of(delete));
        }

        /**
         * @param filter Should Filter by Index Tags permissions be enabled for this SAS?
         * 
         * Refer to the [SAS creation reference from Azure](https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas)
         * for additional details on the fields above.
         * 
         * @return builder
         * 
         */
        public Builder filter(Output<Boolean> filter) {
            $.filter = filter;
            return this;
        }

        /**
         * @param filter Should Filter by Index Tags permissions be enabled for this SAS?
         * 
         * Refer to the [SAS creation reference from Azure](https://docs.microsoft.com/rest/api/storageservices/constructing-an-account-sas)
         * for additional details on the fields above.
         * 
         * @return builder
         * 
         */
        public Builder filter(Boolean filter) {
            return filter(Output.of(filter));
        }

        /**
         * @param list Should List permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder list(Output<Boolean> list) {
            $.list = list;
            return this;
        }

        /**
         * @param list Should List permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder list(Boolean list) {
            return list(Output.of(list));
        }

        /**
         * @param process Should Process permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder process(Output<Boolean> process) {
            $.process = process;
            return this;
        }

        /**
         * @param process Should Process permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder process(Boolean process) {
            return process(Output.of(process));
        }

        /**
         * @param read Should Read permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder read(Output<Boolean> read) {
            $.read = read;
            return this;
        }

        /**
         * @param read Should Read permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder read(Boolean read) {
            return read(Output.of(read));
        }

        /**
         * @param tag Should Get / Set Index Tags permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder tag(Output<Boolean> tag) {
            $.tag = tag;
            return this;
        }

        /**
         * @param tag Should Get / Set Index Tags permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder tag(Boolean tag) {
            return tag(Output.of(tag));
        }

        /**
         * @param update Should Update permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder update(Output<Boolean> update) {
            $.update = update;
            return this;
        }

        /**
         * @param update Should Update permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder update(Boolean update) {
            return update(Output.of(update));
        }

        /**
         * @param write Should Write permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder write(Output<Boolean> write) {
            $.write = write;
            return this;
        }

        /**
         * @param write Should Write permissions be enabled for this SAS?
         * 
         * @return builder
         * 
         */
        public Builder write(Boolean write) {
            return write(Output.of(write));
        }

        public GetAccountSASPermissionsArgs build() {
            $.add = Objects.requireNonNull($.add, "expected parameter 'add' to be non-null");
            $.create = Objects.requireNonNull($.create, "expected parameter 'create' to be non-null");
            $.delete = Objects.requireNonNull($.delete, "expected parameter 'delete' to be non-null");
            $.filter = Objects.requireNonNull($.filter, "expected parameter 'filter' to be non-null");
            $.list = Objects.requireNonNull($.list, "expected parameter 'list' to be non-null");
            $.process = Objects.requireNonNull($.process, "expected parameter 'process' to be non-null");
            $.read = Objects.requireNonNull($.read, "expected parameter 'read' to be non-null");
            $.tag = Objects.requireNonNull($.tag, "expected parameter 'tag' to be non-null");
            $.update = Objects.requireNonNull($.update, "expected parameter 'update' to be non-null");
            $.write = Objects.requireNonNull($.write, "expected parameter 'write' to be non-null");
            return $;
        }
    }

}
