<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

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

<p class="toc_element">
  <code><a href="#create">create(appsId, servicesId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Deploys new code and resource files to a version.</p>
<p class="toc_element">
  <code><a href="#delete">delete(appsId, servicesId, versionsId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an existing version.</p>
<p class="toc_element">
  <code><a href="#get">get(appsId, servicesId, versionsId, x__xgafv=None, view=None)</a></code></p>
<p class="firstline">Gets application deployment information.</p>
<p class="toc_element">
  <code><a href="#list">list(appsId, servicesId, pageSize=None, x__xgafv=None, pageToken=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, mask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing version. Note: UNIMPLEMENTED.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(appsId, servicesId, body, x__xgafv=None)</code>
  <pre>Deploys new code and resource files to a version.

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

{ # A Version is a specific set of source code and configuration files deployed to a service.
    "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", # The instance will be shut down this amount of time after receiving its last request.
      "maxInstances": 42, # The maximum number of instances for App Engine to create for this version.
    },
    "betaSettings": { # Beta settings supplied to the application via metadata.
      "a_key": "A String",
    },
    "vm": True or False, # Whether to deploy this app in a VM container.
    "instanceClass": "A String", # The instance class to use to run this app. Valid values for AutomaticScaling are `[F1, F2, F4, F4_1G]`. Valid values for ManualScaling and BasicScaling are `[B1, B2, B4, B8, B4_1G]`. Default: "F1" for AutomaticScaling, "B1" for ManualScaling and BasicScaling
    "errorHandlers": [ # Custom static error pages instead of these generic error pages, (limit 10 KB/page) Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      { # A custom static error page to be served when an error occurs.
        "errorCode": "A String", # The error condition this handler applies to.
        "mimeType": "A String", # MIME type of file. If unspecified, "text/html" is assumed.
        "staticFile": "A String", # Static file content to be served for this error.
      },
    ],
    "id": "A String", # The relative name/path of the Version within the service. Example: "v1". Version specifiers can contain lowercase letters, digits, and hyphens. It cannot begin with the prefix `ah-` and the names `default` and `latest` are reserved and cannot be used.
    "apiConfig": { # API Serving configuration for Cloud Endpoints. # Serving configuration for Google Cloud Endpoints. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      "url": "A String", # URL to serve the endpoint at.
      "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
      "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
      "login": "A String", # What level of login is required to access this resource. Default is "optional".
      "script": "A String", # Specifies the path to the script from the application root directory.
    },
    "threadsafe": True or False, # If true, multiple requests can be dispatched to the app at once.
    "healthCheck": { # Configure health checking for the VM instances. Unhealthy VM instances will be killed and replaced with new instances. # Configure health checking for the VM instances. Unhealthy VM instances will be stopped and replaced with new instances. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      "restartThreshold": 42, # The number of consecutive failed health checks before an instance is restarted.
      "checkInterval": "A String", # The interval between health checks.
      "unhealthyThreshold": 42, # The number of consecutive failed health checks before removing traffic.
      "healthyThreshold": 42, # The number of consecutive successful health checks before receiving traffic.
      "host": "A String", # The host header to send when performing an HTTP health check (e.g. myapp.appspot.com)
      "timeout": "A String", # The amount of time before the health check is considered failed.
      "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
    },
    "defaultExpiration": "A String", # The length of time a static file served by a static file handler ought to be cached by web proxies and browsers, if the handler does not specify its own expiration. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
    "libraries": [ # Configuration for Python runtime third-party libraries required by the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      { # A Python runtime third-party library required by the application.
        "version": "A String", # The version of the library to select, or "latest".
        "name": "A String", # The name of the library, e.g. "PIL" or "django".
      },
    ],
    "deployer": "A String", # The email address of the user who created this version. @OutputOnly
    "env": "A String", # The App Engine execution environment to use for this version. Default: "1"
    "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
    "automaticScaling": { # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics. # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics.
      "minPendingLatency": "A String", # The minimum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
      "networkUtilization": { # Target scaling by network usage (for VM runtimes only). # Target scaling by network usage.
        "targetReceivedBytesPerSec": 42, # Target bytes per second received.
        "targetSentBytesPerSec": 42, # Target bytes per second sent.
        "targetReceivedPacketsPerSec": 42, # Target packets per second received.
        "targetSentPacketsPerSec": 42, # Target packets per second sent.
      },
      "diskUtilization": { # Target scaling by disk usage (for VM runtimes only). # Target scaling by disk usage.
        "targetWriteOpsPerSec": 42, # Target ops per second written.
        "targetReadBytesPerSec": 42, # Target bytes per second read.
        "targetReadOpsPerSec": 42, # Target ops per second read.
        "targetWriteBytesPerSec": 42, # Target bytes per second written.
      },
      "maxPendingLatency": "A String", # The maximum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
      "maxIdleInstances": 42, # The maximum number of idle instances that App Engine should maintain for this version.
      "minIdleInstances": 42, # The minimum number of idle instances that App Engine should maintain for this version. Only applies to the default version of a service, since other versions are not expected to receive significant traffic.
      "requestUtilization": { # Target scaling by request utilization (for VM runtimes only). # Target scaling by request utilization.
        "targetConcurrentRequests": 42, # Target number of concurrent requests.
        "targetRequestCountPerSec": 42, # Target requests per second.
      },
      "coolDownPeriod": "A String", # The amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Applies only to the VM runtime.
      "maxTotalInstances": 42, # Max number of instances that App Engine should start to handle requests.
      "maxConcurrentRequests": 42, # The number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Default value is chosen based on the runtime.
      "minTotalInstances": 42, # Minimum number of instances that App Engine should maintain.
      "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
        "targetUtilization": 3.14, # Target (0-1) CPU utilization ratio to maintain when scaling.
        "aggregationWindowLength": "A String", # The period of time over which CPU utilization is calculated.
      },
    },
    "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      "a_key": "A String",
    },
    "resources": { # Used to specify how many machine resources an app version needs. # Used to specify how many machine resources an app version needs (for VM runtimes only).
      "diskGb": 3.14, # How much disk size, in GB, an app version needs.
      "cpu": 3.14, # How many CPU cores an app version needs.
      "memoryGb": 3.14, # How much memory, in GB, an app version needs.
    },
    "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, # The 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",
    ],
    "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. May only be set on create requests; once created, is immutable.
      "files": { # A manifest of files stored in Google Cloud Storage which should be included as part of this application. All files must be readable using the credentials supplied with this call.
        "a_key": { # A single source file which is part of the application to be deployed.
          "mimeType": "A String", # The MIME type of the file; if unspecified, the value from Google Cloud Storage will be used.
          "sourceUrl": "A String", # The 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/\/\'.
          "sha1Sum": "A String", # The SHA1 (160 bits) hash of the file in hex.
        },
      },
      "sourceReferences": [ # The origin of the source code for this deployment. There can be more than one source reference per Version if source code is distributed among multiple repositories.
        { # A reference to a particular snapshot of the source tree used to build and deploy the application.
          "revisionId": "A String", # The canonical (and persistent) identifier of the deployed revision, i.e. any kind of aliases including tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
          "repository": "A String", # Optional. A URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
        },
      ],
      "container": { # A Docker (container) image which should be used to start the application. # If supplied, a docker (container) image which should be used to start the application. Only applicable to the 'vm' runtime.
        "image": "A String", # Reference to a hosted container image. Must be a URI to a resource in a Docker repository. Must be fully qualified, including tag or digest. e.g. gcr.io/my-project/image:tag or gcr.io/my-project/image@digest
      },
    },
    "network": { # Used to specify extra network settings (for VM runtimes only). # Used to specify extra network settings (for VM runtimes only).
      "instanceTag": "A String", # A tag to apply to the VM instance during creation.
      "forwardedPorts": [ # A list of ports (or port pairs) to forward from the VM into the app container.
        "A String",
      ],
      "name": "A String", # The Google Compute Engine network where the VMs will be created. If not specified, or empty, the network named "default" will be used. (The short name should be specified, not the resource path.)
    },
    "nobuildFilesRegex": "A String", # Go only. Files that match this pattern will not be built into the app. May only be set on create requests.
    "name": "A String", # The 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 consumes the request, and subsequent handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      { # A URL pattern and description of how it should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the code, such as images, CSS or JavaScript.
        "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
        "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
        "urlRegex": "A String", # A URL prefix. This value uses regular expression syntax (and so regexp special characters must be escaped), but it 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. This is always required.
        "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches the URL pattern.
          "scriptPath": "A String", # Specifies the 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", # If specified, all files served by this handler will be served using the specified MIME type. If not specified, the MIME type for a file will be derived from the file's filename extension.
          "applicationReadable": True or False, # 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 an application. If this field is set to true, the files are also uploaded as code data so your application can read them. Both uploads are charged against your code and static data storage resource quotas.
          "expiration": "A String", # The length of time a static file served by this handler ought to be cached by web proxies and browsers.
          "requireMatchingFile": True or False, # If true, this UrlMap entry does not match the request unless the file referenced by the handler also exists. If no such file exists, processing will continue with the next UrlMap that matches the requested URL.
          "uploadPathRegex": "A String", # A regular expression that matches the file paths for all files that will be referenced by this handler.
          "path": "A String", # The 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": { # Use Google Cloud Endpoints to handle requests. # Use API Endpoints to handle requests.
          "scriptPath": "A String", # Specifies the path to the script from the application root directory.
        },
        "login": "A String", # What level of login is required to access this resource.
        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. A `302` is used by default.
      },
    ],
    "creationTime": "A String", # Creation time of this version. This will be between the start and end times of the operation that creates this version. @OutputOnly
    "servingStatus": "A String", # The current serving status of this version. Only `SERVING` versions will have instances created or billed for. If this field is unset when a version is created, `SERVING` status will be assumed. It is an error to explicitly set this field to `SERVING_STATUS_UNSPECIFIED`.
    "runtime": "A String", # The desired runtime. Values can include python27, java7, go, etc.
  }

  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "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 @ype 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: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `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` which can be used for common error conditions. # Language mapping The `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 uses The 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 purpose. - 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. # The error result of the operation in case of failure.
      "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 @ype 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.
    "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`.
    "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 @ype with type URL.
    },
  }</pre>
