<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_v1beta4.html">Google App Engine Admin API</a> . <a href="appengine_v1beta4.apps.html">apps</a> . <a href="appengine_v1beta4.apps.modules.html">modules</a> . <a href="appengine_v1beta4.apps.modules.versions.html">versions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(appsId, modulesId, 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, modulesId, 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, modulesId, 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, modulesId, pageSize=None, pageToken=None, x__xgafv=None, view=None)</a></code></p>
<p class="firstline">Lists the versions of a module.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(appsId, modulesId, 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/modules/default". (required)
  modulesId: 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 module.
    "basicScaling": { # A module 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 module 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 (deprecated, use "env":"2").
    "instanceClass": "A String", # The frontend instance class to use to run this app. Valid values are `[F1, F2, F4, F4_1G]`. Default: "F1"
    "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 module. 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"
    "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.
      "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 module, since other versions are not expected to receive significant traffic.
      "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 module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A module 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 module 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.
          "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/modules/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.
        "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files. This attribute is deprecated. You can mimic the behavior of static directories using static files.
          "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.
          "httpHeaders": { # HTTP headers to use for all responses from these URLs.
            "a_key": "A String",
          },
          "expiration": "A String", # The length of time a static file served by this handler ought to be cached by web proxies and browsers.
          "directory": "A String", # The path to the directory containing the static files, from the application root directory. Everything after the end of the matched url pattern is appended to static_dir to form the full path to the requested file.
          "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.
          "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.
        },
        "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][google.appengine.v1beta4.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][google.appengine.v1beta4.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][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][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][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 above, 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, modulesId, 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/modules/default/versions/v1". (required)
  modulesId: 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][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][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][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 above, 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, modulesId, 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/modules/default/versions/v1". (required)
  modulesId: 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 module.
      "basicScaling": { # A module 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 module 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 (deprecated, use "env":"2").
      "instanceClass": "A String", # The frontend instance class to use to run this app. Valid values are `[F1, F2, F4, F4_1G]`. Default: "F1"
      "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 module. 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"
      "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.
        "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 module, since other versions are not expected to receive significant traffic.
        "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 module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A module 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 module 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.
            "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/modules/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.
          "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files. This attribute is deprecated. You can mimic the behavior of static directories using static files.
            "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.
            "httpHeaders": { # HTTP headers to use for all responses from these URLs.
              "a_key": "A String",
            },
            "expiration": "A String", # The length of time a static file served by this handler ought to be cached by web proxies and browsers.
            "directory": "A String", # The path to the directory containing the static files, from the application root directory. Everything after the end of the matched url pattern is appended to static_dir to form the full path to the requested file.
            "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.
            "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.
          },
          "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][google.appengine.v1beta4.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][google.appengine.v1beta4.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, modulesId, pageSize=None, pageToken=None, x__xgafv=None, view=None)</code>
  <pre>Lists the versions of a module.

Args:
  appsId: string, Part of `name`. Name of the resource requested. For example: "apps/myapp/modules/default". (required)
  modulesId: string, Part of `name`. See documentation of `appsId`. (required)
  pageSize: integer, Maximum results to return per page.
  pageToken: string, Continuation token for fetching the next page of results.
  x__xgafv: string, V1 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 application module.
      { # A Version is a specific set of source code and configuration files deployed to a module.
          "basicScaling": { # A module 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 module 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 (deprecated, use "env":"2").
          "instanceClass": "A String", # The frontend instance class to use to run this app. Valid values are `[F1, F2, F4, F4_1G]`. Default: "F1"
          "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 module. 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"
          "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.
            "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 module, since other versions are not expected to receive significant traffic.
            "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 module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A module 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 module 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.
                "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/modules/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.
              "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files. This attribute is deprecated. You can mimic the behavior of static directories using static files.
                "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.
                "httpHeaders": { # HTTP headers to use for all responses from these URLs.
                  "a_key": "A String",
                },
                "expiration": "A String", # The length of time a static file served by this handler ought to be cached by web proxies and browsers.
                "directory": "A String", # The path to the directory containing the static files, from the application root directory. Everything after the end of the matched url pattern is appended to static_dir to form the full path to the requested file.
                "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.
                "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.
              },
              "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][google.appengine.v1beta4.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][google.appengine.v1beta4.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>

</body></html>