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

import com.pulumi.aws.transfer.inputs.ServerWorkflowDetailsOnPartialUploadArgs;
import com.pulumi.aws.transfer.inputs.ServerWorkflowDetailsOnUploadArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ServerWorkflowDetailsArgs Empty = new ServerWorkflowDetailsArgs();

    /**
     * A trigger that starts a workflow if a file is only partially uploaded. See Workflow Detail below.
     * 
     */
    @Import(name="onPartialUpload")
    private @Nullable Output<ServerWorkflowDetailsOnPartialUploadArgs> onPartialUpload;

    /**
     * @return A trigger that starts a workflow if a file is only partially uploaded. See Workflow Detail below.
     * 
     */
    public Optional<Output<ServerWorkflowDetailsOnPartialUploadArgs>> onPartialUpload() {
        return Optional.ofNullable(this.onPartialUpload);
    }

    /**
     * A trigger that starts a workflow: the workflow begins to execute after a file is uploaded. See Workflow Detail below.
     * 
     */
    @Import(name="onUpload")
    private @Nullable Output<ServerWorkflowDetailsOnUploadArgs> onUpload;

    /**
     * @return A trigger that starts a workflow: the workflow begins to execute after a file is uploaded. See Workflow Detail below.
     * 
     */
    public Optional<Output<ServerWorkflowDetailsOnUploadArgs>> onUpload() {
        return Optional.ofNullable(this.onUpload);
    }

    private ServerWorkflowDetailsArgs() {}

    private ServerWorkflowDetailsArgs(ServerWorkflowDetailsArgs $) {
        this.onPartialUpload = $.onPartialUpload;
        this.onUpload = $.onUpload;
    }

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

    public static final class Builder {
        private ServerWorkflowDetailsArgs $;

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

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

        /**
         * @param onPartialUpload A trigger that starts a workflow if a file is only partially uploaded. See Workflow Detail below.
         * 
         * @return builder
         * 
         */
        public Builder onPartialUpload(@Nullable Output<ServerWorkflowDetailsOnPartialUploadArgs> onPartialUpload) {
            $.onPartialUpload = onPartialUpload;
            return this;
        }

        /**
         * @param onPartialUpload A trigger that starts a workflow if a file is only partially uploaded. See Workflow Detail below.
         * 
         * @return builder
         * 
         */
        public Builder onPartialUpload(ServerWorkflowDetailsOnPartialUploadArgs onPartialUpload) {
            return onPartialUpload(Output.of(onPartialUpload));
        }

        /**
         * @param onUpload A trigger that starts a workflow: the workflow begins to execute after a file is uploaded. See Workflow Detail below.
         * 
         * @return builder
         * 
         */
        public Builder onUpload(@Nullable Output<ServerWorkflowDetailsOnUploadArgs> onUpload) {
            $.onUpload = onUpload;
            return this;
        }

        /**
         * @param onUpload A trigger that starts a workflow: the workflow begins to execute after a file is uploaded. See Workflow Detail below.
         * 
         * @return builder
         * 
         */
        public Builder onUpload(ServerWorkflowDetailsOnUploadArgs onUpload) {
            return onUpload(Output.of(onUpload));
        }

        public ServerWorkflowDetailsArgs build() {
            return $;
        }
    }

}
