<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

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

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

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

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

{ # A Version resource is a specific set of source code and configuration files that are deployed into a service.
  &quot;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
    &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
    &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
    &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
    &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
  },
  &quot;appEngineApis&quot;: True or False, # app_engine_apis allows second generation runtimes to access the App Engine APIs.
  &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
    &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
    &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
      &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
      &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
    },
    &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
      { # Allows autoscaling based on Stackdriver metrics.
        &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
        &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
        &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
        &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
        &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
      },
    ],
    &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;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
      &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
      &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
    },
    &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
    &quot;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;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
    &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
    &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
    &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
    &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
      &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
      &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
      &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
      &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
    },
    &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;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
      &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;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
      &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
    },
  },
  &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;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &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;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
    &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
      &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
    },
    &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
      &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
      &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
    },
    &quot;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;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;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;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;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
      &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;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;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;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;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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
  &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;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;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
      &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;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;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
        &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
      },
      &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
      &quot;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;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
      &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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
        &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
        &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
        &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
        &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
      },
      &quot;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;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;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;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
    &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
    &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
  },
  &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
      &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
    },
  ],
  &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
    &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
    &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
    &quot;path&quot;: &quot;A String&quot;, # The request path.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
  },
  &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
  &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
    &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;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;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;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;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
    &quot;path&quot;: &quot;A String&quot;, # The request path.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
  },
  &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &quot;diskGb&quot;: 3.14, # Disk size (GB) 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;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;volumes&quot;: [ # User specified volumes.
      { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
        &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
        &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
        &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
      },
    ],
  },
  &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
  &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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &quot;serviceAccount&quot;: &quot;A String&quot;, # The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
  &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
  &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
  &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;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;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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &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;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;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
  &quot;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.
  },
}</pre>
</div>

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

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
  &quot;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &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;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;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
  &quot;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.
  },
}</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;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
    &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
    &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
    &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
    &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
  },
  &quot;appEngineApis&quot;: True or False, # app_engine_apis allows second generation runtimes to access the App Engine APIs.
  &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
    &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
    &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
      &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
      &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
    },
    &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
      { # Allows autoscaling based on Stackdriver metrics.
        &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
        &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
        &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
        &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
        &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
      },
    ],
    &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;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
      &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
      &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
    },
    &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
    &quot;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;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
    &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
    &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
    &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
    &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
      &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
      &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
      &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
      &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
    },
    &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;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
      &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;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
      &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
    },
  },
  &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;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &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;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
    &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
      &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
    },
    &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
      &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
      &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
    },
    &quot;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;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;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;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;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
      &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;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;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;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;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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
  &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;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;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
      &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;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;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
        &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
      },
      &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
      &quot;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;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
      &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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
        &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
        &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
        &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
        &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
      },
      &quot;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;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;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;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
    &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
    &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
  },
  &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
      &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
    },
  ],
  &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
    &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
    &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
    &quot;path&quot;: &quot;A String&quot;, # The request path.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
  },
  &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
  &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
    &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;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;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;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;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
    &quot;path&quot;: &quot;A String&quot;, # The request path.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
  },
  &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &quot;diskGb&quot;: 3.14, # Disk size (GB) 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;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;volumes&quot;: [ # User specified volumes.
      { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
        &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
        &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
        &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
      },
    ],
  },
  &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
  &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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &quot;serviceAccount&quot;: &quot;A String&quot;, # The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
  &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
  &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
  &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;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, pageSize=None, pageToken=None, view=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)
  pageSize: integer, Maximum results to return per page.
  pageToken: string, Continuation token for fetching the next page of results.
  view: string, Controls the set of fields returned in the List response.
    Allowed values
      BASIC - Basic version information including scaling and inbound services, but not detailed deployment information.
      FULL - The information from BASIC, plus detailed information about the deployment. This format is required when creating resources, but is not returned in Get or List by default.
  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;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
        &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
        &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
        &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
        &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
      },
      &quot;appEngineApis&quot;: True or False, # app_engine_apis allows second generation runtimes to access the App Engine APIs.
      &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
        &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
        &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
          &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
          &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
        },
        &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
          { # Allows autoscaling based on Stackdriver metrics.
            &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
            &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
            &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
            &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
            &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
          },
        ],
        &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;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
          &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
          &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
        },
        &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
        &quot;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;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
        &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
        &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
        &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
        &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
          &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
          &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
          &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
          &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
        },
        &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;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
          &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;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
          &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
        },
      },
      &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;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &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;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
      &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
      &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
      &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
        &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
          &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
        },
        &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
          &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
          &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
        },
        &quot;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;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;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;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;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
          &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;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;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;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;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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
      &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;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;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
          &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;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;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
            &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
          },
          &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
          &quot;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;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
          &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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
          &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
            &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
            &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
            &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
            &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
          },
          &quot;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;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;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;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
        &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
        &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
        &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
        &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
      },
      &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
          &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
        },
      ],
      &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
        &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
        &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
        &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
        &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
        &quot;path&quot;: &quot;A String&quot;, # The request path.
        &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
        &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
      },
      &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
      &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
        &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;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;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;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;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
        &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
        &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
        &quot;path&quot;: &quot;A String&quot;, # The request path.
        &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
        &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
      },
      &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
        &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
        &quot;diskGb&quot;: 3.14, # Disk size (GB) 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;memoryGb&quot;: 3.14, # Memory (GB) needed.
        &quot;volumes&quot;: [ # User specified volumes.
          { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
            &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
            &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
            &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
          },
        ],
      },
      &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
      &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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
      &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
      &quot;serviceAccount&quot;: &quot;A String&quot;, # The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
      &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
      &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
      &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;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/v1beta/apps.services.versions#Version.FIELDS.instance_class)automatic scaling in the standard environment: automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automaticScaling.standard_scheduler_settings.max_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.min_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_cpu_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings) automaticScaling.standard_scheduler_settings.target_throughput_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StandardSchedulerSettings)basic scaling or manual scaling in the standard environment: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status) manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#manualscaling)Flexible environment serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status)automatic scaling in the flexible environment: automatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling) automatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling)manual scaling in the flexible environment: manual_scaling.instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#manualscaling)

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

