<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_v1beta5.html">App Engine Admin API</a> . <a href="appengine_v1beta5.apps.html">apps</a> . <a href="appengine_v1beta5.apps.services.html">services</a> . <a href="appengine_v1beta5.apps.services.versions.html">versions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="appengine_v1beta5.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 new 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.</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, mask=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:</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 new code and resource files to a new version.

Args:
  appsId: string, Part of `name`. Name of the resource to update. For example: &quot;apps/myapp/services/default&quot;. (required)
  servicesId: 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;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.
    &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;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
      &quot;targetReadBytesPerSec&quot;: 42, # Target bytes read per second.
      &quot;targetReadOpsPerSec&quot;: 42, # Target ops read per second.
      &quot;targetWriteBytesPerSec&quot;: 42, # Target bytes written per second.
      &quot;targetWriteOpsPerSec&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.
    &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
    &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 instances that should be maintained for this version.
    &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
      &quot;targetReceivedBytesPerSec&quot;: 42, # Target bytes received per second.
      &quot;targetReceivedPacketsPerSec&quot;: 42, # Target packets received per second.
      &quot;targetSentBytesPerSec&quot;: 42, # Target bytes sent per second.
      &quot;targetSentPacketsPerSec&quot;: 42, # Target packets sent per second.
    },
    &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
      &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
      &quot;targetRequestCountPerSec&quot;: 42, # Target requests per second.
    },
  },
  &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;creationTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &quot;deployer&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &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;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/&lt;bucket&gt;/&lt;object&gt;&#x27;.
      },
    },
    &quot;sourceReferences&quot;: [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
      { # Reference to a particular snapshot of the source tree used to build and deploy the application.
        &quot;repository&quot;: &quot;A String&quot;, # URI string identifying the repository. Example: &quot;https://source.developers.google.com/p/app-123/r/default&quot;
        &quot;revisionId&quot;: &quot;A String&quot;, # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): &quot;2198322f89e0bb2e25021667c2ed489d1fd34e6b&quot;
      },
    ],
  },
  &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size of version files hosted on App Engine disk in bytes.@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 Endpoints service configuration id is fixed and config_id must be specified. To keep the Endpoints service configuration id updated with each rollout, specify RolloutStrategy.MANAGED and omit config_id.
    &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;env&quot;: &quot;A String&quot;, # App Engine execution environment to use for this version.Defaults to 1.
  &quot;envVariables&quot;: { # Environment variables made 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.
      &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 request that matches this URL pattern.
        &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.
        &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;, # A 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 VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.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 module. 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 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;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.
    &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 for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
    &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
      &quot;A String&quot;,
    ],
    &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the VM instance during creation.
    &quot;name&quot;: &quot;A String&quot;, # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
    &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 the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.
        # If the network the VM 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 the VM 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 Flex app.
  },
  &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;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
    &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;volumes&quot;: [ # Volumes mounted within the app container.
      { # Volumes mounted within the app container. Only applicable for VM runtimes.
        &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/&lt;language&gt;/config/appref
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
}

  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). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
      # Simple to use and understand for most users
      # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
      # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
      # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
      # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
      # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
      # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
    &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 have the format of operations/some/unique/name.
  &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.

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). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
      # Simple to use and understand for most users
      # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
      # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
      # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
      # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
      # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
      # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
    &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 have the format of operations/some/unique/name.
  &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.
  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;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.
    &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;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
      &quot;targetReadBytesPerSec&quot;: 42, # Target bytes read per second.
      &quot;targetReadOpsPerSec&quot;: 42, # Target ops read per second.
      &quot;targetWriteBytesPerSec&quot;: 42, # Target bytes written per second.
      &quot;targetWriteOpsPerSec&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.
    &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
    &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 instances that should be maintained for this version.
    &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
      &quot;targetReceivedBytesPerSec&quot;: 42, # Target bytes received per second.
      &quot;targetReceivedPacketsPerSec&quot;: 42, # Target packets received per second.
      &quot;targetSentBytesPerSec&quot;: 42, # Target bytes sent per second.
      &quot;targetSentPacketsPerSec&quot;: 42, # Target packets sent per second.
    },
    &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
      &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
      &quot;targetRequestCountPerSec&quot;: 42, # Target requests per second.
    },
  },
  &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;creationTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &quot;deployer&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &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;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/&lt;bucket&gt;/&lt;object&gt;&#x27;.
      },
    },
    &quot;sourceReferences&quot;: [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
      { # Reference to a particular snapshot of the source tree used to build and deploy the application.
        &quot;repository&quot;: &quot;A String&quot;, # URI string identifying the repository. Example: &quot;https://source.developers.google.com/p/app-123/r/default&quot;
        &quot;revisionId&quot;: &quot;A String&quot;, # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): &quot;2198322f89e0bb2e25021667c2ed489d1fd34e6b&quot;
      },
    ],
  },
  &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size of version files hosted on App Engine disk in bytes.@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 Endpoints service configuration id is fixed and config_id must be specified. To keep the Endpoints service configuration id updated with each rollout, specify RolloutStrategy.MANAGED and omit config_id.
    &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;env&quot;: &quot;A String&quot;, # App Engine execution environment to use for this version.Defaults to 1.
  &quot;envVariables&quot;: { # Environment variables made 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.
      &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 request that matches this URL pattern.
        &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.
        &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;, # A 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 VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.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 module. 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 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;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.
    &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 for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
    &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
      &quot;A String&quot;,
    ],
    &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the VM instance during creation.
    &quot;name&quot;: &quot;A String&quot;, # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
    &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 the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.
        # If the network the VM 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 the VM 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 Flex app.
  },
  &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;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
    &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;volumes&quot;: [ # Volumes mounted within the app container.
      { # Volumes mounted within the app container. Only applicable for VM runtimes.
        &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/&lt;language&gt;/config/appref
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
}</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 `name`. Name of the resource requested. Example: apps/myapp/services/default. (required)
  servicesId: string, Part of `name`. 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.
  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;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.
        &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;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
          &quot;targetReadBytesPerSec&quot;: 42, # Target bytes read per second.
          &quot;targetReadOpsPerSec&quot;: 42, # Target ops read per second.
          &quot;targetWriteBytesPerSec&quot;: 42, # Target bytes written per second.
          &quot;targetWriteOpsPerSec&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.
        &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
        &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 instances that should be maintained for this version.
        &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
          &quot;targetReceivedBytesPerSec&quot;: 42, # Target bytes received per second.
          &quot;targetReceivedPacketsPerSec&quot;: 42, # Target packets received per second.
          &quot;targetSentBytesPerSec&quot;: 42, # Target bytes sent per second.
          &quot;targetSentPacketsPerSec&quot;: 42, # Target packets sent per second.
        },
        &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
          &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
          &quot;targetRequestCountPerSec&quot;: 42, # Target requests per second.
        },
      },
      &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;creationTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
      &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
      &quot;deployer&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
      &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;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/&lt;bucket&gt;/&lt;object&gt;&#x27;.
          },
        },
        &quot;sourceReferences&quot;: [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
          { # Reference to a particular snapshot of the source tree used to build and deploy the application.
            &quot;repository&quot;: &quot;A String&quot;, # URI string identifying the repository. Example: &quot;https://source.developers.google.com/p/app-123/r/default&quot;
            &quot;revisionId&quot;: &quot;A String&quot;, # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): &quot;2198322f89e0bb2e25021667c2ed489d1fd34e6b&quot;
          },
        ],
      },
      &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size of version files hosted on App Engine disk in bytes.@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 Endpoints service configuration id is fixed and config_id must be specified. To keep the Endpoints service configuration id updated with each rollout, specify RolloutStrategy.MANAGED and omit config_id.
        &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;env&quot;: &quot;A String&quot;, # App Engine execution environment to use for this version.Defaults to 1.
      &quot;envVariables&quot;: { # Environment variables made 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.
          &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 request that matches this URL pattern.
            &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.
            &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;, # A 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 VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.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 module. 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 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;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.
        &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 for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
        &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
          &quot;A String&quot;,
        ],
        &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the VM instance during creation.
        &quot;name&quot;: &quot;A String&quot;, # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
        &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 the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.
            # If the network the VM 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 the VM 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 Flex app.
      },
      &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;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
        &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
        &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
        &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
        &quot;volumes&quot;: [ # Volumes mounted within the app container.
          { # Volumes mounted within the app container. Only applicable for VM runtimes.
            &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/&lt;language&gt;/config/appref
      &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
      &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
    },
  ],
}</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, mask=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:
serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.serving_status):  For Version resources that use basic scaling, manual scaling, or run in  the App Engine flexible environment.
instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.instance_class):  For Version resources that run in the App Engine standard environment.
automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.
automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.

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;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.
    &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;diskUtilization&quot;: { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
      &quot;targetReadBytesPerSec&quot;: 42, # Target bytes read per second.
      &quot;targetReadOpsPerSec&quot;: 42, # Target ops read per second.
      &quot;targetWriteBytesPerSec&quot;: 42, # Target bytes written per second.
      &quot;targetWriteOpsPerSec&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.
    &quot;minIdleInstances&quot;: 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
    &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 instances that should be maintained for this version.
    &quot;networkUtilization&quot;: { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
      &quot;targetReceivedBytesPerSec&quot;: 42, # Target bytes received per second.
      &quot;targetReceivedPacketsPerSec&quot;: 42, # Target packets received per second.
      &quot;targetSentBytesPerSec&quot;: 42, # Target bytes sent per second.
      &quot;targetSentPacketsPerSec&quot;: 42, # Target packets sent per second.
    },
    &quot;requestUtilization&quot;: { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
      &quot;targetConcurrentRequests&quot;: 42, # Target number of concurrent requests.
      &quot;targetRequestCountPerSec&quot;: 42, # Target requests per second.
    },
  },
  &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;creationTime&quot;: &quot;A String&quot;, # Time that this version was created.@OutputOnly
  &quot;defaultExpiration&quot;: &quot;A String&quot;, # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
  &quot;deployer&quot;: &quot;A String&quot;, # Email address of the user who created this version.@OutputOnly
  &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;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/&lt;bucket&gt;/&lt;object&gt;&#x27;.
      },
    },
    &quot;sourceReferences&quot;: [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
      { # Reference to a particular snapshot of the source tree used to build and deploy the application.
        &quot;repository&quot;: &quot;A String&quot;, # URI string identifying the repository. Example: &quot;https://source.developers.google.com/p/app-123/r/default&quot;
        &quot;revisionId&quot;: &quot;A String&quot;, # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): &quot;2198322f89e0bb2e25021667c2ed489d1fd34e6b&quot;
      },
    ],
  },
  &quot;diskUsageBytes&quot;: &quot;A String&quot;, # Total size of version files hosted on App Engine disk in bytes.@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 Endpoints service configuration id is fixed and config_id must be specified. To keep the Endpoints service configuration id updated with each rollout, specify RolloutStrategy.MANAGED and omit config_id.
    &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;env&quot;: &quot;A String&quot;, # App Engine execution environment to use for this version.Defaults to 1.
  &quot;envVariables&quot;: { # Environment variables made 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.
      &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 request that matches this URL pattern.
        &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.
        &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;, # A 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 VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.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 module. 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 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;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.
    &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 for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
    &quot;forwardedPorts&quot;: [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
      &quot;A String&quot;,
    ],
    &quot;instanceTag&quot;: &quot;A String&quot;, # Tag to apply to the VM instance during creation.
    &quot;name&quot;: &quot;A String&quot;, # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
    &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 the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.
        # If the network the VM 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 the VM 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 Flex app.
  },
  &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;resources&quot;: { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
    &quot;cpu&quot;: 3.14, # Number of CPU cores needed.
    &quot;diskGb&quot;: 3.14, # Disk size (GB) needed.
    &quot;memoryGb&quot;: 3.14, # Memory (GB) needed.
    &quot;volumes&quot;: [ # Volumes mounted within the app container.
      { # Volumes mounted within the app container. Only applicable for VM runtimes.
        &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/&lt;language&gt;/config/appref
  &quot;runtimeMainExecutablePath&quot;: &quot;A String&quot;, # The path or name of the app&#x27;s main executable.
  &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;vm&quot;: True or False, # Whether to deploy this version in a container on a virtual machine.
}

  mask: 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). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
      # Simple to use and understand for most users
      # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
      # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
      # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
      # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
      # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
      # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
    &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 have the format of operations/some/unique/name.
  &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>