<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="appengine_v1beta.html">App Engine Admin API</a> . <a href="appengine_v1beta.apps.html">apps</a> . <a href="appengine_v1beta.apps.services.html">services</a> . <a href="appengine_v1beta.apps.services.versions.html">versions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="appengine_v1beta.apps.services.versions.instances.html">instances()</a></code>
</p>
<p class="firstline">Returns the instances Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(appsId, servicesId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deploys code and resource files to a new version.</p>
<p class="toc_element">
  <code><a href="#delete">delete(appsId, servicesId, versionsId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an existing Version resource.</p>
<p class="toc_element">
  <code><a href="#get">get(appsId, servicesId, versionsId, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.</p>
<p class="toc_element">
  <code><a href="#list">list(appsId, servicesId, pageToken=None, view=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the versions of a service.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(appsId, servicesId, versionsId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:Standard environment instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class)automatic scaling in the standard environment: automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automaticScaling.standard_scheduler_settings.max_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.min_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_cpu_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_throughput_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings)basic scaling or manual scaling in the standard environment: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status) manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#manualscaling)Flexible environment serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status)automatic scaling in the flexible environment: automatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling)manual scaling in the flexible environment: manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#manualscaling)</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(appsId, servicesId, body=None, x__xgafv=None)</code>
  <pre>Deploys code and resource files to a new version.

Args:
  appsId: string, Part of `parent`. Name of the parent resource to create this version under. Example: apps/myapp/services/default. (required)
  servicesId: string, Part of `parent`. See documentation of `appsId`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Version resource is a specific set of source code and configuration files that are deployed into a service.
    &quot;runtimeApiVersion&quot;: &quot;A String&quot;, # 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//config/appref
    &quot;buildEnvVariables&quot;: { # Environment variables available to the build environment.Only returned in GET requests if view=FULL is set.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
      &quot;path&quot;: &quot;A String&quot;, # The request path.
      &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
      &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
      &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
      &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
      &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
      &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
    &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
    &quot;vpcAccessConnector&quot;: { # VPC access connector specification. # Enables VPC connectivity for standard apps.
      &quot;name&quot;: &quot;A String&quot;, # Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
    },
    &quot;handlers&quot;: [ # 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.Only returned in GET requests if view=FULL is set.
      { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
        &quot;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
        &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment.
        &quot;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
          &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
        },
        &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
        &quot;urlRegex&quot;: &quot;A String&quot;, # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
        &quot;script&quot;: { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example &quot;script&quot;: &quot;auto&quot;.
          &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
        },
        &quot;staticFiles&quot;: { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
          &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
          &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
          &quot;applicationReadable&quot;: True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
          &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
          &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
          &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
        },
        &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      },
    ],
    &quot;network&quot;: { # Extra network settings. Only applicable in the App Engine flexible environment. # Extra network settings. Only applicable in the App Engine flexible environment.
      &quot;sessionAffinity&quot;: True or False, # Enable session affinity. Only applicable in the App Engine flexible environment.
      &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment.
        &quot;A String&quot;,
      ],
      &quot;subnetworkName&quot;: &quot;A String&quot;, # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.
      &quot;name&quot;: &quot;A String&quot;, # Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
      &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
    },
    &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
    &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk.@OutputOnly
    &quot;inboundServices&quot;: [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
      &quot;A String&quot;,
    ],
    &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
      &quot;volumes&quot;: [ # User specified volumes.
        { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
          &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
          &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
          &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
        },
      ],
      &quot;kmsKeyReference&quot;: &quot;A String&quot;, # The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk
      &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
      &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
      &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
    },
    &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
      &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
      &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
        &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
        &quot;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
        &quot;maxInstances&quot;: 42, # Maximum number of instances to run for this version. Set to zero to disable max_instances configuration.
        &quot;minInstances&quot;: 42, # Minimum number of instances to run for this version. Set to zero to disable min_instances configuration.
      },
      &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
      &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
      &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
        { # Allows autoscaling based on Stackdriver metrics.
          &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
          &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
          &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
          &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
          &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
        },
      ],
      &quot;maxPendingLatency&quot;: &quot;A String&quot;, # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
      &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
      &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
      &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
        &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
        &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
      },
      &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
        &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
        &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
      },
      &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
      &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
        &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
        &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
        &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
        &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
      },
      &quot;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable in the App Engine flexible environment. # Target scaling by disk usage.
        &quot;targetReadBytesPerSecond&quot;: 42, # Target bytes read per second.
        &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
        &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
        &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
      },
      &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
    },
    &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
    &quot;id&quot;: &quot;A String&quot;, # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: &quot;default&quot;, &quot;latest&quot;, and any name with the prefix &quot;ah-&quot;.
    &quot;healthCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment.Only returned in GET requests if view=FULL is set.
      &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
      &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
      &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
      &quot;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
      &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
      &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
      &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
    },
    &quot;nobuildFilesRegex&quot;: &quot;A String&quot;, # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
    &quot;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
      &quot;A String&quot;,
    ],
    &quot;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;errorHandlers&quot;: [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
      { # Custom static error page to be served when an error occurs.
        &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
        &quot;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
        &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
      },
    ],
    &quot;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
    &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
    &quot;envVariables&quot;: { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
    &quot;readinessCheck&quot;: { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
      &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
      &quot;path&quot;: &quot;A String&quot;, # The request path.
      &quot;appStartTimeout&quot;: &quot;A String&quot;, # A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.
      &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
      &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
      &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
      &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
    },
    &quot;apiConfig&quot;: { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
      &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
      &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
      &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
      &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
      &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
    },
    &quot;appEngineApis&quot;: True or False, # app_engine_apis allows Second Generation runtimes to access the App Engine APIs.
    &quot;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
    &quot;instanceClass&quot;: &quot;A String&quot;, # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
    &quot;manualScaling&quot;: { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as &quot;backends&quot;.
      &quot;instances&quot;: 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
    },
    &quot;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
    &quot;basicScaling&quot;: { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
      &quot;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
      &quot;idleTimeout&quot;: &quot;A String&quot;, # Duration of time after the last request that an instance must wait before the instance is shut down.
    },
    &quot;versionUrl&quot;: &quot;A String&quot;, # Serving URL for this version. Example: &quot;https://myversion-dot-myservice-dot-myapp.appspot.com&quot;@OutputOnly
    &quot;endpointsApiService&quot;: { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a &quot;service&quot; resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
      &quot;disableTraceSampling&quot;: True or False, # Enable or disable trace sampling. By default, this is set to false for enabled.
      &quot;name&quot;: &quot;A String&quot;, # Endpoints service name which is the name of the &quot;service&quot; resource in the Service Management API. For example &quot;myapi.endpoints.myproject.cloud.goog&quot;
      &quot;configId&quot;: &quot;A String&quot;, # Endpoints service configuration ID as specified by the Service Management API. For example &quot;2016-09-19r1&quot;.By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted.
      &quot;rolloutStrategy&quot;: &quot;A String&quot;, # Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted.
    },
    &quot;libraries&quot;: [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
      { # Third-party Python runtime library that is required by the application.
        &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
        &quot;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
      },
    ],
    &quot;servingStatus&quot;: &quot;A String&quot;, # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
    &quot;entrypoint&quot;: { # The entrypoint for the application. # The entrypoint for the application.
      &quot;shell&quot;: &quot;A String&quot;, # The format should be a shell command that can be fed to bash -c.
    },
    &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
      &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
        &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
      },
      &quot;files&quot;: { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
        &quot;a_key&quot;: { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
          &quot;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
          &quot;sourceUrl&quot;: &quot;A String&quot;, # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
          &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file.Defaults to the value from Google Cloud Storage.
        },
      },
      &quot;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
        &quot;sourceUrl&quot;: &quot;A String&quot;, # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
        &quot;filesCount&quot;: 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
      },
      &quot;container&quot;: { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
        &quot;image&quot;: &quot;A String&quot;, # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: &quot;gcr.io/my-project/image:tag&quot; or &quot;gcr.io/my-project/image@digest&quot;
      },
      &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
        &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
        &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
      },
    },
    &quot;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(appsId, servicesId, versionsId, x__xgafv=None)</code>
  <pre>Deletes an existing Version resource.