</div>

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

Args:
  appsId: string, Part of `name`. Name of the resource requested. For 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.

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "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 @ype 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: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `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` which can be used for common error conditions. # Language mapping The `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 uses The 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 purpose. - 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. # The error result of the operation in case of failure.
      "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 @ype 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.
    "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`.
    "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 @ype with type URL.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(appsId, servicesId, versionsId, x__xgafv=None, view=None)</code>
  <pre>Gets application deployment information.

Args:
  appsId: string, Part of `name`. Name of the resource requested. For 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.
  view: string, Controls the set of fields returned in the `Get` response.

Returns:
  An object of the form:

    { # A Version is a specific set of source code and configuration files deployed to a service.
      "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", # The instance will be shut down this amount of time after receiving its last request.
        "maxInstances": 42, # The maximum number of instances for App Engine to create for this version.
      },
      "betaSettings": { # Beta settings supplied to the application via metadata.
        "a_key": "A String",
      },
      "vm": True or False, # Whether to deploy this app in a VM container.
      "instanceClass": "A String", # The instance class to use to run this app. Valid values for AutomaticScaling are `[F1, F2, F4, F4_1G]`. Valid values for ManualScaling and BasicScaling are `[B1, B2, B4, B8, B4_1G]`. Default: "F1" for AutomaticScaling, "B1" for ManualScaling and BasicScaling
      "errorHandlers": [ # Custom static error pages instead of these generic error pages, (limit 10 KB/page) Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
        { # A custom static error page to be served when an error occurs.
          "errorCode": "A String", # The error condition this handler applies to.
          "mimeType": "A String", # MIME type of file. If unspecified, "text/html" is assumed.
          "staticFile": "A String", # Static file content to be served for this error.
        },
      ],
      "id": "A String", # The relative name/path of the Version within the service. Example: "v1". Version specifiers can contain lowercase letters, digits, and hyphens. It cannot begin with the prefix `ah-` and the names `default` and `latest` are reserved and cannot be used.
      "apiConfig": { # API Serving configuration for Cloud Endpoints. # Serving configuration for Google Cloud Endpoints. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
        "url": "A String", # URL to serve the endpoint at.
        "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
        "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
        "login": "A String", # What level of login is required to access this resource. Default is "optional".
        "script": "A String", # Specifies the path to the script from the application root directory.
      },
      "threadsafe": True or False, # If true, multiple requests can be dispatched to the app at once.
      "healthCheck": { # Configure health checking for the VM instances. Unhealthy VM instances will be killed and replaced with new instances. # Configure health checking for the VM instances. Unhealthy VM instances will be stopped and replaced with new instances. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
        "restartThreshold": 42, # The number of consecutive failed health checks before an instance is restarted.
        "checkInterval": "A String", # The interval between health checks.
        "unhealthyThreshold": 42, # The number of consecutive failed health checks before removing traffic.
        "healthyThreshold": 42, # The number of consecutive successful health checks before receiving traffic.
        "host": "A String", # The host header to send when performing an HTTP health check (e.g. myapp.appspot.com)
        "timeout": "A String", # The amount of time before the health check is considered failed.
        "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
      },
      "defaultExpiration": "A String", # The length of time a static file served by a static file handler ought to be cached by web proxies and browsers, if the handler does not specify its own expiration. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      "libraries": [ # Configuration for Python runtime third-party libraries required by the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
        { # A Python runtime third-party library required by the application.
          "version": "A String", # The version of the library to select, or "latest".
          "name": "A String", # The name of the library, e.g. "PIL" or "django".
        },
      ],
      "deployer": "A String", # The email address of the user who created this version. @OutputOnly
      "env": "A String", # The App Engine execution environment to use for this version. Default: "1"
      "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
      "automaticScaling": { # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics. # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics.
        "minPendingLatency": "A String", # The minimum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
        "networkUtilization": { # Target scaling by network usage (for VM runtimes only). # Target scaling by network usage.
          "targetReceivedBytesPerSec": 42, # Target bytes per second received.
          "targetSentBytesPerSec": 42, # Target bytes per second sent.
          "targetReceivedPacketsPerSec": 42, # Target packets per second received.
          "targetSentPacketsPerSec": 42, # Target packets per second sent.
        },
        "diskUtilization": { # Target scaling by disk usage (for VM runtimes only). # Target scaling by disk usage.
          "targetWriteOpsPerSec": 42, # Target ops per second written.
          "targetReadBytesPerSec": 42, # Target bytes per second read.
          "targetReadOpsPerSec": 42, # Target ops per second read.
          "targetWriteBytesPerSec": 42, # Target bytes per second written.
        },
        "maxPendingLatency": "A String", # The maximum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
        "maxIdleInstances": 42, # The maximum number of idle instances that App Engine should maintain for this version.
        "minIdleInstances": 42, # The minimum number of idle instances that App Engine should maintain for this version. Only applies to the default version of a service, since other versions are not expected to receive significant traffic.
        "requestUtilization": { # Target scaling by request utilization (for VM runtimes only). # Target scaling by request utilization.
          "targetConcurrentRequests": 42, # Target number of concurrent requests.
          "targetRequestCountPerSec": 42, # Target requests per second.
        },
        "coolDownPeriod": "A String", # The amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Applies only to the VM runtime.
        "maxTotalInstances": 42, # Max number of instances that App Engine should start to handle requests.
        "maxConcurrentRequests": 42, # The number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Default value is chosen based on the runtime.
        "minTotalInstances": 42, # Minimum number of instances that App Engine should maintain.
        "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
          "targetUtilization": 3.14, # Target (0-1) CPU utilization ratio to maintain when scaling.
          "aggregationWindowLength": "A String", # The period of time over which CPU utilization is calculated.
        },
      },
      "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
        "a_key": "A String",
      },
      "resources": { # Used to specify how many machine resources an app version needs. # Used to specify how many machine resources an app version needs (for VM runtimes only).
        "diskGb": 3.14, # How much disk size, in GB, an app version needs.
        "cpu": 3.14, # How many CPU cores an app version needs.
        "memoryGb": 3.14, # How much memory, in GB, an app version needs.
      },
      "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, # The 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",
      ],
      "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. May only be set on create requests; once created, is immutable.
        "files": { # A manifest of files stored in Google Cloud Storage which should be included as part of this application. All files must be readable using the credentials supplied with this call.
          "a_key": { # A single source file which is part of the application to be deployed.
            "mimeType": "A String", # The MIME type of the file; if unspecified, the value from Google Cloud Storage will be used.
            "sourceUrl": "A String", # The 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/\/\'.
            "sha1Sum": "A String", # The SHA1 (160 bits) hash of the file in hex.
          },
        },
        "sourceReferences": [ # The origin of the source code for this deployment. There can be more than one source reference per Version if source code is distributed among multiple repositories.
          { # A reference to a particular snapshot of the source tree used to build and deploy the application.
            "revisionId": "A String", # The canonical (and persistent) identifier of the deployed revision, i.e. any kind of aliases including tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
            "repository": "A String", # Optional. A URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
          },
        ],
        "container": { # A Docker (container) image which should be used to start the application. # If supplied, a docker (container) image which should be used to start the application. Only applicable to the 'vm' runtime.
          "image": "A String", # Reference to a hosted container image. Must be a URI to a resource in a Docker repository. Must be fully qualified, including tag or digest. e.g. gcr.io/my-project/image:tag or gcr.io/my-project/image@digest
        },
      },
      "network": { # Used to specify extra network settings (for VM runtimes only). # Used to specify extra network settings (for VM runtimes only).
        "instanceTag": "A String", # A tag to apply to the VM instance during creation.
        "forwardedPorts": [ # A list of ports (or port pairs) to forward from the VM into the app container.
          "A String",
        ],
        "name": "A String", # The Google Compute Engine network where the VMs will be created. If not specified, or empty, the network named "default" will be used. (The short name should be specified, not the resource path.)
      },
      "nobuildFilesRegex": "A String", # Go only. Files that match this pattern will not be built into the app. May only be set on create requests.
      "name": "A String", # The 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 consumes the request, and subsequent handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
        { # A URL pattern and description of how it should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the code, such as images, CSS or JavaScript.
          "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
          "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
          "urlRegex": "A String", # A URL prefix. This value uses regular expression syntax (and so regexp special characters must be escaped), but it 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. This is always required.
          "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches the URL pattern.
            "scriptPath": "A String", # Specifies the 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", # If specified, all files served by this handler will be served using the specified MIME type. If not specified, the MIME type for a file will be derived from the file's filename extension.
            "applicationReadable": True or False, # 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 an application. If this field is set to true, the files are also uploaded as code data so your application can read them. Both uploads are charged against your code and static data storage resource quotas.
            "expiration": "A String", # The length of time a static file served by this handler ought to be cached by web proxies and browsers.
            "requireMatchingFile": True or False, # If true, this UrlMap entry does not match the request unless the file referenced by the handler also exists. If no such file exists, processing will continue with the next UrlMap that matches the requested URL.
            "uploadPathRegex": "A String", # A regular expression that matches the file paths for all files that will be referenced by this handler.
            "path": "A String", # The 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": { # Use Google Cloud Endpoints to handle requests. # Use API Endpoints to handle requests.
            "scriptPath": "A String", # Specifies the path to the script from the application root directory.
          },
          "login": "A String", # What level of login is required to access this resource.
          "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. A `302` is used by default.
        },
      ],
      "creationTime": "A String", # Creation time of this version. This will be between the start and end times of the operation that creates this version. @OutputOnly
      "servingStatus": "A String", # The current serving status of this version. Only `SERVING` versions will have instances created or billed for. If this field is unset when a version is created, `SERVING` status will be assumed. It is an error to explicitly set this field to `SERVING_STATUS_UNSPECIFIED`.
      "runtime": "A String", # The desired runtime. Values can include python27, java7, go, etc.
    }</pre>
