<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_v1.html">App Engine Admin API</a> . <a href="appengine_v1.apps.html">apps</a> . <a href="appengine_v1.apps.services.html">services</a> . <a href="appengine_v1.apps.services.versions.html">versions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="appengine_v1.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, view=None, pageToken=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/v1/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/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automaticScaling.standard_scheduler_settings.max_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.min_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_cpu_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_throughput_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/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/v1/apps.services.versions#Version.FIELDS.serving_status) manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#manualscaling)Flexible environment serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/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/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/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/v1/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;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;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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
  &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
  &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
    &quot;path&quot;: &quot;A String&quot;, # The request path.
  },
  &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;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;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;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;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;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;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
      },
    },
  },
  &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
  &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
  &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;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;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
    &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;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
    &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
    &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
  },
  &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &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;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
    &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
      &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;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
    },
    &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
    &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;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
      &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
      &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
    },
    &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;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;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
      &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
      &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
    },
    &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;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
      &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
      &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
      &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
      &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
    },
    &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
    &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
      &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
      &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
    },
    &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;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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
    &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
    &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
    &quot;script&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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      &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;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;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;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
        &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &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;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
        &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
      },
      &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;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
    },
  ],
  &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;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;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;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;sizeGb&quot;: 3.14, # Volume size in gigabytes.
        &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
        &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
      },
    ],
    &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &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;diskGb&quot;: 3.14, # Disk size (GB) needed.
  },
  &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;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;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
    &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. 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;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;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;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;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;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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
  &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;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
      &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
      &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
    },
  ],
  &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;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/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &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;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;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;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;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
    &quot;A String&quot;,
  ],
}

  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;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;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;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;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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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}.
  }</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;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;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;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;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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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}.
  }</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;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;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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
    &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
    &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
      &quot;path&quot;: &quot;A String&quot;, # The request path.
    },
    &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;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;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;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;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;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;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
        },
      },
    },
    &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
    &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
    &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;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;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
      &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
      &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;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
      &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
      &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
    },
    &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
    &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;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
      &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
        &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;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
      },
      &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
      &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;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
        &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
        &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
      },
      &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;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;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
        &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
        &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
      },
      &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;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
        &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
        &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
        &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
        &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
      },
      &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
      &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
        &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
        &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
      },
      &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;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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
      &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
      &quot;script&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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
        &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;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;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;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
          &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &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;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
          &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
        },
        &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;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
      },
    ],
    &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;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;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;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;sizeGb&quot;: 3.14, # Volume size in gigabytes.
          &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
          &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
        },
      ],
      &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
      &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
      &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;diskGb&quot;: 3.14, # Disk size (GB) needed.
    },
    &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;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;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
    &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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
    &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
    &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
      &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
      &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
      &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
      &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. 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;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;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;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;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;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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
    &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;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
        &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
        &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
      },
    ],
    &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;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/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
    &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;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;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;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;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
      &quot;A String&quot;,
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(appsId, servicesId, view=None, pageToken=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)
  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.
  pageToken: string, Continuation token for fetching the next page of results.
  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;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;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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
        &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
        &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
          &quot;path&quot;: &quot;A String&quot;, # The request path.
        },
        &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;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;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;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;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;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;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
            },
          },
        },
        &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
        &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
        &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;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;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
          &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
          &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;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
          &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
          &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
        },
        &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
        &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;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
          &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
            &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;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
          },
          &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
          &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;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
            &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
            &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
          },
          &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;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;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
            &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
            &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
          },
          &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;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
            &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
            &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
            &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
            &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
          },
          &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
          &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
            &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
            &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
          },
          &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;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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
          &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
          &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
          &quot;script&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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
            &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;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;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;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
              &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &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;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
              &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
            },
            &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;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
          },
        ],
        &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;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;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;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;sizeGb&quot;: 3.14, # Volume size in gigabytes.
              &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
              &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
            },
          ],
          &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
          &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
          &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;diskGb&quot;: 3.14, # Disk size (GB) needed.
        },
        &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;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;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
        },
        &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
        &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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
        &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
        &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
          &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
          &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
          &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
          &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. 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;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;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;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;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;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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
        &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;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
            &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
            &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
          },
        ],
        &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;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/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
        &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;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;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;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;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
          &quot;A String&quot;,
        ],
      },
    ],
  }</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/v1/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/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automaticScaling.standard_scheduler_settings.max_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.min_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_cpu_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_throughput_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/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/v1/apps.services.versions#Version.FIELDS.serving_status) manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#manualscaling)Flexible environment serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/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/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/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/v1/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;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;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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
  &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
  &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
    &quot;path&quot;: &quot;A String&quot;, # The request path.
  },
  &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;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;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;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;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;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;sha1Sum&quot;: &quot;A String&quot;, # The SHA1 hash of the file, in hex.
      },
    },
  },
  &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
  &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
  &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;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;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
    &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;disableHealthCheck&quot;: True or False, # Whether to explicitly disable health checks for this instance.
    &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
    &quot;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
  },
  &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &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;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
    &quot;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
      &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;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
    },
    &quot;maxIdleInstances&quot;: 42, # Maximum number of idle instances that should be maintained for this version.
    &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;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable in the App Engine flexible environment. # Target scaling by request utilization.
      &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
      &quot;targetRequestCountPerSecond&quot;: 42, # Target requests per second.
    },
    &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;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;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
      &quot;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
      &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
    },
    &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;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
      &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
      &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
      &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
      &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
    },
    &quot;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
    &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
      &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
      &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
    },
    &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;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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
    &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
    &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
    &quot;script&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;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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      &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;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;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;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
        &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &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;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
        &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
      },
      &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;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
    },
  ],
  &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;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;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;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;sizeGb&quot;: 3.14, # Volume size in gigabytes.
        &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
        &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
      },
    ],
    &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &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;diskGb&quot;: 3.14, # Disk size (GB) needed.
  },
  &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;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;maxInstances&quot;: 42, # Maximum number of instances to create for this version.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &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;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;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
    &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. 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;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;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;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;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;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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
  &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;mimeType&quot;: &quot;A String&quot;, # MIME type of file. Defaults to text/html.
      &quot;staticFile&quot;: &quot;A String&quot;, # Static file content to be served for this error.
      &quot;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
    },
  ],
  &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;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/v1/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &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;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;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;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;zones&quot;: [ # The Google Compute Engine zones that are supported by this version in the App Engine flexible environment. Deprecated.
    &quot;A String&quot;,
  ],
}

  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;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;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;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;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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &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;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}.
  }</pre>
</div>

</body></html>