{ # A Version resource is a specific set of source code and configuration files that are deployed into a service.
  &quot;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;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
    &quot;login&quot;: &quot;A String&quot;, # Level of login required to access this resource. Defaults to optional.
    &quot;script&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
    &quot;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
    &quot;url&quot;: &quot;A String&quot;, # URL to serve the endpoint at.
  },
  &quot;appEngineApis&quot;: True or False, # app_engine_apis allows second generation runtimes to access the App Engine APIs.
  &quot;automaticScaling&quot;: { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics. Instances are dynamically created and destroyed as needed in order to handle traffic.
    &quot;coolDownPeriod&quot;: &quot;A String&quot;, # The time period that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. Only applicable in the App Engine flexible environment.
    &quot;cpuUtilization&quot;: { # Target scaling by CPU usage. # Target scaling by CPU usage.
      &quot;aggregationWindowLength&quot;: &quot;A String&quot;, # Period of time over which CPU utilization is calculated.
      &quot;targetUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
    },
    &quot;customMetrics&quot;: [ # Target scaling by user-provided metrics. Only applicable in the App Engine flexible environment.
      { # Allows autoscaling based on Stackdriver metrics.
        &quot;filter&quot;: &quot;A String&quot;, # Allows filtering on the metric&#x27;s fields.
        &quot;metricName&quot;: &quot;A String&quot;, # The name of the metric.
        &quot;singleInstanceAssignment&quot;: 3.14, # May be used instead of target_utilization when an instance can handle a specific amount of work/resources and the metric value is equal to the current amount of work remaining. The autoscaler will try to keep the number of instances equal to the metric value divided by single_instance_assignment.
        &quot;targetType&quot;: &quot;A String&quot;, # The type of the metric. Must be a string representing a Stackdriver metric type e.g. GAGUE, DELTA_PER_SECOND, etc.
        &quot;targetUtilization&quot;: 3.14, # The target value for the metric.
      },
    ],
    &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;targetReadOpsPerSecond&quot;: 42, # Target ops read per seconds.
      &quot;targetWriteBytesPerSecond&quot;: 42, # Target bytes written per second.
      &quot;targetWriteOpsPerSecond&quot;: 42, # Target ops written per second.
    },
    &quot;maxConcurrentRequests&quot;: 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
    &quot;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;maxTotalInstances&quot;: 42, # Maximum number of instances that should be started to handle requests for this version.
    &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
    &quot;minPendingLatency&quot;: &quot;A String&quot;, # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
    &quot;minTotalInstances&quot;: 42, # Minimum number of running instances that should be maintained for this version.
    &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable in the App Engine flexible environment. # Target scaling by network usage.
      &quot;targetReceivedBytesPerSecond&quot;: 42, # Target bytes received per second.
      &quot;targetReceivedPacketsPerSecond&quot;: 42, # Target packets received per second.
      &quot;targetSentBytesPerSecond&quot;: 42, # Target bytes sent per second.
      &quot;targetSentPacketsPerSecond&quot;: 42, # Target packets sent per second.
    },
    &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;standardSchedulerSettings&quot;: { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
      &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;targetCpuUtilization&quot;: 3.14, # Target CPU utilization ratio to maintain when scaling.
      &quot;targetThroughputUtilization&quot;: 3.14, # Target throughput utilization ratio to maintain when scaling
    },
  },
  &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;betaSettings&quot;: { # Metadata settings that are supplied to this version to enable beta runtime features.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &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;createTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &quot;createdBy&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#StaticFilesHandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &quot;deployment&quot;: { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
    &quot;build&quot;: { # Google Cloud Build information. # Google Cloud Build build information. Only applicable for instances running in the App Engine flexible environment.
      &quot;cloudBuildId&quot;: &quot;A String&quot;, # The Google Cloud Build id. Example: &quot;f966068f-08b2-42c8-bdfe-74137dff2bf9&quot;
    },
    &quot;cloudBuildOptions&quot;: { # Options for the build operations performed as a part of the version deployment. Only applicable for App Engine flexible environment when creating a version using source code directly. # Options for any Google Cloud Build builds created as a part of this deployment.These options will only be used if a new build is created, such as when deploying to the App Engine flexible environment using files or zip.
      &quot;appYamlPath&quot;: &quot;A String&quot;, # Path to the yaml file used in deployment, used to determine runtime configuration details.Required for flexible environment builds.See https://cloud.google.com/appengine/docs/standard/python/config/appref for more details.
      &quot;cloudBuildTimeout&quot;: &quot;A String&quot;, # The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.
    },
    &quot;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;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;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;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;zip&quot;: { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
      &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;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;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;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;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;env&quot;: &quot;A String&quot;, # App Engine execution environment for this version.Defaults to standard.
  &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;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;errorCode&quot;: &quot;A String&quot;, # Error condition this handler applies to.
      &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;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;apiEndpoint&quot;: { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
        &quot;scriptPath&quot;: &quot;A String&quot;, # Path to the script from the application root directory.
      },
      &quot;authFailAction&quot;: &quot;A String&quot;, # Action to take when users access resources that require authentication. Defaults to redirect.
      &quot;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;redirectHttpResponseCode&quot;: &quot;A String&quot;, # 30x code to use when performing redirects for the secure field. Defaults to 302.
      &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;securityLevel&quot;: &quot;A String&quot;, # Security (HTTPS) enforcement for this URL.
      &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;expiration&quot;: &quot;A String&quot;, # Time a static file served by this handler should be cached by web proxies and browsers.
        &quot;httpHeaders&quot;: { # HTTP headers to use for all responses from these URLs.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;mimeType&quot;: &quot;A String&quot;, # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file&#x27;s filename extension.
        &quot;path&quot;: &quot;A String&quot;, # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
        &quot;requireMatchingFile&quot;: True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
        &quot;uploadPathRegex&quot;: &quot;A String&quot;, # Regular expression that matches the file paths for all files that should be referenced by this handler.
      },
      &quot;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;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;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;healthyThreshold&quot;: 42, # Number of consecutive successful health checks required before receiving traffic.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing an HTTP health check. Example: &quot;myapp.appspot.com&quot;
    &quot;restartThreshold&quot;: 42, # Number of consecutive failed health checks required before an instance is restarted.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the health check is considered failed.
    &quot;unhealthyThreshold&quot;: 42, # Number of consecutive failed health checks required before removing traffic.
  },
  &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;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;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;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;name&quot;: &quot;A String&quot;, # Name of the library. Example: &quot;django&quot;.
      &quot;version&quot;: &quot;A String&quot;, # Version of the library to select, or &quot;latest&quot;.
    },
  ],
  &quot;livenessCheck&quot;: { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
    &quot;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before considering the VM unhealthy.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Liveness check. Example: &quot;myapp.appspot.com&quot;
    &quot;initialDelay&quot;: &quot;A String&quot;, # The initial delay before starting to execute the checks.
    &quot;path&quot;: &quot;A String&quot;, # The request path.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before considering the VM healthy.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
  },
  &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;name&quot;: &quot;A String&quot;, # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
  &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;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;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the instance during creation. Only applicable in the App Engine flexible environment.
    &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;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;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;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;checkInterval&quot;: &quot;A String&quot;, # Interval between health checks.
    &quot;failureThreshold&quot;: 42, # Number of consecutive failed checks required before removing traffic.
    &quot;host&quot;: &quot;A String&quot;, # Host header to send when performing a HTTP Readiness check. Example: &quot;myapp.appspot.com&quot;
    &quot;path&quot;: &quot;A String&quot;, # The request path.
    &quot;successThreshold&quot;: 42, # Number of consecutive successful checks required before receiving traffic.
    &quot;timeout&quot;: &quot;A String&quot;, # Time before the check is considered failed.
  },
  &quot;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable in the App Engine flexible environment.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &quot;diskGb&quot;: 3.14, # Disk size (GB) 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;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;volumes&quot;: [ # User specified volumes.
      { # Volumes mounted within the app container. Only applicable in the App Engine flexible environment.
        &quot;name&quot;: &quot;A String&quot;, # Unique name for the volume.
        &quot;sizeGb&quot;: 3.14, # Volume size in gigabytes.
        &quot;volumeType&quot;: &quot;A String&quot;, # Underlying volume type, e.g. &#x27;tmpfs&#x27;.
      },
    ],
  },
  &quot;runtime&quot;: &quot;A String&quot;, # Desired runtime. Example: python27.
  &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;runtimeChannel&quot;: &quot;A String&quot;, # The channel of the runtime to use. Only available for some runtimes. Defaults to the default channel.
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &quot;serviceAccount&quot;: &quot;A String&quot;, # The identity that the deployed version will run as. Admin API will use the App Engine Appspot service account as default if this field is neither provided in app.yaml file nor through CLI flag.
  &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;threadsafe&quot;: True or False, # Whether multiple requests can be dispatched to this version at once.
  &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
  &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;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;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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &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;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;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
  &quot;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.
  },
}</pre>
</div>

</body></html>