</div>

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

Args:
  appsId: string, Part of `name`. Name of the resource requested. For example: "apps/myapp/services/default". (required)
  servicesId: string, Part of `name`. See documentation of `appsId`. (required)
  pageSize: integer, Maximum results to return per page.
  x__xgafv: string, V1 error format.
  pageToken: string, Continuation token for fetching the next page of results.
  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 application service.
      { # A Version is a specific set of source code and configuration files deployed to a service.
          "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", # The instance will be shut down this amount of time after receiving its last request.
            "maxInstances": 42, # The maximum number of instances for App Engine to create for this version.
          },
          "betaSettings": { # Beta settings supplied to the application via metadata.
            "a_key": "A String",
          },
          "vm": True or False, # Whether to deploy this app in a VM container.
          "instanceClass": "A String", # The instance class to use to run this app. Valid values for AutomaticScaling are `[F1, F2, F4, F4_1G]`. Valid values for ManualScaling and BasicScaling are `[B1, B2, B4, B8, B4_1G]`. Default: "F1" for AutomaticScaling, "B1" for ManualScaling and BasicScaling
          "errorHandlers": [ # Custom static error pages instead of these generic error pages, (limit 10 KB/page) Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
            { # A custom static error page to be served when an error occurs.
              "errorCode": "A String", # The error condition this handler applies to.
              "mimeType": "A String", # MIME type of file. If unspecified, "text/html" is assumed.
              "staticFile": "A String", # Static file content to be served for this error.
            },
          ],
          "id": "A String", # The relative name/path of the Version within the service. Example: "v1". Version specifiers can contain lowercase letters, digits, and hyphens. It cannot begin with the prefix `ah-` and the names `default` and `latest` are reserved and cannot be used.
          "apiConfig": { # API Serving configuration for Cloud Endpoints. # Serving configuration for Google Cloud Endpoints. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
            "url": "A String", # URL to serve the endpoint at.
            "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
            "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
            "login": "A String", # What level of login is required to access this resource. Default is "optional".
            "script": "A String", # Specifies the path to the script from the application root directory.
          },
          "threadsafe": True or False, # If true, multiple requests can be dispatched to the app at once.
          "healthCheck": { # Configure health checking for the VM instances. Unhealthy VM instances will be killed and replaced with new instances. # Configure health checking for the VM instances. Unhealthy VM instances will be stopped and replaced with new instances. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
            "restartThreshold": 42, # The number of consecutive failed health checks before an instance is restarted.
            "checkInterval": "A String", # The interval between health checks.
            "unhealthyThreshold": 42, # The number of consecutive failed health checks before removing traffic.
            "healthyThreshold": 42, # The number of consecutive successful health checks before receiving traffic.
            "host": "A String", # The host header to send when performing an HTTP health check (e.g. myapp.appspot.com)
            "timeout": "A String", # The amount of time before the health check is considered failed.
            "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
          },
          "defaultExpiration": "A String", # The length of time a static file served by a static file handler ought to be cached by web proxies and browsers, if the handler does not specify its own expiration. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
          "libraries": [ # Configuration for Python runtime third-party libraries required by the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
            { # A Python runtime third-party library required by the application.
              "version": "A String", # The version of the library to select, or "latest".
              "name": "A String", # The name of the library, e.g. "PIL" or "django".
            },
          ],
          "deployer": "A String", # The email address of the user who created this version. @OutputOnly
          "env": "A String", # The App Engine execution environment to use for this version. Default: "1"
          "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
          "automaticScaling": { # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics. # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics.
            "minPendingLatency": "A String", # The minimum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
            "networkUtilization": { # Target scaling by network usage (for VM runtimes only). # Target scaling by network usage.
              "targetReceivedBytesPerSec": 42, # Target bytes per second received.
              "targetSentBytesPerSec": 42, # Target bytes per second sent.
              "targetReceivedPacketsPerSec": 42, # Target packets per second received.
              "targetSentPacketsPerSec": 42, # Target packets per second sent.
            },
            "diskUtilization": { # Target scaling by disk usage (for VM runtimes only). # Target scaling by disk usage.
              "targetWriteOpsPerSec": 42, # Target ops per second written.
              "targetReadBytesPerSec": 42, # Target bytes per second read.
              "targetReadOpsPerSec": 42, # Target ops per second read.
              "targetWriteBytesPerSec": 42, # Target bytes per second written.
            },
            "maxPendingLatency": "A String", # The maximum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
            "maxIdleInstances": 42, # The maximum number of idle instances that App Engine should maintain for this version.
            "minIdleInstances": 42, # The minimum number of idle instances that App Engine should maintain for this version. Only applies to the default version of a service, since other versions are not expected to receive significant traffic.
            "requestUtilization": { # Target scaling by request utilization (for VM runtimes only). # Target scaling by request utilization.
              "targetConcurrentRequests": 42, # Target number of concurrent requests.
              "targetRequestCountPerSec": 42, # Target requests per second.
            },
            "coolDownPeriod": "A String", # The amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Applies only to the VM runtime.
            "maxTotalInstances": 42, # Max number of instances that App Engine should start to handle requests.
            "maxConcurrentRequests": 42, # The number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Default value is chosen based on the runtime.
            "minTotalInstances": 42, # Minimum number of instances that App Engine should maintain.
            "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
              "targetUtilization": 3.14, # Target (0-1) CPU utilization ratio to maintain when scaling.
              "aggregationWindowLength": "A String", # The period of time over which CPU utilization is calculated.
            },
          },
          "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
            "a_key": "A String",
          },
          "resources": { # Used to specify how many machine resources an app version needs. # Used to specify how many machine resources an app version needs (for VM runtimes only).
            "diskGb": 3.14, # How much disk size, in GB, an app version needs.
            "cpu": 3.14, # How many CPU cores an app version needs.
            "memoryGb": 3.14, # How much memory, in GB, an app version needs.
          },
          "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, # The 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",
          ],
          "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. May only be set on create requests; once created, is immutable.
            "files": { # A manifest of files stored in Google Cloud Storage which should be included as part of this application. All files must be readable using the credentials supplied with this call.
              "a_key": { # A single source file which is part of the application to be deployed.
                "mimeType": "A String", # The MIME type of the file; if unspecified, the value from Google Cloud Storage will be used.
                "sourceUrl": "A String", # The 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/\/\'.
                "sha1Sum": "A String", # The SHA1 (160 bits) hash of the file in hex.
              },
            },
            "sourceReferences": [ # The origin of the source code for this deployment. There can be more than one source reference per Version if source code is distributed among multiple repositories.
              { # A reference to a particular snapshot of the source tree used to build and deploy the application.
                "revisionId": "A String", # The canonical (and persistent) identifier of the deployed revision, i.e. any kind of aliases including tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
                "repository": "A String", # Optional. A URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
              },
            ],
            "container": { # A Docker (container) image which should be used to start the application. # If supplied, a docker (container) image which should be used to start the application. Only applicable to the 'vm' runtime.
              "image": "A String", # Reference to a hosted container image. Must be a URI to a resource in a Docker repository. Must be fully qualified, including tag or digest. e.g. gcr.io/my-project/image:tag or gcr.io/my-project/image@digest
            },
          },
          "network": { # Used to specify extra network settings (for VM runtimes only). # Used to specify extra network settings (for VM runtimes only).
            "instanceTag": "A String", # A tag to apply to the VM instance during creation.
            "forwardedPorts": [ # A list of ports (or port pairs) to forward from the VM into the app container.
              "A String",
            ],
            "name": "A String", # The Google Compute Engine network where the VMs will be created. If not specified, or empty, the network named "default" will be used. (The short name should be specified, not the resource path.)
          },
          "nobuildFilesRegex": "A String", # Go only. Files that match this pattern will not be built into the app. May only be set on create requests.
          "name": "A String", # The 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 consumes the request, and subsequent handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
            { # A URL pattern and description of how it should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the code, such as images, CSS or JavaScript.
              "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
              "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
              "urlRegex": "A String", # A URL prefix. This value uses regular expression syntax (and so regexp special characters must be escaped), but it 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. This is always required.
              "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches the URL pattern.
                "scriptPath": "A String", # Specifies the 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", # If specified, all files served by this handler will be served using the specified MIME type. If not specified, the MIME type for a file will be derived from the file's filename extension.
                "applicationReadable": True or False, # 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 an application. If this field is set to true, the files are also uploaded as code data so your application can read them. Both uploads are charged against your code and static data storage resource quotas.
                "expiration": "A String", # The length of time a static file served by this handler ought to be cached by web proxies and browsers.
                "requireMatchingFile": True or False, # If true, this UrlMap entry does not match the request unless the file referenced by the handler also exists. If no such file exists, processing will continue with the next UrlMap that matches the requested URL.
                "uploadPathRegex": "A String", # A regular expression that matches the file paths for all files that will be referenced by this handler.
                "path": "A String", # The 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": { # Use Google Cloud Endpoints to handle requests. # Use API Endpoints to handle requests.
                "scriptPath": "A String", # Specifies the path to the script from the application root directory.
              },
              "login": "A String", # What level of login is required to access this resource.
              "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. A `302` is used by default.
            },
          ],
          "creationTime": "A String", # Creation time of this version. This will be between the start and end times of the operation that creates this version. @OutputOnly
          "servingStatus": "A String", # The current serving status of this version. Only `SERVING` versions will have instances created or billed for. If this field is unset when a version is created, `SERVING` status will be assumed. It is an error to explicitly set this field to `SERVING_STATUS_UNSPECIFIED`.
          "runtime": "A String", # The desired runtime. Values can include python27, java7, go, etc.
        },
    ],
  }</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, mask=None, x__xgafv=None)</code>
  <pre>Updates an existing version. Note: UNIMPLEMENTED.

