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

import com.pulumi.aws.cloudfront.inputs.FieldLevelEncryptionConfigQueryArgProfileConfigQueryArgProfilesArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final FieldLevelEncryptionConfigQueryArgProfileConfigArgs Empty = new FieldLevelEncryptionConfigQueryArgProfileConfigArgs();

    /**
     * Flag to set if you want a request to be forwarded to the origin even if the profile specified by the field-level encryption query argument, fle-profile, is unknown.
     * 
     */
    @Import(name="forwardWhenQueryArgProfileIsUnknown", required=true)
    private Output<Boolean> forwardWhenQueryArgProfileIsUnknown;

    /**
     * @return Flag to set if you want a request to be forwarded to the origin even if the profile specified by the field-level encryption query argument, fle-profile, is unknown.
     * 
     */
    public Output<Boolean> forwardWhenQueryArgProfileIsUnknown() {
        return this.forwardWhenQueryArgProfileIsUnknown;
    }

    /**
     * Object that contains an attribute `items` that contains the list ofrofiles specified for query argument-profile mapping for field-level encryption. see Query Arg Profile.
     * 
     */
    @Import(name="queryArgProfiles")
    private @Nullable Output<FieldLevelEncryptionConfigQueryArgProfileConfigQueryArgProfilesArgs> queryArgProfiles;

    /**
     * @return Object that contains an attribute `items` that contains the list ofrofiles specified for query argument-profile mapping for field-level encryption. see Query Arg Profile.
     * 
     */
    public Optional<Output<FieldLevelEncryptionConfigQueryArgProfileConfigQueryArgProfilesArgs>> queryArgProfiles() {
        return Optional.ofNullable(this.queryArgProfiles);
    }

    private FieldLevelEncryptionConfigQueryArgProfileConfigArgs() {}

    private FieldLevelEncryptionConfigQueryArgProfileConfigArgs(FieldLevelEncryptionConfigQueryArgProfileConfigArgs $) {
        this.forwardWhenQueryArgProfileIsUnknown = $.forwardWhenQueryArgProfileIsUnknown;
        this.queryArgProfiles = $.queryArgProfiles;
    }

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

    public static final class Builder {
        private FieldLevelEncryptionConfigQueryArgProfileConfigArgs $;

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

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

        /**
         * @param forwardWhenQueryArgProfileIsUnknown Flag to set if you want a request to be forwarded to the origin even if the profile specified by the field-level encryption query argument, fle-profile, is unknown.
         * 
         * @return builder
         * 
         */
        public Builder forwardWhenQueryArgProfileIsUnknown(Output<Boolean> forwardWhenQueryArgProfileIsUnknown) {
            $.forwardWhenQueryArgProfileIsUnknown = forwardWhenQueryArgProfileIsUnknown;
            return this;
        }

        /**
         * @param forwardWhenQueryArgProfileIsUnknown Flag to set if you want a request to be forwarded to the origin even if the profile specified by the field-level encryption query argument, fle-profile, is unknown.
         * 
         * @return builder
         * 
         */
        public Builder forwardWhenQueryArgProfileIsUnknown(Boolean forwardWhenQueryArgProfileIsUnknown) {
            return forwardWhenQueryArgProfileIsUnknown(Output.of(forwardWhenQueryArgProfileIsUnknown));
        }

        /**
         * @param queryArgProfiles Object that contains an attribute `items` that contains the list ofrofiles specified for query argument-profile mapping for field-level encryption. see Query Arg Profile.
         * 
         * @return builder
         * 
         */
        public Builder queryArgProfiles(@Nullable Output<FieldLevelEncryptionConfigQueryArgProfileConfigQueryArgProfilesArgs> queryArgProfiles) {
            $.queryArgProfiles = queryArgProfiles;
            return this;
        }

        /**
         * @param queryArgProfiles Object that contains an attribute `items` that contains the list ofrofiles specified for query argument-profile mapping for field-level encryption. see Query Arg Profile.
         * 
         * @return builder
         * 
         */
        public Builder queryArgProfiles(FieldLevelEncryptionConfigQueryArgProfileConfigQueryArgProfilesArgs queryArgProfiles) {
            return queryArgProfiles(Output.of(queryArgProfiles));
        }

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

}
