<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

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

<p class="toc_element">
  <code><a href="#create">create(appsId, servicesId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Deploys code and resource files to a new version.</p>
<p class="toc_element">
  <code><a href="#delete">delete(appsId, servicesId, versionsId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an existing Version resource.</p>
<p class="toc_element">
  <code><a href="#get">get(appsId, servicesId, versionsId, x__xgafv=None, view=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, x__xgafv=None, view=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, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(appsId, servicesId, body, x__xgafv=None)</code>
  <pre>Deploys code and resource files to a new version.

Args:
  appsId: string, Part of `parent`. Name of the parent resource to create this version under. Example: apps/myapp/services/default. (required)
  servicesId: string, Part of `parent`. See documentation of `appsId`. (required)
  body: object, The request body. (required)
    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.
    "endpointsApiService": { # 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.The fields here refer to the name and configuration id of a "service" 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.
      "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
      "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
    },
    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
    "basicScaling": { # 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.
      "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
      "maxInstances": 42, # Maximum number of instances to create for this version.
    },
    "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
    "instanceClass": "A String", # 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.
    "errorHandlers": [ # 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.
        "errorCode": "A String", # Error condition this handler applies to.
        "mimeType": "A String", # MIME type of file. Defaults to text/html.
        "staticFile": "A String", # Static file content to be served for this error.
      },
    ],
    "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
    "readinessCheck": { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
      "checkInterval": "A String", # Interval between health checks.
      "host": "A String", # Host header to send when performing a HTTP Readiness check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the check is considered failed.
      "path": "A String", # The request path.
      "successThreshold": 42, # Number of consecutive successful checks required before receiving traffic.
      "failureThreshold": 42, # Number of consecutive failed checks required before removing traffic.
    },
    "apiConfig": { # 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.
      "url": "A String", # URL to serve the endpoint at.
      "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
      "login": "A String", # Level of login required to access this resource. Defaults to optional.
      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
      "script": "A String", # Path to the script from the application root directory.
    },
    "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
      "instanceTag": "A String", # Tag to apply to the VM instance during creation.
      "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
        "A String",
      ],
      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
      "subnetworkName": "A String", # 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.
    },
    "healthCheck": { # 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 stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
      "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
      "checkInterval": "A String", # Interval between health checks.
      "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
      "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
      "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the health check is considered failed.
      "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
    },
    "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
    "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
      { # Third-party Python runtime library that is required by the application.
        "version": "A String", # Version of the library to select, or "latest".
        "name": "A String", # Name of the library. Example: "django".
      },
    ],
    "env": "A String", # App Engine execution environment for this version.Defaults to standard.
    "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
    "automaticScaling": { # 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.
      "standardSchedulerSettings": { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
        "targetCpuUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling.
        "targetThroughputUtilization": 3.14, # Target throughput utilization ratio to maintain when scaling
      },
      "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
      "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
        "targetReceivedPacketsPerSecond": 42, # Target packets received per second.
        "targetSentPacketsPerSecond": 42, # Target packets sent per second.
        "targetReceivedBytesPerSecond": 42, # Target bytes received per second.
        "targetSentBytesPerSecond": 42, # Target bytes sent per second.
      },
      "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
      "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
      "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
      "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
        "targetReadOpsPerSecond": 42, # Target ops read per seconds.
        "targetWriteBytesPerSecond": 42, # Target bytes written per second.
        "targetReadBytesPerSecond": 42, # Target bytes read per second.
        "targetWriteOpsPerSecond": 42, # Target ops written per second.
      },
      "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
        "targetConcurrentRequests": 42, # Target number of concurrent requests.
        "targetRequestCountPerSecond": 42, # Target requests per second.
      },
      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
      "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
      "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
      "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
        "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
        "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
      },
    },
    "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
      "a_key": "A String",
    },
    "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
      "memoryGb": 3.14, # Memory (GB) needed.
      "diskGb": 3.14, # Disk size (GB) needed.
      "cpu": 3.14, # Number of CPU cores needed.
      "volumes": [ # User specified volumes.
        { # Volumes mounted within the app container. Only applicable for VM runtimes.
          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
          "name": "A String", # Unique name for the volume.
          "sizeGb": 3.14, # Volume size in gigabytes.
        },
      ],
    },
    "manualScaling": { # 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.
      "instances": 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.
    },
    "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
      "A String",
    ],
    "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
      "a_key": "A String",
    },
    "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
    "deployment": { # 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.
      "files": { # 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.
        "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
          "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
        },
      },
      "container": { # 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.
        "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
      },
      "build": { # Google Cloud Container Builder build information. # Google Cloud Container Builder build information.
        "cloudBuildId": "A String", # The Google Cloud Container Builder build id. Example: "f966068f-08b2-42c8-bdfe-74137dff2bf9"
      },
      "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
        "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
        "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
      },
    },
    "livenessCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
      "checkInterval": "A String", # Interval between health checks.
      "initialDelay": "A String", # The initial delay before starting to execute the checks.
      "host": "A String", # Host header to send when performing a HTTP Liveness check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the check is considered failed.
      "path": "A String", # The request path.
      "successThreshold": 42, # Number of consecutive successful checks required before considering the VM healthy.
      "failureThreshold": 42, # Number of consecutive failed checks required before considering the VM unhealthy.
    },
    "createTime": "A String", # Time that this version was created.@OutputOnly
    "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
    "runtimeApiVersion": "A String", # 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/<language>/config/appref
    "nobuildFilesRegex": "A String", # 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.
    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.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.
        "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
        "urlRegex": "A String", # 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.
        "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "staticFiles": { # 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.
          "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
          "applicationReadable": 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.
          "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
          "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
          "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
          "path": "A String", # 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.
          "httpHeaders": { # HTTP headers to use for all responses from these URLs.
            "a_key": "A String",
          },
        },
        "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "login": "A String", # Level of login required to access this resource.
        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
      },
    ],
    "servingStatus": "A String", # 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.
    "runtime": "A String", # Desired runtime. Example: python27.
  }

  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.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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.
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(appsId, servicesId, versionsId, x__xgafv=None, view=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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Controls the set of fields returned in the Get response.

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.
      "endpointsApiService": { # 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.The fields here refer to the name and configuration id of a "service" 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.
        "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
        "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
      },
      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
      "basicScaling": { # 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.
        "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
        "maxInstances": 42, # Maximum number of instances to create for this version.
      },
      "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
      "instanceClass": "A String", # 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.
      "errorHandlers": [ # 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.
          "errorCode": "A String", # Error condition this handler applies to.
          "mimeType": "A String", # MIME type of file. Defaults to text/html.
          "staticFile": "A String", # Static file content to be served for this error.
        },
      ],
      "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
      "readinessCheck": { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
        "checkInterval": "A String", # Interval between health checks.
        "host": "A String", # Host header to send when performing a HTTP Readiness check. Example: "myapp.appspot.com"
        "timeout": "A String", # Time before the check is considered failed.
        "path": "A String", # The request path.
        "successThreshold": 42, # Number of consecutive successful checks required before receiving traffic.
        "failureThreshold": 42, # Number of consecutive failed checks required before removing traffic.
      },
      "apiConfig": { # 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.
        "url": "A String", # URL to serve the endpoint at.
        "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
        "login": "A String", # Level of login required to access this resource. Defaults to optional.
        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
        "script": "A String", # Path to the script from the application root directory.
      },
      "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
        "instanceTag": "A String", # Tag to apply to the VM instance during creation.
        "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
          "A String",
        ],
        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
        "subnetworkName": "A String", # 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.
      },
      "healthCheck": { # 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 stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
        "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
        "checkInterval": "A String", # Interval between health checks.
        "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
        "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
        "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
        "timeout": "A String", # Time before the health check is considered failed.
        "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
      },
      "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
      "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
        { # Third-party Python runtime library that is required by the application.
          "version": "A String", # Version of the library to select, or "latest".
          "name": "A String", # Name of the library. Example: "django".
        },
      ],
      "env": "A String", # App Engine execution environment for this version.Defaults to standard.
      "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
      "automaticScaling": { # 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.
        "standardSchedulerSettings": { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
          "targetCpuUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling.
          "targetThroughputUtilization": 3.14, # Target throughput utilization ratio to maintain when scaling
        },
        "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
        "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
          "targetReceivedPacketsPerSecond": 42, # Target packets received per second.
          "targetSentPacketsPerSecond": 42, # Target packets sent per second.
          "targetReceivedBytesPerSecond": 42, # Target bytes received per second.
          "targetSentBytesPerSecond": 42, # Target bytes sent per second.
        },
        "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
        "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
        "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
        "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
          "targetReadOpsPerSecond": 42, # Target ops read per seconds.
          "targetWriteBytesPerSecond": 42, # Target bytes written per second.
          "targetReadBytesPerSecond": 42, # Target bytes read per second.
          "targetWriteOpsPerSecond": 42, # Target ops written per second.
        },
        "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
          "targetConcurrentRequests": 42, # Target number of concurrent requests.
          "targetRequestCountPerSecond": 42, # Target requests per second.
        },
        "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
        "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
        "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
        "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
          "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
          "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
        },
      },
      "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
        "a_key": "A String",
      },
      "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
        "memoryGb": 3.14, # Memory (GB) needed.
        "diskGb": 3.14, # Disk size (GB) needed.
        "cpu": 3.14, # Number of CPU cores needed.
        "volumes": [ # User specified volumes.
          { # Volumes mounted within the app container. Only applicable for VM runtimes.
            "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
            "name": "A String", # Unique name for the volume.
            "sizeGb": 3.14, # Volume size in gigabytes.
          },
        ],
      },
      "manualScaling": { # 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.
        "instances": 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.
      },
      "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
        "A String",
      ],
      "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
        "a_key": "A String",
      },
      "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
      "deployment": { # 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.
        "files": { # 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.
          "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
            "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
            "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
          },
        },
        "container": { # 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.
          "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
        },
        "build": { # Google Cloud Container Builder build information. # Google Cloud Container Builder build information.
          "cloudBuildId": "A String", # The Google Cloud Container Builder build id. Example: "f966068f-08b2-42c8-bdfe-74137dff2bf9"
        },
        "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
          "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
          "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
        },
      },
      "livenessCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
        "checkInterval": "A String", # Interval between health checks.
        "initialDelay": "A String", # The initial delay before starting to execute the checks.
        "host": "A String", # Host header to send when performing a HTTP Liveness check. Example: "myapp.appspot.com"
        "timeout": "A String", # Time before the check is considered failed.
        "path": "A String", # The request path.
        "successThreshold": 42, # Number of consecutive successful checks required before considering the VM healthy.
        "failureThreshold": 42, # Number of consecutive failed checks required before considering the VM unhealthy.
      },
      "createTime": "A String", # Time that this version was created.@OutputOnly
      "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
      "runtimeApiVersion": "A String", # 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/<language>/config/appref
      "nobuildFilesRegex": "A String", # 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.
      "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.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.
          "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
          "urlRegex": "A String", # 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.
          "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
            "scriptPath": "A String", # Path to the script from the application root directory.
          },
          "staticFiles": { # 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.
            "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
            "applicationReadable": 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.
            "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
            "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
            "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
            "path": "A String", # 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.
            "httpHeaders": { # HTTP headers to use for all responses from these URLs.
              "a_key": "A String",
            },
          },
          "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
            "scriptPath": "A String", # Path to the script from the application root directory.
          },
          "login": "A String", # Level of login required to access this resource.
          "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
        },
      ],
      "servingStatus": "A String", # 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.
      "runtime": "A String", # Desired runtime. Example: python27.
    }</pre>