Args:
  appsId: string, Part of `name`. Name of the resource to update. For 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 is a specific set of source code and configuration files deployed to a service.
    "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", # The instance will be shut down this amount of time after receiving its last request.
      "maxInstances": 42, # The maximum number of instances for App Engine to create for this version.
    },
    "betaSettings": { # Beta settings supplied to the application via metadata.
      "a_key": "A String",
    },
    "vm": True or False, # Whether to deploy this app in a VM container.
    "instanceClass": "A String", # The instance class to use to run this app. Valid values for AutomaticScaling are `[F1, F2, F4, F4_1G]`. Valid values for ManualScaling and BasicScaling are `[B1, B2, B4, B8, B4_1G]`. Default: "F1" for AutomaticScaling, "B1" for ManualScaling and BasicScaling
    "errorHandlers": [ # Custom static error pages instead of these generic error pages, (limit 10 KB/page) Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      { # A custom static error page to be served when an error occurs.
        "errorCode": "A String", # The error condition this handler applies to.
        "mimeType": "A String", # MIME type of file. If unspecified, "text/html" is assumed.
        "staticFile": "A String", # Static file content to be served for this error.
      },
    ],
    "id": "A String", # The relative name/path of the Version within the service. Example: "v1". Version specifiers can contain lowercase letters, digits, and hyphens. It cannot begin with the prefix `ah-` and the names `default` and `latest` are reserved and cannot be used.
    "apiConfig": { # API Serving configuration for Cloud Endpoints. # Serving configuration for Google Cloud Endpoints. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      "url": "A String", # URL to serve the endpoint at.
      "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
      "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
      "login": "A String", # What level of login is required to access this resource. Default is "optional".
      "script": "A String", # Specifies the path to the script from the application root directory.
    },
    "threadsafe": True or False, # If true, multiple requests can be dispatched to the app at once.
    "healthCheck": { # Configure health checking for the VM instances. Unhealthy VM instances will be killed and replaced with new instances. # Configure health checking for the VM instances. Unhealthy VM instances will be stopped and replaced with new instances. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      "restartThreshold": 42, # The number of consecutive failed health checks before an instance is restarted.
      "checkInterval": "A String", # The interval between health checks.
      "unhealthyThreshold": 42, # The number of consecutive failed health checks before removing traffic.
      "healthyThreshold": 42, # The number of consecutive successful health checks before receiving traffic.
      "host": "A String", # The host header to send when performing an HTTP health check (e.g. myapp.appspot.com)
      "timeout": "A String", # The amount of time before the health check is considered failed.
      "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
    },
    "defaultExpiration": "A String", # The length of time a static file served by a static file handler ought to be cached by web proxies and browsers, if the handler does not specify its own expiration. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
    "libraries": [ # Configuration for Python runtime third-party libraries required by the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      { # A Python runtime third-party library required by the application.
        "version": "A String", # The version of the library to select, or "latest".
        "name": "A String", # The name of the library, e.g. "PIL" or "django".
      },
    ],
    "deployer": "A String", # The email address of the user who created this version. @OutputOnly
    "env": "A String", # The App Engine execution environment to use for this version. Default: "1"
    "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
    "automaticScaling": { # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics. # Automatic scaling is the scaling policy that App Engine has used since its inception. It is based on request rate, response latencies, and other application metrics.
      "minPendingLatency": "A String", # The minimum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
      "networkUtilization": { # Target scaling by network usage (for VM runtimes only). # Target scaling by network usage.
        "targetReceivedBytesPerSec": 42, # Target bytes per second received.
        "targetSentBytesPerSec": 42, # Target bytes per second sent.
        "targetReceivedPacketsPerSec": 42, # Target packets per second received.
        "targetSentPacketsPerSec": 42, # Target packets per second sent.
      },
      "diskUtilization": { # Target scaling by disk usage (for VM runtimes only). # Target scaling by disk usage.
        "targetWriteOpsPerSec": 42, # Target ops per second written.
        "targetReadBytesPerSec": 42, # Target bytes per second read.
        "targetReadOpsPerSec": 42, # Target ops per second read.
        "targetWriteBytesPerSec": 42, # Target bytes per second written.
      },
      "maxPendingLatency": "A String", # The maximum amount of time that App Engine should allow a request to wait in the pending queue before starting a new instance to handle it.
      "maxIdleInstances": 42, # The maximum number of idle instances that App Engine should maintain for this version.
      "minIdleInstances": 42, # The minimum number of idle instances that App Engine should maintain for this version. Only applies to the default version of a service, since other versions are not expected to receive significant traffic.
      "requestUtilization": { # Target scaling by request utilization (for VM runtimes only). # Target scaling by request utilization.
        "targetConcurrentRequests": 42, # Target number of concurrent requests.
        "targetRequestCountPerSec": 42, # Target requests per second.
      },
      "coolDownPeriod": "A String", # The amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Applies only to the VM runtime.
      "maxTotalInstances": 42, # Max number of instances that App Engine should start to handle requests.
      "maxConcurrentRequests": 42, # The number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Default value is chosen based on the runtime.
      "minTotalInstances": 42, # Minimum number of instances that App Engine should maintain.
      "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
        "targetUtilization": 3.14, # Target (0-1) CPU utilization ratio to maintain when scaling.
        "aggregationWindowLength": "A String", # The period of time over which CPU utilization is calculated.
      },
    },
    "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      "a_key": "A String",
    },
    "resources": { # Used to specify how many machine resources an app version needs. # Used to specify how many machine resources an app version needs (for VM runtimes only).
      "diskGb": 3.14, # How much disk size, in GB, an app version needs.
      "cpu": 3.14, # How many CPU cores an app version needs.
      "memoryGb": 3.14, # How much memory, in GB, an app version needs.
    },
    "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, # The 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",
    ],
    "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. May only be set on create requests; once created, is immutable.
      "files": { # A manifest of files stored in Google Cloud Storage which should be included as part of this application. All files must be readable using the credentials supplied with this call.
        "a_key": { # A single source file which is part of the application to be deployed.
          "mimeType": "A String", # The MIME type of the file; if unspecified, the value from Google Cloud Storage will be used.
          "sourceUrl": "A String", # The 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/\/\'.
          "sha1Sum": "A String", # The SHA1 (160 bits) hash of the file in hex.
        },
      },
      "sourceReferences": [ # The origin of the source code for this deployment. There can be more than one source reference per Version if source code is distributed among multiple repositories.
        { # A reference to a particular snapshot of the source tree used to build and deploy the application.
          "revisionId": "A String", # The canonical (and persistent) identifier of the deployed revision, i.e. any kind of aliases including tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
          "repository": "A String", # Optional. A URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
        },
      ],
      "container": { # A Docker (container) image which should be used to start the application. # If supplied, a docker (container) image which should be used to start the application. Only applicable to the 'vm' runtime.
        "image": "A String", # Reference to a hosted container image. Must be a URI to a resource in a Docker repository. Must be fully qualified, including tag or digest. e.g. gcr.io/my-project/image:tag or gcr.io/my-project/image@digest
      },
    },
    "network": { # Used to specify extra network settings (for VM runtimes only). # Used to specify extra network settings (for VM runtimes only).
      "instanceTag": "A String", # A tag to apply to the VM instance during creation.
      "forwardedPorts": [ # A list of ports (or port pairs) to forward from the VM into the app container.
        "A String",
      ],
      "name": "A String", # The Google Compute Engine network where the VMs will be created. If not specified, or empty, the network named "default" will be used. (The short name should be specified, not the resource path.)
    },
    "nobuildFilesRegex": "A String", # Go only. Files that match this pattern will not be built into the app. May only be set on create requests.
    "name": "A String", # The 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 consumes the request, and subsequent handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set. May only be set on create requests; once created, is immutable.
      { # A URL pattern and description of how it should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the code, such as images, CSS or JavaScript.
        "securityLevel": "A String", # Configures whether security (HTTPS) should be enforced for this URL.
        "authFailAction": "A String", # For users not logged in, how to handle access to resources with required login. Defaults to "redirect".
        "urlRegex": "A String", # A URL prefix. This value uses regular expression syntax (and so regexp special characters must be escaped), but it 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. This is always required.
        "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches the URL pattern.
          "scriptPath": "A String", # Specifies the 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", # If specified, all files served by this handler will be served using the specified MIME type. If not specified, the MIME type for a file will be derived from the file's filename extension.
          "applicationReadable": True or False, # 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 an application. If this field is set to true, the files are also uploaded as code data so your application can read them. Both uploads are charged against your code and static data storage resource quotas.
          "expiration": "A String", # The length of time a static file served by this handler ought to be cached by web proxies and browsers.
          "requireMatchingFile": True or False, # If true, this UrlMap entry does not match the request unless the file referenced by the handler also exists. If no such file exists, processing will continue with the next UrlMap that matches the requested URL.
          "uploadPathRegex": "A String", # A regular expression that matches the file paths for all files that will be referenced by this handler.
          "path": "A String", # The 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": { # Use Google Cloud Endpoints to handle requests. # Use API Endpoints to handle requests.
          "scriptPath": "A String", # Specifies the path to the script from the application root directory.
        },
        "login": "A String", # What level of login is required to access this resource.
        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. A `302` is used by default.
      },
    ],
    "creationTime": "A String", # Creation time of this version. This will be between the start and end times of the operation that creates this version. @OutputOnly
    "servingStatus": "A String", # The current serving status of this version. Only `SERVING` versions will have instances created or billed for. If this field is unset when a version is created, `SERVING` status will be assumed. It is an error to explicitly set this field to `SERVING_STATUS_UNSPECIFIED`.
    "runtime": "A String", # The desired runtime. Values can include python27, java7, go, etc.
  }

  mask: string, Standard field mask for the set of fields to be updated.
  x__xgafv: string, V1 error format.

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "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 @ype 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: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `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` which can be used for common error conditions. # Language mapping The `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 uses The 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 purpose. - 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. # The error result of the operation in case of failure.
      "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 @ype 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.
    "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`.
    "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 @ype with type URL.
    },
  }</pre>
</div>

</body></html>