Args:
  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1. (required)
  servicesId: string, Part of `name`. See documentation of `appsId`. (required)
  versionsId: string, Part of `name`. See documentation of `appsId`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(appsId, servicesId, versionsId, view=None, x__xgafv=None)</code>
  <pre>Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.

Args:
  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1. (required)
  servicesId: string, Part of `name`. See documentation of `appsId`. (required)
  versionsId: string, Part of `name`. See documentation of `appsId`. (required)
  view: string, Controls the set of fields returned in the Get response.
    Allowed values
      BASIC - Basic version information including scaling and inbound services, but not detailed deployment information.
      FULL - The information from BASIC, plus detailed information about the deployment. This format is required when creating resources, but is not returned in Get or List by default.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
      &quot;runtimeApiVersion&quot;: &quot;A String&quot;, # 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//config/appref
      &quot;buildEnvVariables&quot;: { # Environment variables available to the build environment.Only returned in GET requests if view=FULL is set.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
        &quot;path&quot;: &quot;A String&quot;, # The request path.
        &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
        &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
        &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
        &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
        &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
        &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
      &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
      &quot;vpcAccessConnector&quot;: { # VPC access connector specification. # Enables VPC connectivity for standard apps.
        &quot;name&quot;: &quot;A String&quot;, # Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
      },
      &quot;handlers&quot;: [ # 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.Only returned in GET requests if view=FULL is set.
        { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
          &quot;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
          &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment.
          &quot;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
            &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
          },
          &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
          &quot;urlRegex&quot;: &quot;A String&quot;, # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
          &quot;script&quot;: { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example &quot;script&quot;: &quot;auto&quot;.
            &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
          },
          &quot;staticFiles&quot;: { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
            &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
            &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
            &quot;applicationReadable&quot;: True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
            &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
            &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
            &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
          },
          &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
        },
      ],
      &quot;network&quot;: { # Extra network settings. Only applicable in the App Engine flexible environment. # Extra network settings. Only applicable in the App Engine flexible environment.
        &quot;sessionAffinity&quot;: True or False, # Enable session affinity. Only applicable in the App Engine flexible environment.
        &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment.
          &quot;A String&quot;,
        ],
        &quot;subnetworkName&quot;: &quot;A String&quot;, # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.
        &quot;name&quot;: &quot;A String&quot;, # Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
        &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
      },
      &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
      &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk.@OutputOnly
      &quot;inboundServices&quot;: [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
        &quot;A String&quot;,
      ],
      &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
        &quot;volumes&quot;: [ # User specified volumes.
          { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
            &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
            &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
            &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
          },
        ],
        &quot;kmsKeyReference&quot;: &quot;A String&quot;, # The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk
        &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
        &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
        &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
      },
      &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
        &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
        &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
          &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
          &quot;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
          &quot;maxInstances&quot;: 42, # Maximum number of instances to run for this version. Set to zero to disable max_instances configuration.
          &quot;minInstances&quot;: 42, # Minimum number of instances to run for this version. Set to zero to disable min_instances configuration.
        },
        &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
        &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
        &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
          { # Allows autoscaling based on Stackdriver metrics.
            &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
            &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
            &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
            &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
            &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
          },
        ],
        &quot;maxPendingLatency&quot;: &quot;A String&quot;, # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
        &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
        &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
        &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
          &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
          &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
        },
        &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
          &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
          &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
        },
        &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
        &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
          &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
          &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
          &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
          &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
        },
        &quot;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable in the App Engine flexible environment. # Target scaling by disk usage.
          &quot;targetReadBytesPerSecond&quot;: 42, # Target bytes read per second.
          &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
          &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
          &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
        },
        &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
      },
      &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
      &quot;id&quot;: &quot;A String&quot;, # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: &quot;default&quot;, &quot;latest&quot;, and any name with the prefix &quot;ah-&quot;.
      &quot;healthCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment.Only returned in GET requests if view=FULL is set.
        &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
        &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
        &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
        &quot;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
        &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
        &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
        &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
      },
      &quot;nobuildFilesRegex&quot;: &quot;A String&quot;, # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
      &quot;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
        &quot;A String&quot;,
      ],
      &quot;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;errorHandlers&quot;: [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
        { # Custom static error page to be served when an error occurs.
          &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
          &quot;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
          &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
        },
      ],
      &quot;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
      &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
      &quot;envVariables&quot;: { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
      &quot;readinessCheck&quot;: { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
        &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
        &quot;path&quot;: &quot;A String&quot;, # The request path.
        &quot;appStartTimeout&quot;: &quot;A String&quot;, # A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.
        &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
        &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
        &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
        &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
      },
      &quot;apiConfig&quot;: { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
        &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
        &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
        &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
        &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
        &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      },
      &quot;appEngineApis&quot;: True or False, # app_engine_apis allows Second Generation runtimes to access the App Engine APIs.
      &quot;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
      &quot;instanceClass&quot;: &quot;A String&quot;, # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
      &quot;manualScaling&quot;: { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as &quot;backends&quot;.
        &quot;instances&quot;: 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
      },
      &quot;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
      &quot;basicScaling&quot;: { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
        &quot;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
        &quot;idleTimeout&quot;: &quot;A String&quot;, # Duration of time after the last request that an instance must wait before the instance is shut down.
      },
      &quot;versionUrl&quot;: &quot;A String&quot;, # Serving URL for this version. Example: &quot;https://myversion-dot-myservice-dot-myapp.appspot.com&quot;@OutputOnly
      &quot;endpointsApiService&quot;: { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a &quot;service&quot; resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
        &quot;disableTraceSampling&quot;: True or False, # Enable or disable trace sampling. By default, this is set to false for enabled.
        &quot;name&quot;: &quot;A String&quot;, # Endpoints service name which is the name of the &quot;service&quot; resource in the Service Management API. For example &quot;myapi.endpoints.myproject.cloud.goog&quot;
        &quot;configId&quot;: &quot;A String&quot;, # Endpoints service configuration ID as specified by the Service Management API. For example &quot;2016-09-19r1&quot;.By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted.
        &quot;rolloutStrategy&quot;: &quot;A String&quot;, # Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted.
      },
      &quot;libraries&quot;: [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
        { # Third-party Python runtime library that is required by the application.
          &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
          &quot;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
        },
      ],
      &quot;servingStatus&quot;: &quot;A String&quot;, # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
      &quot;entrypoint&quot;: { # The entrypoint for the application. # The entrypoint for the application.
        &quot;shell&quot;: &quot;A String&quot;, # The format should be a shell command that can be fed to bash -c.
      },
      &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
        &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
          &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
        },
        &quot;files&quot;: { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
          &quot;a_key&quot;: { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
            &quot;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
            &quot;sourceUrl&quot;: &quot;A String&quot;, # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
            &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file.Defaults to the value from Google Cloud Storage.
          },
        },
        &quot;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
          &quot;sourceUrl&quot;: &quot;A String&quot;, # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
          &quot;filesCount&quot;: 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
        },
        &quot;container&quot;: { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
          &quot;image&quot;: &quot;A String&quot;, # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: &quot;gcr.io/my-project/image:tag&quot; or &quot;gcr.io/my-project/image@digest&quot;
        },
        &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
          &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
          &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
        },
      },
      &quot;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(appsId, servicesId, pageToken=None, view=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists the versions of a service.

Args:
  appsId: string, Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default. (required)
  servicesId: string, Part of `parent`. See documentation of `appsId`. (required)
  pageToken: string, Continuation token for fetching the next page of results.
  view: string, Controls the set of fields returned in the List response.
    Allowed values
      BASIC - Basic version information including scaling and inbound services, but not detailed deployment information.
      FULL - The information from BASIC, plus detailed information about the deployment. This format is required when creating resources, but is not returned in Get or List by default.
  pageSize: integer, Maximum results to return per page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for Versions.ListVersions.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token for fetching the next page of results.
    &quot;versions&quot;: [ # The versions belonging to the requested service.
      { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
          &quot;runtimeApiVersion&quot;: &quot;A String&quot;, # 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//config/appref
          &quot;buildEnvVariables&quot;: { # Environment variables available to the build environment.Only returned in GET requests if view=FULL is set.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
            &quot;path&quot;: &quot;A String&quot;, # The request path.
            &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
            &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
            &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
            &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
            &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
            &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
          },
          &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
          &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
          &quot;vpcAccessConnector&quot;: { # VPC access connector specification. # Enables VPC connectivity for standard apps.
            &quot;name&quot;: &quot;A String&quot;, # Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
          },
          &quot;handlers&quot;: [ # 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.Only returned in GET requests if view=FULL is set.
            { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
              &quot;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
              &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment.
              &quot;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
                &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
              },
              &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
              &quot;urlRegex&quot;: &quot;A String&quot;, # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
              &quot;script&quot;: { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example &quot;script&quot;: &quot;auto&quot;.
                &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
              },
              &quot;staticFiles&quot;: { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
                &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
                &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
                &quot;applicationReadable&quot;: True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
                &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
                &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
                &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
              },
              &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
            },
          ],
          &quot;network&quot;: { # Extra network settings. Only applicable in the App Engine flexible environment. # Extra network settings. Only applicable in the App Engine flexible environment.
            &quot;sessionAffinity&quot;: True or False, # Enable session affinity. Only applicable in the App Engine flexible environment.
            &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment.
              &quot;A String&quot;,
            ],
            &quot;subnetworkName&quot;: &quot;A String&quot;, # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.
            &quot;name&quot;: &quot;A String&quot;, # Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
            &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
          },
          &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
          &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk.@OutputOnly
          &quot;inboundServices&quot;: [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
            &quot;A String&quot;,
          ],
          &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
            &quot;volumes&quot;: [ # User specified volumes.
              { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
                &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
                &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
                &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
              },
            ],
            &quot;kmsKeyReference&quot;: &quot;A String&quot;, # The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk
            &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
            &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
            &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
          },
          &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
            &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
            &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
              &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
              &quot;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
              &quot;maxInstances&quot;: 42, # Maximum number of instances to run for this version. Set to zero to disable max_instances configuration.
              &quot;minInstances&quot;: 42, # Minimum number of instances to run for this version. Set to zero to disable min_instances configuration.
            },
            &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
            &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
            &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
              { # Allows autoscaling based on Stackdriver metrics.
                &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
                &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
                &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
                &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
                &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
              },
            ],
            &quot;maxPendingLatency&quot;: &quot;A String&quot;, # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
            &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
            &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
            &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
              &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
              &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
            },
            &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
              &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
              &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
            },
            &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
            &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
              &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
              &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
              &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
              &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
            },
            &quot;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable in the App Engine flexible environment. # Target scaling by disk usage.
              &quot;targetReadBytesPerSecond&quot;: 42, # Target bytes read per second.
              &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
              &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
              &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
            },
            &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
          },
          &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
          &quot;id&quot;: &quot;A String&quot;, # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: &quot;default&quot;, &quot;latest&quot;, and any name with the prefix &quot;ah-&quot;.
          &quot;healthCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment.Only returned in GET requests if view=FULL is set.
            &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
            &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
            &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
            &quot;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
            &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
            &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
            &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
          },
          &quot;nobuildFilesRegex&quot;: &quot;A String&quot;, # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
          &quot;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
            &quot;A String&quot;,
          ],
          &quot;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;errorHandlers&quot;: [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
            { # Custom static error page to be served when an error occurs.
              &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
              &quot;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
              &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
            },
          ],
          &quot;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
          &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
          &quot;envVariables&quot;: { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
          &quot;readinessCheck&quot;: { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
            &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
            &quot;path&quot;: &quot;A String&quot;, # The request path.
            &quot;appStartTimeout&quot;: &quot;A String&quot;, # A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.
            &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
            &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
            &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
            &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
          },
          &quot;apiConfig&quot;: { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
            &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
            &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
            &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
            &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
            &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
          },
          &quot;appEngineApis&quot;: True or False, # app_engine_apis allows Second Generation runtimes to access the App Engine APIs.
          &quot;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
          &quot;instanceClass&quot;: &quot;A String&quot;, # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
          &quot;manualScaling&quot;: { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as &quot;backends&quot;.
            &quot;instances&quot;: 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
          },
          &quot;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
          &quot;basicScaling&quot;: { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
            &quot;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
            &quot;idleTimeout&quot;: &quot;A String&quot;, # Duration of time after the last request that an instance must wait before the instance is shut down.
          },
          &quot;versionUrl&quot;: &quot;A String&quot;, # Serving URL for this version. Example: &quot;https://myversion-dot-myservice-dot-myapp.appspot.com&quot;@OutputOnly
          &quot;endpointsApiService&quot;: { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a &quot;service&quot; resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
            &quot;disableTraceSampling&quot;: True or False, # Enable or disable trace sampling. By default, this is set to false for enabled.
            &quot;name&quot;: &quot;A String&quot;, # Endpoints service name which is the name of the &quot;service&quot; resource in the Service Management API. For example &quot;myapi.endpoints.myproject.cloud.goog&quot;
            &quot;configId&quot;: &quot;A String&quot;, # Endpoints service configuration ID as specified by the Service Management API. For example &quot;2016-09-19r1&quot;.By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted.
            &quot;rolloutStrategy&quot;: &quot;A String&quot;, # Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted.
          },
          &quot;libraries&quot;: [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
            { # Third-party Python runtime library that is required by the application.
              &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
              &quot;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
            },
          ],
          &quot;servingStatus&quot;: &quot;A String&quot;, # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
          &quot;entrypoint&quot;: { # The entrypoint for the application. # The entrypoint for the application.
            &quot;shell&quot;: &quot;A String&quot;, # The format should be a shell command that can be fed to bash -c.
          },
          &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
            &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
              &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
            },
            &quot;files&quot;: { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
              &quot;a_key&quot;: { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
                &quot;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
                &quot;sourceUrl&quot;: &quot;A String&quot;, # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
                &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file.Defaults to the value from Google Cloud Storage.
              },
            },
            &quot;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
              &quot;sourceUrl&quot;: &quot;A String&quot;, # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
              &quot;filesCount&quot;: 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
            },
            &quot;container&quot;: { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
              &quot;image&quot;: &quot;A String&quot;, # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: &quot;gcr.io/my-project/image:tag&quot; or &quot;gcr.io/my-project/image@digest&quot;
            },
            &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
              &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
              &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
            },
          },
          &quot;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(appsId, servicesId, versionsId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:Standard environment instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class)automatic scaling in the standard environment: automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automaticScaling.standard_scheduler_settings.max_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.min_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_cpu_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_throughput_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings)basic scaling or manual scaling in the standard environment: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status) manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#manualscaling)Flexible environment serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status)automatic scaling in the flexible environment: automatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling)manual scaling in the flexible environment: manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#manualscaling)

