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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionAutomaticScalingArgs;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionBasicScalingArgs;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionDeploymentArgs;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionEntrypointArgs;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionHandlerArgs;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionLibraryArgs;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionManualScalingArgs;
import com.pulumi.gcp.appengine.inputs.StandardAppVersionVpcAccessConnectorArgs;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final StandardAppVersionState Empty = new StandardAppVersionState();

    /**
     * Allows App Engine second generation runtimes to access the legacy bundled services.
     * 
     */
    @Import(name="appEngineApis")
    private @Nullable Output<Boolean> appEngineApis;

    /**
     * @return Allows App Engine second generation runtimes to access the legacy bundled services.
     * 
     */
    public Optional<Output<Boolean>> appEngineApis() {
        return Optional.ofNullable(this.appEngineApis);
    }

    /**
     * Automatic scaling is based on request rate, response latencies, and other application metrics.
     * Structure is documented below.
     * 
     */
    @Import(name="automaticScaling")
    private @Nullable Output<StandardAppVersionAutomaticScalingArgs> automaticScaling;

    /**
     * @return Automatic scaling is based on request rate, response latencies, and other application metrics.
     * Structure is documented below.
     * 
     */
    public Optional<Output<StandardAppVersionAutomaticScalingArgs>> automaticScaling() {
        return Optional.ofNullable(this.automaticScaling);
    }

    /**
     * Basic scaling creates instances when your application receives requests. Each instance will be shut down when the application becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
     * Structure is documented below.
     * 
     */
    @Import(name="basicScaling")
    private @Nullable Output<StandardAppVersionBasicScalingArgs> basicScaling;

    /**
     * @return Basic scaling creates instances when your application receives requests. Each instance will be shut down when the application becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
     * Structure is documented below.
     * 
     */
    public Optional<Output<StandardAppVersionBasicScalingArgs>> basicScaling() {
        return Optional.ofNullable(this.basicScaling);
    }

    /**
     * If set to `true`, the service will be deleted if it is the last version.
     * 
     */
    @Import(name="deleteServiceOnDestroy")
    private @Nullable Output<Boolean> deleteServiceOnDestroy;

    /**
     * @return If set to `true`, the service will be deleted if it is the last version.
     * 
     */
    public Optional<Output<Boolean>> deleteServiceOnDestroy() {
        return Optional.ofNullable(this.deleteServiceOnDestroy);
    }

    /**
     * Code and application artifacts that make up this version.
     * Structure is documented below.
     * 
     */
    @Import(name="deployment")
    private @Nullable Output<StandardAppVersionDeploymentArgs> deployment;

    /**
     * @return Code and application artifacts that make up this version.
     * Structure is documented below.
     * 
     */
    public Optional<Output<StandardAppVersionDeploymentArgs>> deployment() {
        return Optional.ofNullable(this.deployment);
    }

    /**
     * The entrypoint for the application.
     * Structure is documented below.
     * 
     */
    @Import(name="entrypoint")
    private @Nullable Output<StandardAppVersionEntrypointArgs> entrypoint;

    /**
     * @return The entrypoint for the application.
     * Structure is documented below.
     * 
     */
    public Optional<Output<StandardAppVersionEntrypointArgs>> entrypoint() {
        return Optional.ofNullable(this.entrypoint);
    }

    /**
     * Environment variables available to the application.
     * 
     */
    @Import(name="envVariables")
    private @Nullable Output<Map<String,String>> envVariables;

    /**
     * @return Environment variables available to the application.
     * 
     */
    public Optional<Output<Map<String,String>>> envVariables() {
        return Optional.ofNullable(this.envVariables);
    }

    /**
     * An ordered list of URL-matching patterns that should be applied to incoming requests.
     * The first matching URL handles the request and other request handlers are not attempted.
     * Structure is documented below.
     * 
     */
    @Import(name="handlers")
    private @Nullable Output<List<StandardAppVersionHandlerArgs>> handlers;

    /**
     * @return An ordered list of URL-matching patterns that should be applied to incoming requests.
     * The first matching URL handles the request and other request handlers are not attempted.
     * Structure is documented below.
     * 
     */
    public Optional<Output<List<StandardAppVersionHandlerArgs>>> handlers() {
        return Optional.ofNullable(this.handlers);
    }

    /**
     * A list of the types of messages that this application is able to receive.
     * Each value may be one of: `INBOUND_SERVICE_MAIL`, `INBOUND_SERVICE_MAIL_BOUNCE`, `INBOUND_SERVICE_XMPP_ERROR`, `INBOUND_SERVICE_XMPP_MESSAGE`, `INBOUND_SERVICE_XMPP_SUBSCRIBE`, `INBOUND_SERVICE_XMPP_PRESENCE`, `INBOUND_SERVICE_CHANNEL_PRESENCE`, `INBOUND_SERVICE_WARMUP`.
     * 
     */
    @Import(name="inboundServices")
    private @Nullable Output<List<String>> inboundServices;

    /**
     * @return A list of the types of messages that this application is able to receive.
     * Each value may be one of: `INBOUND_SERVICE_MAIL`, `INBOUND_SERVICE_MAIL_BOUNCE`, `INBOUND_SERVICE_XMPP_ERROR`, `INBOUND_SERVICE_XMPP_MESSAGE`, `INBOUND_SERVICE_XMPP_SUBSCRIBE`, `INBOUND_SERVICE_XMPP_PRESENCE`, `INBOUND_SERVICE_CHANNEL_PRESENCE`, `INBOUND_SERVICE_WARMUP`.
     * 
     */
    public Optional<Output<List<String>>> inboundServices() {
        return Optional.ofNullable(this.inboundServices);
    }

    /**
     * Instance class that is used to run this version. Valid values are
     * AutomaticScaling: F1, F2, F4, F4_1G
     * BasicScaling or ManualScaling: B1, B2, B4, B4_1G, B8
     * Defaults to F1 for AutomaticScaling and B2 for ManualScaling and BasicScaling. If no scaling is specified, AutomaticScaling is chosen.
     * 
     */
    @Import(name="instanceClass")
    private @Nullable Output<String> instanceClass;

    /**
     * @return Instance class that is used to run this version. Valid values are
     * AutomaticScaling: F1, F2, F4, F4_1G
     * BasicScaling or ManualScaling: B1, B2, B4, B4_1G, B8
     * Defaults to F1 for AutomaticScaling and B2 for ManualScaling and BasicScaling. If no scaling is specified, AutomaticScaling is chosen.
     * 
     */
    public Optional<Output<String>> instanceClass() {
        return Optional.ofNullable(this.instanceClass);
    }

    /**
     * Configuration for third-party Python runtime libraries that are required by the application.
     * Structure is documented below.
     * 
     */
    @Import(name="libraries")
    private @Nullable Output<List<StandardAppVersionLibraryArgs>> libraries;

    /**
     * @return Configuration for third-party Python runtime libraries that are required by the application.
     * Structure is documented below.
     * 
     */
    public Optional<Output<List<StandardAppVersionLibraryArgs>>> libraries() {
        return Optional.ofNullable(this.libraries);
    }

    /**
     * A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
     * Structure is documented below.
     * 
     */
    @Import(name="manualScaling")
    private @Nullable Output<StandardAppVersionManualScalingArgs> manualScaling;

    /**
     * @return A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
     * Structure is documented below.
     * 
     */
    public Optional<Output<StandardAppVersionManualScalingArgs>> manualScaling() {
        return Optional.ofNullable(this.manualScaling);
    }

    /**
     * The identifier for this object. Format specified above.
     * 
     * (Optional)
     * Name of the library. Example &#34;django&#34;.
     * 
     * (Required)
     * Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return The identifier for this object. Format specified above.
     * 
     * (Optional)
     * Name of the library. Example &#34;django&#34;.
     * 
     * (Required)
     * Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * If set to `true`, the application version will not be deleted.
     * 
     */
    @Import(name="noopOnDestroy")
    private @Nullable Output<Boolean> noopOnDestroy;

    /**
     * @return If set to `true`, the application version will not be deleted.
     * 
     */
    public Optional<Output<Boolean>> noopOnDestroy() {
        return Optional.ofNullable(this.noopOnDestroy);
    }

    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     * 
     */
    @Import(name="project")
    private @Nullable Output<String> project;

    /**
     * @return The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     * 
     */
    public Optional<Output<String>> project() {
        return Optional.ofNullable(this.project);
    }

    /**
     * Desired runtime. Example python27.
     * 
     */
    @Import(name="runtime")
    private @Nullable Output<String> runtime;

    /**
     * @return Desired runtime. Example python27.
     * 
     */
    public Optional<Output<String>> runtime() {
        return Optional.ofNullable(this.runtime);
    }

    /**
     * The version of the API in the given runtime environment.
     * Please see the app.yaml reference for valid values at `https://cloud.google.com/appengine/docs/standard/&lt;language&gt;/config/appref`\
     * Substitute `&lt;language&gt;` with `python`, `java`, `php`, `ruby`, `go` or `nodejs`.
     * 
     */
    @Import(name="runtimeApiVersion")
    private @Nullable Output<String> runtimeApiVersion;

    /**
     * @return The version of the API in the given runtime environment.
     * Please see the app.yaml reference for valid values at `https://cloud.google.com/appengine/docs/standard/&lt;language&gt;/config/appref`\
     * Substitute `&lt;language&gt;` with `python`, `java`, `php`, `ruby`, `go` or `nodejs`.
     * 
     */
    public Optional<Output<String>> runtimeApiVersion() {
        return Optional.ofNullable(this.runtimeApiVersion);
    }

    /**
     * AppEngine service resource
     * 
     */
    @Import(name="service")
    private @Nullable Output<String> service;

    /**
     * @return AppEngine service resource
     * 
     */
    public Optional<Output<String>> service() {
        return Optional.ofNullable(this.service);
    }

    /**
     * The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
     * 
     */
    @Import(name="serviceAccount")
    private @Nullable Output<String> serviceAccount;

    /**
     * @return The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
     * 
     */
    public Optional<Output<String>> serviceAccount() {
        return Optional.ofNullable(this.serviceAccount);
    }

    /**
     * Whether multiple requests can be dispatched to this version at once.
     * 
     */
    @Import(name="threadsafe")
    private @Nullable Output<Boolean> threadsafe;

    /**
     * @return Whether multiple requests can be dispatched to this version at once.
     * 
     */
    public Optional<Output<Boolean>> threadsafe() {
        return Optional.ofNullable(this.threadsafe);
    }

    /**
     * Relative name of the version within the service. For example, `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names,&#34;default&#34;, &#34;latest&#34;, and any name with the prefix &#34;ah-&#34;.
     * 
     */
    @Import(name="versionId")
    private @Nullable Output<String> versionId;

    /**
     * @return Relative name of the version within the service. For example, `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names,&#34;default&#34;, &#34;latest&#34;, and any name with the prefix &#34;ah-&#34;.
     * 
     */
    public Optional<Output<String>> versionId() {
        return Optional.ofNullable(this.versionId);
    }

    /**
     * Enables VPC connectivity for standard apps.
     * Structure is documented below.
     * 
     */
    @Import(name="vpcAccessConnector")
    private @Nullable Output<StandardAppVersionVpcAccessConnectorArgs> vpcAccessConnector;

    /**
     * @return Enables VPC connectivity for standard apps.
     * Structure is documented below.
     * 
     */
    public Optional<Output<StandardAppVersionVpcAccessConnectorArgs>> vpcAccessConnector() {
        return Optional.ofNullable(this.vpcAccessConnector);
    }

    private StandardAppVersionState() {}

    private StandardAppVersionState(StandardAppVersionState $) {
        this.appEngineApis = $.appEngineApis;
        this.automaticScaling = $.automaticScaling;
        this.basicScaling = $.basicScaling;
        this.deleteServiceOnDestroy = $.deleteServiceOnDestroy;
        this.deployment = $.deployment;
        this.entrypoint = $.entrypoint;
        this.envVariables = $.envVariables;
        this.handlers = $.handlers;
        this.inboundServices = $.inboundServices;
        this.instanceClass = $.instanceClass;
        this.libraries = $.libraries;
        this.manualScaling = $.manualScaling;
        this.name = $.name;
        this.noopOnDestroy = $.noopOnDestroy;
        this.project = $.project;
        this.runtime = $.runtime;
        this.runtimeApiVersion = $.runtimeApiVersion;
        this.service = $.service;
        this.serviceAccount = $.serviceAccount;
        this.threadsafe = $.threadsafe;
        this.versionId = $.versionId;
        this.vpcAccessConnector = $.vpcAccessConnector;
    }

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

    public static final class Builder {
        private StandardAppVersionState $;

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

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

        /**
         * @param appEngineApis Allows App Engine second generation runtimes to access the legacy bundled services.
         * 
         * @return builder
         * 
         */
        public Builder appEngineApis(@Nullable Output<Boolean> appEngineApis) {
            $.appEngineApis = appEngineApis;
            return this;
        }

        /**
         * @param appEngineApis Allows App Engine second generation runtimes to access the legacy bundled services.
         * 
         * @return builder
         * 
         */
        public Builder appEngineApis(Boolean appEngineApis) {
            return appEngineApis(Output.of(appEngineApis));
        }

        /**
         * @param automaticScaling Automatic scaling is based on request rate, response latencies, and other application metrics.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder automaticScaling(@Nullable Output<StandardAppVersionAutomaticScalingArgs> automaticScaling) {
            $.automaticScaling = automaticScaling;
            return this;
        }

        /**
         * @param automaticScaling Automatic scaling is based on request rate, response latencies, and other application metrics.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder automaticScaling(StandardAppVersionAutomaticScalingArgs automaticScaling) {
            return automaticScaling(Output.of(automaticScaling));
        }

        /**
         * @param basicScaling Basic scaling creates instances when your application receives requests. Each instance will be shut down when the application becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder basicScaling(@Nullable Output<StandardAppVersionBasicScalingArgs> basicScaling) {
            $.basicScaling = basicScaling;
            return this;
        }

        /**
         * @param basicScaling Basic scaling creates instances when your application receives requests. Each instance will be shut down when the application becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder basicScaling(StandardAppVersionBasicScalingArgs basicScaling) {
            return basicScaling(Output.of(basicScaling));
        }

        /**
         * @param deleteServiceOnDestroy If set to `true`, the service will be deleted if it is the last version.
         * 
         * @return builder
         * 
         */
        public Builder deleteServiceOnDestroy(@Nullable Output<Boolean> deleteServiceOnDestroy) {
            $.deleteServiceOnDestroy = deleteServiceOnDestroy;
            return this;
        }

        /**
         * @param deleteServiceOnDestroy If set to `true`, the service will be deleted if it is the last version.
         * 
         * @return builder
         * 
         */
        public Builder deleteServiceOnDestroy(Boolean deleteServiceOnDestroy) {
            return deleteServiceOnDestroy(Output.of(deleteServiceOnDestroy));
        }

        /**
         * @param deployment Code and application artifacts that make up this version.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder deployment(@Nullable Output<StandardAppVersionDeploymentArgs> deployment) {
            $.deployment = deployment;
            return this;
        }

        /**
         * @param deployment Code and application artifacts that make up this version.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder deployment(StandardAppVersionDeploymentArgs deployment) {
            return deployment(Output.of(deployment));
        }

        /**
         * @param entrypoint The entrypoint for the application.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder entrypoint(@Nullable Output<StandardAppVersionEntrypointArgs> entrypoint) {
            $.entrypoint = entrypoint;
            return this;
        }

        /**
         * @param entrypoint The entrypoint for the application.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder entrypoint(StandardAppVersionEntrypointArgs entrypoint) {
            return entrypoint(Output.of(entrypoint));
        }

        /**
         * @param envVariables Environment variables available to the application.
         * 
         * @return builder
         * 
         */
        public Builder envVariables(@Nullable Output<Map<String,String>> envVariables) {
            $.envVariables = envVariables;
            return this;
        }

        /**
         * @param envVariables Environment variables available to the application.
         * 
         * @return builder
         * 
         */
        public Builder envVariables(Map<String,String> envVariables) {
            return envVariables(Output.of(envVariables));
        }

        /**
         * @param handlers An ordered list of URL-matching patterns that should be applied to incoming requests.
         * The first matching URL handles the request and other request handlers are not attempted.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder handlers(@Nullable Output<List<StandardAppVersionHandlerArgs>> handlers) {
            $.handlers = handlers;
            return this;
        }

        /**
         * @param handlers An ordered list of URL-matching patterns that should be applied to incoming requests.
         * The first matching URL handles the request and other request handlers are not attempted.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder handlers(List<StandardAppVersionHandlerArgs> handlers) {
            return handlers(Output.of(handlers));
        }

        /**
         * @param handlers An ordered list of URL-matching patterns that should be applied to incoming requests.
         * The first matching URL handles the request and other request handlers are not attempted.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder handlers(StandardAppVersionHandlerArgs... handlers) {
            return handlers(List.of(handlers));
        }

        /**
         * @param inboundServices A list of the types of messages that this application is able to receive.
         * Each value may be one of: `INBOUND_SERVICE_MAIL`, `INBOUND_SERVICE_MAIL_BOUNCE`, `INBOUND_SERVICE_XMPP_ERROR`, `INBOUND_SERVICE_XMPP_MESSAGE`, `INBOUND_SERVICE_XMPP_SUBSCRIBE`, `INBOUND_SERVICE_XMPP_PRESENCE`, `INBOUND_SERVICE_CHANNEL_PRESENCE`, `INBOUND_SERVICE_WARMUP`.
         * 
         * @return builder
         * 
         */
        public Builder inboundServices(@Nullable Output<List<String>> inboundServices) {
            $.inboundServices = inboundServices;
            return this;
        }

        /**
         * @param inboundServices A list of the types of messages that this application is able to receive.
         * Each value may be one of: `INBOUND_SERVICE_MAIL`, `INBOUND_SERVICE_MAIL_BOUNCE`, `INBOUND_SERVICE_XMPP_ERROR`, `INBOUND_SERVICE_XMPP_MESSAGE`, `INBOUND_SERVICE_XMPP_SUBSCRIBE`, `INBOUND_SERVICE_XMPP_PRESENCE`, `INBOUND_SERVICE_CHANNEL_PRESENCE`, `INBOUND_SERVICE_WARMUP`.
         * 
         * @return builder
         * 
         */
        public Builder inboundServices(List<String> inboundServices) {
            return inboundServices(Output.of(inboundServices));
        }

        /**
         * @param inboundServices A list of the types of messages that this application is able to receive.
         * Each value may be one of: `INBOUND_SERVICE_MAIL`, `INBOUND_SERVICE_MAIL_BOUNCE`, `INBOUND_SERVICE_XMPP_ERROR`, `INBOUND_SERVICE_XMPP_MESSAGE`, `INBOUND_SERVICE_XMPP_SUBSCRIBE`, `INBOUND_SERVICE_XMPP_PRESENCE`, `INBOUND_SERVICE_CHANNEL_PRESENCE`, `INBOUND_SERVICE_WARMUP`.
         * 
         * @return builder
         * 
         */
        public Builder inboundServices(String... inboundServices) {
            return inboundServices(List.of(inboundServices));
        }

        /**
         * @param instanceClass Instance class that is used to run this version. Valid values are
         * AutomaticScaling: F1, F2, F4, F4_1G
         * BasicScaling or ManualScaling: B1, B2, B4, B4_1G, B8
         * Defaults to F1 for AutomaticScaling and B2 for ManualScaling and BasicScaling. If no scaling is specified, AutomaticScaling is chosen.
         * 
         * @return builder
         * 
         */
        public Builder instanceClass(@Nullable Output<String> instanceClass) {
            $.instanceClass = instanceClass;
            return this;
        }

        /**
         * @param instanceClass Instance class that is used to run this version. Valid values are
         * AutomaticScaling: F1, F2, F4, F4_1G
         * BasicScaling or ManualScaling: B1, B2, B4, B4_1G, B8
         * Defaults to F1 for AutomaticScaling and B2 for ManualScaling and BasicScaling. If no scaling is specified, AutomaticScaling is chosen.
         * 
         * @return builder
         * 
         */
        public Builder instanceClass(String instanceClass) {
            return instanceClass(Output.of(instanceClass));
        }

        /**
         * @param libraries Configuration for third-party Python runtime libraries that are required by the application.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder libraries(@Nullable Output<List<StandardAppVersionLibraryArgs>> libraries) {
            $.libraries = libraries;
            return this;
        }

        /**
         * @param libraries Configuration for third-party Python runtime libraries that are required by the application.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder libraries(List<StandardAppVersionLibraryArgs> libraries) {
            return libraries(Output.of(libraries));
        }

        /**
         * @param libraries Configuration for third-party Python runtime libraries that are required by the application.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder libraries(StandardAppVersionLibraryArgs... libraries) {
            return libraries(List.of(libraries));
        }

        /**
         * @param manualScaling A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder manualScaling(@Nullable Output<StandardAppVersionManualScalingArgs> manualScaling) {
            $.manualScaling = manualScaling;
            return this;
        }

        /**
         * @param manualScaling A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder manualScaling(StandardAppVersionManualScalingArgs manualScaling) {
            return manualScaling(Output.of(manualScaling));
        }

        /**
         * @param name The identifier for this object. Format specified above.
         * 
         * (Optional)
         * Name of the library. Example &#34;django&#34;.
         * 
         * (Required)
         * Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The identifier for this object. Format specified above.
         * 
         * (Optional)
         * Name of the library. Example &#34;django&#34;.
         * 
         * (Required)
         * Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param noopOnDestroy If set to `true`, the application version will not be deleted.
         * 
         * @return builder
         * 
         */
        public Builder noopOnDestroy(@Nullable Output<Boolean> noopOnDestroy) {
            $.noopOnDestroy = noopOnDestroy;
            return this;
        }

        /**
         * @param noopOnDestroy If set to `true`, the application version will not be deleted.
         * 
         * @return builder
         * 
         */
        public Builder noopOnDestroy(Boolean noopOnDestroy) {
            return noopOnDestroy(Output.of(noopOnDestroy));
        }

        /**
         * @param project The ID of the project in which the resource belongs.
         * If it is not provided, the provider project is used.
         * 
         * @return builder
         * 
         */
        public Builder project(@Nullable Output<String> project) {
            $.project = project;
            return this;
        }

        /**
         * @param project The ID of the project in which the resource belongs.
         * If it is not provided, the provider project is used.
         * 
         * @return builder
         * 
         */
        public Builder project(String project) {
            return project(Output.of(project));
        }

        /**
         * @param runtime Desired runtime. Example python27.
         * 
         * @return builder
         * 
         */
        public Builder runtime(@Nullable Output<String> runtime) {
            $.runtime = runtime;
            return this;
        }

        /**
         * @param runtime Desired runtime. Example python27.
         * 
         * @return builder
         * 
         */
        public Builder runtime(String runtime) {
            return runtime(Output.of(runtime));
        }

        /**
         * @param runtimeApiVersion The version of the API in the given runtime environment.
         * Please see the app.yaml reference for valid values at `https://cloud.google.com/appengine/docs/standard/&lt;language&gt;/config/appref`\
         * Substitute `&lt;language&gt;` with `python`, `java`, `php`, `ruby`, `go` or `nodejs`.
         * 
         * @return builder
         * 
         */
        public Builder runtimeApiVersion(@Nullable Output<String> runtimeApiVersion) {
            $.runtimeApiVersion = runtimeApiVersion;
            return this;
        }

        /**
         * @param runtimeApiVersion The version of the API in the given runtime environment.
         * Please see the app.yaml reference for valid values at `https://cloud.google.com/appengine/docs/standard/&lt;language&gt;/config/appref`\
         * Substitute `&lt;language&gt;` with `python`, `java`, `php`, `ruby`, `go` or `nodejs`.
         * 
         * @return builder
         * 
         */
        public Builder runtimeApiVersion(String runtimeApiVersion) {
            return runtimeApiVersion(Output.of(runtimeApiVersion));
        }

        /**
         * @param service AppEngine service resource
         * 
         * @return builder
         * 
         */
        public Builder service(@Nullable Output<String> service) {
            $.service = service;
            return this;
        }

        /**
         * @param service AppEngine service resource
         * 
         * @return builder
         * 
         */
        public Builder service(String service) {
            return service(Output.of(service));
        }

        /**
         * @param serviceAccount The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
         * 
         * @return builder
         * 
         */
        public Builder serviceAccount(@Nullable Output<String> serviceAccount) {
            $.serviceAccount = serviceAccount;
            return this;
        }

        /**
         * @param serviceAccount The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
         * 
         * @return builder
         * 
         */
        public Builder serviceAccount(String serviceAccount) {
            return serviceAccount(Output.of(serviceAccount));
        }

        /**
         * @param threadsafe Whether multiple requests can be dispatched to this version at once.
         * 
         * @return builder
         * 
         */
        public Builder threadsafe(@Nullable Output<Boolean> threadsafe) {
            $.threadsafe = threadsafe;
            return this;
        }

        /**
         * @param threadsafe Whether multiple requests can be dispatched to this version at once.
         * 
         * @return builder
         * 
         */
        public Builder threadsafe(Boolean threadsafe) {
            return threadsafe(Output.of(threadsafe));
        }

        /**
         * @param versionId Relative name of the version within the service. For example, `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names,&#34;default&#34;, &#34;latest&#34;, and any name with the prefix &#34;ah-&#34;.
         * 
         * @return builder
         * 
         */
        public Builder versionId(@Nullable Output<String> versionId) {
            $.versionId = versionId;
            return this;
        }

        /**
         * @param versionId Relative name of the version within the service. For example, `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names,&#34;default&#34;, &#34;latest&#34;, and any name with the prefix &#34;ah-&#34;.
         * 
         * @return builder
         * 
         */
        public Builder versionId(String versionId) {
            return versionId(Output.of(versionId));
        }

        /**
         * @param vpcAccessConnector Enables VPC connectivity for standard apps.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder vpcAccessConnector(@Nullable Output<StandardAppVersionVpcAccessConnectorArgs> vpcAccessConnector) {
            $.vpcAccessConnector = vpcAccessConnector;
            return this;
        }

        /**
         * @param vpcAccessConnector Enables VPC connectivity for standard apps.
         * Structure is documented below.
         * 
         * @return builder
         * 
         */
        public Builder vpcAccessConnector(StandardAppVersionVpcAccessConnectorArgs vpcAccessConnector) {
            return vpcAccessConnector(Output.of(vpcAccessConnector));
        }

        public StandardAppVersionState build() {
            return $;
        }
    }

}