</div>

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

Args:
  appsId: string, Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default. (required)
  servicesId: string, Part of `parent`. See documentation of `appsId`. (required)
  pageSize: integer, Maximum results to return per page.
  pageToken: string, Continuation token for fetching the next page of results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Controls the set of fields returned in the List response.

Returns:
  An object of the form:

    { # Response message for Versions.ListVersions.
    "nextPageToken": "A String", # Continuation token for fetching the next page of results.
    "versions": [ # 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.
          "endpointsApiService": { # 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.The fields here refer to the name and configuration id of a "service" 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.
            "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
            "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
          },
          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
          "basicScaling": { # 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.
            "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
            "maxInstances": 42, # Maximum number of instances to create for this version.
          },
          "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
          "instanceClass": "A String", # 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.
          "errorHandlers": [ # 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.
              "errorCode": "A String", # Error condition this handler applies to.
              "mimeType": "A String", # MIME type of file. Defaults to text/html.
              "staticFile": "A String", # Static file content to be served for this error.
            },
          ],
          "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
          "readinessCheck": { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
            "checkInterval": "A String", # Interval between health checks.
            "host": "A String", # Host header to send when performing a HTTP Readiness check. Example: "myapp.appspot.com"
            "timeout": "A String", # Time before the check is considered failed.
            "path": "A String", # The request path.
            "successThreshold": 42, # Number of consecutive successful checks required before receiving traffic.
            "failureThreshold": 42, # Number of consecutive failed checks required before removing traffic.
          },
          "apiConfig": { # 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.
            "url": "A String", # URL to serve the endpoint at.
            "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
            "login": "A String", # Level of login required to access this resource. Defaults to optional.
            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
            "script": "A String", # Path to the script from the application root directory.
          },
          "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
            "instanceTag": "A String", # Tag to apply to the VM instance during creation.
            "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
              "A String",
            ],
            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
            "subnetworkName": "A String", # 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.
          },
          "healthCheck": { # 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 stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
            "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
            "checkInterval": "A String", # Interval between health checks.
            "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
            "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
            "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
            "timeout": "A String", # Time before the health check is considered failed.
            "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
          },
          "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
          "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
            { # Third-party Python runtime library that is required by the application.
              "version": "A String", # Version of the library to select, or "latest".
              "name": "A String", # Name of the library. Example: "django".
            },
          ],
          "env": "A String", # App Engine execution environment for this version.Defaults to standard.
          "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
          "automaticScaling": { # 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.
            "standardSchedulerSettings": { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
              "targetCpuUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling.
              "targetThroughputUtilization": 3.14, # Target throughput utilization ratio to maintain when scaling
            },
            "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
            "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
              "targetReceivedPacketsPerSecond": 42, # Target packets received per second.
              "targetSentPacketsPerSecond": 42, # Target packets sent per second.
              "targetReceivedBytesPerSecond": 42, # Target bytes received per second.
              "targetSentBytesPerSecond": 42, # Target bytes sent per second.
            },
            "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
            "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
            "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
            "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
              "targetReadOpsPerSecond": 42, # Target ops read per seconds.
              "targetWriteBytesPerSecond": 42, # Target bytes written per second.
              "targetReadBytesPerSecond": 42, # Target bytes read per second.
              "targetWriteOpsPerSecond": 42, # Target ops written per second.
            },
            "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
              "targetConcurrentRequests": 42, # Target number of concurrent requests.
              "targetRequestCountPerSecond": 42, # Target requests per second.
            },
            "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
            "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
            "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
            "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
              "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
              "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
            },
          },
          "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
            "a_key": "A String",
          },
          "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
            "memoryGb": 3.14, # Memory (GB) needed.
            "diskGb": 3.14, # Disk size (GB) needed.
            "cpu": 3.14, # Number of CPU cores needed.
            "volumes": [ # User specified volumes.
              { # Volumes mounted within the app container. Only applicable for VM runtimes.
                "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
                "name": "A String", # Unique name for the volume.
                "sizeGb": 3.14, # Volume size in gigabytes.
              },
            ],
          },
          "manualScaling": { # 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.
            "instances": 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.
          },
          "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
            "A String",
          ],
          "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
            "a_key": "A String",
          },
          "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
          "deployment": { # 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.
            "files": { # 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.
              "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
                "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
                "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
              },
            },
            "container": { # 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.
              "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
            },
            "build": { # Google Cloud Container Builder build information. # Google Cloud Container Builder build information.
              "cloudBuildId": "A String", # The Google Cloud Container Builder build id. Example: "f966068f-08b2-42c8-bdfe-74137dff2bf9"
            },
            "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
              "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
              "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
            },
          },
          "livenessCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
            "checkInterval": "A String", # Interval between health checks.
            "initialDelay": "A String", # The initial delay before starting to execute the checks.
            "host": "A String", # Host header to send when performing a HTTP Liveness check. Example: "myapp.appspot.com"
            "timeout": "A String", # Time before the check is considered failed.
            "path": "A String", # The request path.
            "successThreshold": 42, # Number of consecutive successful checks required before considering the VM healthy.
            "failureThreshold": 42, # Number of consecutive failed checks required before considering the VM unhealthy.
          },
          "createTime": "A String", # Time that this version was created.@OutputOnly
          "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
          "runtimeApiVersion": "A String", # 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/<language>/config/appref
          "nobuildFilesRegex": "A String", # 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.
          "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.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.
              "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
              "urlRegex": "A String", # 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.
              "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
                "scriptPath": "A String", # Path to the script from the application root directory.
              },
              "staticFiles": { # 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.
                "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
                "applicationReadable": 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.
                "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
                "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
                "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
                "path": "A String", # 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.
                "httpHeaders": { # HTTP headers to use for all responses from these URLs.
                  "a_key": "A String",
                },
              },
              "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
                "scriptPath": "A String", # Path to the script from the application root directory.
              },
              "login": "A String", # Level of login required to access this resource.
              "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
            },
          ],
          "servingStatus": "A String", # 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.
          "runtime": "A String", # Desired runtime. Example: python27.
        },
    ],
  }</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 'execute()' 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, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:
serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/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/v1beta/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/v1beta/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/v1beta/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. (required)
    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.
    "endpointsApiService": { # 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.The fields here refer to the name and configuration id of a "service" 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.
      "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
      "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
    },
    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
    "basicScaling": { # 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.
      "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
      "maxInstances": 42, # Maximum number of instances to create for this version.
    },
    "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
    "instanceClass": "A String", # 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.
    "errorHandlers": [ # 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.
        "errorCode": "A String", # Error condition this handler applies to.
        "mimeType": "A String", # MIME type of file. Defaults to text/html.
        "staticFile": "A String", # Static file content to be served for this error.
      },
    ],
    "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
    "readinessCheck": { # Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation. # Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.
      "checkInterval": "A String", # Interval between health checks.
      "host": "A String", # Host header to send when performing a HTTP Readiness check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the check is considered failed.
      "path": "A String", # The request path.
      "successThreshold": 42, # Number of consecutive successful checks required before receiving traffic.
      "failureThreshold": 42, # Number of consecutive failed checks required before removing traffic.
    },
    "apiConfig": { # 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.
      "url": "A String", # URL to serve the endpoint at.
      "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
      "login": "A String", # Level of login required to access this resource. Defaults to optional.
      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
      "script": "A String", # Path to the script from the application root directory.
    },
    "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
      "instanceTag": "A String", # Tag to apply to the VM instance during creation.
      "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
        "A String",
      ],
      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
      "subnetworkName": "A String", # 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.
    },
    "healthCheck": { # 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 stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
      "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
      "checkInterval": "A String", # Interval between health checks.
      "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
      "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
      "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the health check is considered failed.
      "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
    },
    "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
    "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
      { # Third-party Python runtime library that is required by the application.
        "version": "A String", # Version of the library to select, or "latest".
        "name": "A String", # Name of the library. Example: "django".
      },
    ],
    "env": "A String", # App Engine execution environment for this version.Defaults to standard.
    "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
    "automaticScaling": { # 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.
      "standardSchedulerSettings": { # Scheduler settings for standard environment. # Scheduler settings for standard environment.
        "targetCpuUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling.
        "targetThroughputUtilization": 3.14, # Target throughput utilization ratio to maintain when scaling
      },
      "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
      "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
        "targetReceivedPacketsPerSecond": 42, # Target packets received per second.
        "targetSentPacketsPerSecond": 42, # Target packets sent per second.
        "targetReceivedBytesPerSecond": 42, # Target bytes received per second.
        "targetSentBytesPerSecond": 42, # Target bytes sent per second.
      },
      "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.
      "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
      "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
      "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
        "targetReadOpsPerSecond": 42, # Target ops read per seconds.
        "targetWriteBytesPerSecond": 42, # Target bytes written per second.
        "targetReadBytesPerSecond": 42, # Target bytes read per second.
        "targetWriteOpsPerSecond": 42, # Target ops written per second.
      },
      "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
        "targetConcurrentRequests": 42, # Target number of concurrent requests.
        "targetRequestCountPerSecond": 42, # Target requests per second.
      },
      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
      "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
      "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
      "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
        "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
        "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
      },
    },
    "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
      "a_key": "A String",
    },
    "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
      "memoryGb": 3.14, # Memory (GB) needed.
      "diskGb": 3.14, # Disk size (GB) needed.
      "cpu": 3.14, # Number of CPU cores needed.
      "volumes": [ # User specified volumes.
        { # Volumes mounted within the app container. Only applicable for VM runtimes.
          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
          "name": "A String", # Unique name for the volume.
          "sizeGb": 3.14, # Volume size in gigabytes.
        },
      ],
    },
    "manualScaling": { # 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.
      "instances": 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.
    },
    "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
      "A String",
    ],
    "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
      "a_key": "A String",
    },
    "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
    "deployment": { # 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.
      "files": { # 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.
        "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
          "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
        },
      },
      "container": { # 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.
        "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
      },
      "build": { # Google Cloud Container Builder build information. # Google Cloud Container Builder build information.
        "cloudBuildId": "A String", # The Google Cloud Container Builder build id. Example: "f966068f-08b2-42c8-bdfe-74137dff2bf9"
      },
      "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
        "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
        "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
      },
    },
    "livenessCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. # Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.
      "checkInterval": "A String", # Interval between health checks.
      "initialDelay": "A String", # The initial delay before starting to execute the checks.
      "host": "A String", # Host header to send when performing a HTTP Liveness check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the check is considered failed.
      "path": "A String", # The request path.
      "successThreshold": 42, # Number of consecutive successful checks required before considering the VM healthy.
      "failureThreshold": 42, # Number of consecutive failed checks required before considering the VM unhealthy.
    },
    "createTime": "A String", # Time that this version was created.@OutputOnly
    "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
    "runtimeApiVersion": "A String", # 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/<language>/config/appref
    "nobuildFilesRegex": "A String", # 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.
    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.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.
        "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
        "urlRegex": "A String", # 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.
        "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "staticFiles": { # 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.
          "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
          "applicationReadable": 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.
          "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
          "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
          "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
          "path": "A String", # 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.
          "httpHeaders": { # HTTP headers to use for all responses from these URLs.
            "a_key": "A String",
          },
        },
        "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "login": "A String", # Level of login required to access this resource.
        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
      },
    ],
    "servingStatus": "A String", # 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.
    "runtime": "A String", # Desired runtime. Example: python27.
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "metadata": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "error": { # 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.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": 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.
    "response": { # 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.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # 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.
  }</pre>
</div>

</body></html>