Args:
  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1. (required)
  servicesId: string, Part of `name`. See documentation of `appsId`. (required)
  versionsId: string, Part of `name`. See documentation of `appsId`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Version resource is a specific set of source code and configuration files that are deployed into a service.
    &quot;runtimeApiVersion&quot;: &quot;A String&quot;, # 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//config/appref
    &quot;buildEnvVariables&quot;: { # Environment variables available to the build environment.Only returned in GET requests if view=FULL is set.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
      &quot;path&quot;: &quot;A String&quot;, # The request path.
      &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
      &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
      &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
      &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
      &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
      &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
    &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
    &quot;vpcAccessConnector&quot;: { # VPC access connector specification. # Enables VPC connectivity for standard apps.
      &quot;name&quot;: &quot;A String&quot;, # Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.
    },
    &quot;handlers&quot;: [ # 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.Only returned in GET requests if view=FULL is set.
      { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
        &quot;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
        &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Not supported for Node.js in the App Engine standard environment.
        &quot;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
          &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
        },
        &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
        &quot;urlRegex&quot;: &quot;A String&quot;, # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
        &quot;script&quot;: { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the requests that match this URL pattern. Only the auto value is supported for Node.js in the App Engine standard environment, for example &quot;script&quot;: &quot;auto&quot;.
          &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
        },
        &quot;staticFiles&quot;: { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
          &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
          &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
          &quot;applicationReadable&quot;: True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
          &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
          &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
          &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
        },
        &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      },
    ],
    &quot;network&quot;: { # Extra network settings. Only applicable in the App Engine flexible environment. # Extra network settings. Only applicable in the App Engine flexible environment.
      &quot;sessionAffinity&quot;: True or False, # Enable session affinity. Only applicable in the App Engine flexible environment.
      &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable in the App Engine flexible environment.
        &quot;A String&quot;,
      ],
      &quot;subnetworkName&quot;: &quot;A String&quot;, # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network that the instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.
      &quot;name&quot;: &quot;A String&quot;, # Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
      &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
    },
    &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
    &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size in bytes of all the files that are included in this version and currently hosted on the App Engine disk.@OutputOnly
    &quot;inboundServices&quot;: [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
      &quot;A String&quot;,
    ],
    &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
      &quot;volumes&quot;: [ # User specified volumes.
        { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
          &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
          &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
          &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
        },
      ],
      &quot;kmsKeyReference&quot;: &quot;A String&quot;, # The name of the encryption key that is stored in Google Cloud KMS. Only should be used by Cloud Composer to encrypt the vm disk
      &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
      &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
      &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
    },
    &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
      &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
      &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
        &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
        &quot;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
        &quot;maxInstances&quot;: 42, # Maximum number of instances to run for this version. Set to zero to disable max_instances configuration.
        &quot;minInstances&quot;: 42, # Minimum number of instances to run for this version. Set to zero to disable min_instances configuration.
      },
      &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
      &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
      &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
        { # Allows autoscaling based on Stackdriver metrics.
          &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
          &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
          &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
          &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
          &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
        },
      ],
      &quot;maxPendingLatency&quot;: &quot;A String&quot;, # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
      &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
      &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
      &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
        &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
        &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
      },
      &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
        &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
        &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
      },
      &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
      &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
        &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
        &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
        &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
        &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
      },
      &quot;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable in the App Engine flexible environment. # Target scaling by disk usage.
        &quot;targetReadBytesPerSecond&quot;: 42, # Target bytes read per second.
        &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
        &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
        &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
      },
      &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
    },
    &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
    &quot;id&quot;: &quot;A String&quot;, # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: &quot;default&quot;, &quot;latest&quot;, and any name with the prefix &quot;ah-&quot;.
    &quot;healthCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for instances. Unhealthy instances are stopped and replaced with new instances. Only applicable in the App Engine flexible environment.Only returned in GET requests if view=FULL is set.
      &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
      &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
      &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
      &quot;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
      &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
      &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
      &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
    },
    &quot;nobuildFilesRegex&quot;: &quot;A String&quot;, # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
    &quot;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
      &quot;A String&quot;,
    ],
    &quot;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;errorHandlers&quot;: [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
      { # Custom static error page to be served when an error occurs.
        &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
        &quot;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
        &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
      },
    ],
    &quot;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
    &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
    &quot;envVariables&quot;: { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
    &quot;readinessCheck&quot;: { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
      &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
      &quot;path&quot;: &quot;A String&quot;, # The request path.
      &quot;appStartTimeout&quot;: &quot;A String&quot;, # A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.
      &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
      &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
      &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
      &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
    },
    &quot;apiConfig&quot;: { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
      &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
      &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
      &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
      &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
      &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
    },
    &quot;appEngineApis&quot;: True or False, # app_engine_apis allows Second Generation runtimes to access the App Engine APIs.
    &quot;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
    &quot;instanceClass&quot;: &quot;A String&quot;, # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
    &quot;manualScaling&quot;: { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. Manually scaled versions are sometimes referred to as &quot;backends&quot;.
      &quot;instances&quot;: 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
    },
    &quot;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
    &quot;basicScaling&quot;: { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
      &quot;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
      &quot;idleTimeout&quot;: &quot;A String&quot;, # Duration of time after the last request that an instance must wait before the instance is shut down.
    },
    &quot;versionUrl&quot;: &quot;A String&quot;, # Serving URL for this version. Example: &quot;https://myversion-dot-myservice-dot-myapp.appspot.com&quot;@OutputOnly
    &quot;endpointsApiService&quot;: { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy. Only valid for App Engine Flexible environment deployments.The fields here refer to the name and configuration ID of a &quot;service&quot; resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
      &quot;disableTraceSampling&quot;: True or False, # Enable or disable trace sampling. By default, this is set to false for enabled.
      &quot;name&quot;: &quot;A String&quot;, # Endpoints service name which is the name of the &quot;service&quot; resource in the Service Management API. For example &quot;myapi.endpoints.myproject.cloud.goog&quot;
      &quot;configId&quot;: &quot;A String&quot;, # Endpoints service configuration ID as specified by the Service Management API. For example &quot;2016-09-19r1&quot;.By default, the rollout strategy for Endpoints is RolloutStrategy.FIXED. This means that Endpoints starts up with a particular configuration ID. When a new configuration is rolled out, Endpoints must be given the new configuration ID. The config_id field is used to give the configuration ID and is required in this case.Endpoints also has a rollout strategy called RolloutStrategy.MANAGED. When using this, Endpoints fetches the latest configuration and does not need the configuration ID. In this case, config_id must be omitted.
      &quot;rolloutStrategy&quot;: &quot;A String&quot;, # Endpoints rollout strategy. If FIXED, config_id must be specified. If MANAGED, config_id must be omitted.
    },
    &quot;libraries&quot;: [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
      { # Third-party Python runtime library that is required by the application.
        &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
        &quot;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
      },
    ],
    &quot;servingStatus&quot;: &quot;A String&quot;, # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
    &quot;entrypoint&quot;: { # The entrypoint for the application. # The entrypoint for the application.
      &quot;shell&quot;: &quot;A String&quot;, # The format should be a shell command that can be fed to bash -c.
    },
    &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
      &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
        &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
      },
      &quot;files&quot;: { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
        &quot;a_key&quot;: { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
          &quot;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
          &quot;sourceUrl&quot;: &quot;A String&quot;, # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
          &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the file.Defaults to the value from Google Cloud Storage.
        },
      },
      &quot;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
        &quot;sourceUrl&quot;: &quot;A String&quot;, # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form &#x27;http(s)://storage.googleapis.com//&#x27;.
        &quot;filesCount&quot;: 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
      },
      &quot;container&quot;: { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
        &quot;image&quot;: &quot;A String&quot;, # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: &quot;gcr.io/my-project/image:tag&quot; or &quot;gcr.io/my-project/image@digest&quot;
      },
      &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
        &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
        &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
      },
    },
    &quot;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
  }

  updateMask: string, Standard field mask for the set of fields to be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
  }</pre>
</div>

</body></html>