<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="appengine_v1beta4.apps.modules.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, modulesId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Deploys code and resource files to a new version.</p>
<p class="toc_element">
  <code><a href="#delete">delete(appsId, 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 the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.</p>
<p class="toc_element">
  <code><a href="#list">list(appsId, 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>
<p class="toc_element">
  <code><a href="#patch">patch(appsId, modulesId, versionsId, body, mask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(appsId, modulesId, body, x__xgafv=None)</code>
  <pre>Deploys code and resource files to a new version.

Args:
  appsId: string, Part of `name`. Name of the resource to update. 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 resource is a specific set of source code and configuration files that are deployed into a module.
    "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
      "a_key": "A String",
    },
    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
    "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are:
        # AutomaticScaling: F1, F2, F4, F4_1G
        # ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
      { # Custom static error page to be served when an error occurs.
        "errorCode": "A String", # Error condition this handler applies to.
        "mimeType": "A String", # MIME type of file. Defaults to text/html.
        "staticFile": "A String", # Static file content to be served for this error.
      },
    ],
    "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
      "url": "A String", # URL to serve the endpoint at.
      "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
      "login": "A String", # Level of login required to access this resource. Defaults to optional.
      "script": "A String", # Path to the script from the application root directory.
    },
    "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
      "instanceTag": "A String", # Tag to apply to the VM instance during creation.
      "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
        "A String",
      ],
      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
    },
    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
      "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
      "checkInterval": "A String", # Interval between health checks.
      "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
      "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
      "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the health check is considered failed.
      "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
    },
    "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
      { # Third-party Python runtime library that is required by the application.
        "version": "A String", # Version of the library to select, or "latest".
        "name": "A String", # Name of the library. Example: "django".
      },
    ],
    "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, # 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.
    },
    "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
    "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
      "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
      "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
        "targetReceivedBytesPerSec": 42, # Target bytes received per second.
        "targetSentPacketsPerSec": 42, # Target packets sent per second.
        "targetReceivedPacketsPerSec": 42, # Target packets received per second.
        "targetSentBytesPerSec": 42, # Target bytes sent per second.
      },
      "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
        "targetWriteOpsPerSec": 42, # Target ops written per second.
        "targetReadBytesPerSec": 42, # Target bytes read per second.
        "targetReadOpsPerSec": 42, # Target ops read per second.
        "targetWriteBytesPerSec": 42, # Target bytes written per second.
      },
      "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
      "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
      "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
      "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
        "targetConcurrentRequests": 42, # Target number of concurrent requests.
        "targetRequestCountPerSec": 42, # Target requests per second.
      },
      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
      "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
      "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
      "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
        "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
        "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
      },
    },
    "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
      "a_key": "A String",
    },
    "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
      "volumes": [ # User specified volumes.
        { # Volumes mounted within the app container. Only applicable for VM runtimes.
          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
          "name": "A String", # Unique name for the volume.
          "sizeGb": 3.14, # Volume size in gigabytes.
        },
      ],
      "diskGb": 3.14, # Disk size (GB) needed.
      "cpu": 3.14, # Number of CPU cores needed.
      "memoryGb": 3.14, # Memory (GB) needed.
    },
    "deployer": "A String", # Email address of the user who created this version.@OutputOnly
    "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", # Duration of time after the last request that an instance must wait before the instance is shut down.
      "maxInstances": 42, # Maximum number of instances to create for this version.
    },
    "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.
      "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
        "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
          "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
        },
      },
      "sourceReferences": [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
        { # Reference to a particular snapshot of the source tree used to build and deploy the application.
          "revisionId": "A String", # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
          "repository": "A String", # URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
        },
      ],
      "container": { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
        "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
      },
    },
    "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
    "runtimeApiVersion": "A String", # The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref
    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
      { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
        "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", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
          "httpHeaders": { # HTTP headers to use for all responses from these URLs.
            "a_key": "A String",
          },
          "expiration": "A String", # Time a static file served by this handler should be cached.
          "directory": "A String", # 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, # Whether this handler should match the request if the file referenced by the handler does not exist.
          "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
        },
        "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
        "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
        "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
          "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
          "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
          "expiration": "A String", # Time a static file served by this handler should be cached.
          "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
          "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
          "path": "A String", # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
          "httpHeaders": { # HTTP headers to use for all responses from these URLs.
            "a_key": "A String",
          },
        },
        "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
        "login": "A String", # Level of login required to access this resource.
      },
    ],
    "creationTime": "A String", # Time that this version was created.@OutputOnly
    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
    "runtime": "A String", # Desired runtime. Example: python27.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
        # Simple to use and understand for most users
        # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
        # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
        # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
        # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
        # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
        # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
    "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
  }</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. 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.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
        # Simple to use and understand for most users
        # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
        # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
        # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
        # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
        # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
        # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
    "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(appsId, modulesId, versionsId, x__xgafv=None, view=None)</code>
  <pre>Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.

Args:
  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/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.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Controls the set of fields returned in the Get response.

Returns:
  An object of the form:

    { # A Version resource is a specific set of source code and configuration files that are deployed into a module.
      "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
        "a_key": "A String",
      },
      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
      "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
      "instanceClass": "A String", # Instance class that is used to run this version. Valid values are:
          # AutomaticScaling: F1, F2, F4, F4_1G
          # ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
      "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
        { # Custom static error page to be served when an error occurs.
          "errorCode": "A String", # Error condition this handler applies to.
          "mimeType": "A String", # MIME type of file. Defaults to text/html.
          "staticFile": "A String", # Static file content to be served for this error.
        },
      ],
      "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
      "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
        "url": "A String", # URL to serve the endpoint at.
        "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
        "login": "A String", # Level of login required to access this resource. Defaults to optional.
        "script": "A String", # Path to the script from the application root directory.
      },
      "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
        "instanceTag": "A String", # Tag to apply to the VM instance during creation.
        "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
          "A String",
        ],
        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
      },
      "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
        "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
        "checkInterval": "A String", # Interval between health checks.
        "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
        "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
        "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
        "timeout": "A String", # Time before the health check is considered failed.
        "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
      },
      "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
        { # Third-party Python runtime library that is required by the application.
          "version": "A String", # Version of the library to select, or "latest".
          "name": "A String", # Name of the library. Example: "django".
        },
      ],
      "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, # 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.
      },
      "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
      "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
        "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
        "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
          "targetReceivedBytesPerSec": 42, # Target bytes received per second.
          "targetSentPacketsPerSec": 42, # Target packets sent per second.
          "targetReceivedPacketsPerSec": 42, # Target packets received per second.
          "targetSentBytesPerSec": 42, # Target bytes sent per second.
        },
        "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
          "targetWriteOpsPerSec": 42, # Target ops written per second.
          "targetReadBytesPerSec": 42, # Target bytes read per second.
          "targetReadOpsPerSec": 42, # Target ops read per second.
          "targetWriteBytesPerSec": 42, # Target bytes written per second.
        },
        "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
        "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
        "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
        "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
          "targetConcurrentRequests": 42, # Target number of concurrent requests.
          "targetRequestCountPerSec": 42, # Target requests per second.
        },
        "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
        "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
        "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
        "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
          "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
          "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
        },
      },
      "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
        "a_key": "A String",
      },
      "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
        "volumes": [ # User specified volumes.
          { # Volumes mounted within the app container. Only applicable for VM runtimes.
            "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
            "name": "A String", # Unique name for the volume.
            "sizeGb": 3.14, # Volume size in gigabytes.
          },
        ],
        "diskGb": 3.14, # Disk size (GB) needed.
        "cpu": 3.14, # Number of CPU cores needed.
        "memoryGb": 3.14, # Memory (GB) needed.
      },
      "deployer": "A String", # Email address of the user who created this version.@OutputOnly
      "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", # Duration of time after the last request that an instance must wait before the instance is shut down.
        "maxInstances": 42, # Maximum number of instances to create for this version.
      },
      "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.
        "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
          "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
            "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
            "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
          },
        },
        "sourceReferences": [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
          { # Reference to a particular snapshot of the source tree used to build and deploy the application.
            "revisionId": "A String", # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
            "repository": "A String", # URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
          },
        ],
        "container": { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
          "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
        },
      },
      "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
      "runtimeApiVersion": "A String", # The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref
      "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
      "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
        { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
          "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", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
            "httpHeaders": { # HTTP headers to use for all responses from these URLs.
              "a_key": "A String",
            },
            "expiration": "A String", # Time a static file served by this handler should be cached.
            "directory": "A String", # 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, # Whether this handler should match the request if the file referenced by the handler does not exist.
            "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
          },
          "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
          "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
          "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
            "scriptPath": "A String", # Path to the script from the application root directory.
          },
          "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
            "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
            "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
            "expiration": "A String", # Time a static file served by this handler should be cached.
            "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
            "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
            "path": "A String", # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
            "httpHeaders": { # HTTP headers to use for all responses from these URLs.
              "a_key": "A String",
            },
          },
          "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
            "scriptPath": "A String", # Path to the script from the application root directory.
          },
          "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
          "login": "A String", # Level of login required to access this resource.
        },
      ],
      "creationTime": "A String", # Time that this version was created.@OutputOnly
      "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
      "runtime": "A String", # Desired runtime. Example: python27.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(appsId, 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. 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.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  view: string, Controls the set of fields returned in the List response.

Returns:
  An object of the form:

    { # Response message for Versions.ListVersions.
    "nextPageToken": "A String", # Continuation token for fetching the next page of results.
    "versions": [ # The versions belonging to the requested module.
      { # A Version resource is a specific set of source code and configuration files that are deployed into a module.
          "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
            "a_key": "A String",
          },
          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
          "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
          "instanceClass": "A String", # Instance class that is used to run this version. Valid values are:
              # AutomaticScaling: F1, F2, F4, F4_1G
              # ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
          "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
            { # Custom static error page to be served when an error occurs.
              "errorCode": "A String", # Error condition this handler applies to.
              "mimeType": "A String", # MIME type of file. Defaults to text/html.
              "staticFile": "A String", # Static file content to be served for this error.
            },
          ],
          "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
          "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
            "url": "A String", # URL to serve the endpoint at.
            "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
            "login": "A String", # Level of login required to access this resource. Defaults to optional.
            "script": "A String", # Path to the script from the application root directory.
          },
          "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
            "instanceTag": "A String", # Tag to apply to the VM instance during creation.
            "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
              "A String",
            ],
            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
          },
          "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
            "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
            "checkInterval": "A String", # Interval between health checks.
            "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
            "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
            "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
            "timeout": "A String", # Time before the health check is considered failed.
            "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
          },
          "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
            { # Third-party Python runtime library that is required by the application.
              "version": "A String", # Version of the library to select, or "latest".
              "name": "A String", # Name of the library. Example: "django".
            },
          ],
          "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, # 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.
          },
          "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
          "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
            "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
            "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
              "targetReceivedBytesPerSec": 42, # Target bytes received per second.
              "targetSentPacketsPerSec": 42, # Target packets sent per second.
              "targetReceivedPacketsPerSec": 42, # Target packets received per second.
              "targetSentBytesPerSec": 42, # Target bytes sent per second.
            },
            "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
              "targetWriteOpsPerSec": 42, # Target ops written per second.
              "targetReadBytesPerSec": 42, # Target bytes read per second.
              "targetReadOpsPerSec": 42, # Target ops read per second.
              "targetWriteBytesPerSec": 42, # Target bytes written per second.
            },
            "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
            "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
            "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
            "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
              "targetConcurrentRequests": 42, # Target number of concurrent requests.
              "targetRequestCountPerSec": 42, # Target requests per second.
            },
            "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
            "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
            "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
            "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
              "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
              "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
            },
          },
          "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
            "a_key": "A String",
          },
          "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
            "volumes": [ # User specified volumes.
              { # Volumes mounted within the app container. Only applicable for VM runtimes.
                "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
                "name": "A String", # Unique name for the volume.
                "sizeGb": 3.14, # Volume size in gigabytes.
              },
            ],
            "diskGb": 3.14, # Disk size (GB) needed.
            "cpu": 3.14, # Number of CPU cores needed.
            "memoryGb": 3.14, # Memory (GB) needed.
          },
          "deployer": "A String", # Email address of the user who created this version.@OutputOnly
          "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", # Duration of time after the last request that an instance must wait before the instance is shut down.
            "maxInstances": 42, # Maximum number of instances to create for this version.
          },
          "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.
            "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
              "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
                "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
                "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
              },
            },
            "sourceReferences": [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
              { # Reference to a particular snapshot of the source tree used to build and deploy the application.
                "revisionId": "A String", # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
                "repository": "A String", # URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
              },
            ],
            "container": { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
              "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
            },
          },
          "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
          "runtimeApiVersion": "A String", # The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref
          "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
          "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
            { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
              "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", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
                "httpHeaders": { # HTTP headers to use for all responses from these URLs.
                  "a_key": "A String",
                },
                "expiration": "A String", # Time a static file served by this handler should be cached.
                "directory": "A String", # 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, # Whether this handler should match the request if the file referenced by the handler does not exist.
                "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
              },
              "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
              "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
              "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
                "scriptPath": "A String", # Path to the script from the application root directory.
              },
              "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
                "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
                "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
                "expiration": "A String", # Time a static file served by this handler should be cached.
                "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
                "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
                "path": "A String", # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
                "httpHeaders": { # HTTP headers to use for all responses from these URLs.
                  "a_key": "A String",
                },
              },
              "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
                "scriptPath": "A String", # Path to the script from the application root directory.
              },
              "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
              "login": "A String", # Level of login required to access this resource.
            },
          ],
          "creationTime": "A String", # Time that this version was created.@OutputOnly
          "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
          "runtime": "A String", # Desired runtime. Example: python27.
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(appsId, modulesId, versionsId, body, mask=None, x__xgafv=None)</code>
  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:
serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.serving_status):  For Version resources that use basic scaling, manual scaling, or run in  the App Engine flexible environment.
instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.instance_class):  For Version resources that run in the App Engine standard environment.
automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.
automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling):  For Version resources that use automatic scaling and run in the App  Engine standard environment.

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

{ # A Version resource is a specific set of source code and configuration files that are deployed into a module.
    "betaSettings": { # Metadata settings that are supplied to this version to enable beta runtime features.
      "a_key": "A String",
    },
    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
    "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are:
        # AutomaticScaling: F1, F2, F4, F4_1G
        # ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
      { # Custom static error page to be served when an error occurs.
        "errorCode": "A String", # Error condition this handler applies to.
        "mimeType": "A String", # MIME type of file. Defaults to text/html.
        "staticFile": "A String", # Static file content to be served for this error.
      },
    ],
    "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
      "url": "A String", # URL to serve the endpoint at.
      "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
      "login": "A String", # Level of login required to access this resource. Defaults to optional.
      "script": "A String", # Path to the script from the application root directory.
    },
    "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
      "instanceTag": "A String", # Tag to apply to the VM instance during creation.
      "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
        "A String",
      ],
      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
    },
    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
      "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
      "checkInterval": "A String", # Interval between health checks.
      "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
      "healthyThreshold": 42, # Number of consecutive successful health checks required before receiving traffic.
      "host": "A String", # Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"
      "timeout": "A String", # Time before the health check is considered failed.
      "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
    },
    "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
      { # Third-party Python runtime library that is required by the application.
        "version": "A String", # Version of the library to select, or "latest".
        "name": "A String", # Name of the library. Example: "django".
      },
    ],
    "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, # 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.
    },
    "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
    "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
      "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
      "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
        "targetReceivedBytesPerSec": 42, # Target bytes received per second.
        "targetSentPacketsPerSec": 42, # Target packets sent per second.
        "targetReceivedPacketsPerSec": 42, # Target packets received per second.
        "targetSentBytesPerSec": 42, # Target bytes sent per second.
      },
      "diskUtilization": { # Target scaling by disk usage. Only applicable for VM runtimes. # Target scaling by disk usage.
        "targetWriteOpsPerSec": 42, # Target ops written per second.
        "targetReadBytesPerSec": 42, # Target bytes read per second.
        "targetReadOpsPerSec": 42, # Target ops read per second.
        "targetWriteBytesPerSec": 42, # Target bytes written per second.
      },
      "maxPendingLatency": "A String", # Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.
      "maxIdleInstances": 42, # Maximum number of idle instances that should be maintained for this version.
      "minIdleInstances": 42, # Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.
      "requestUtilization": { # Target scaling by request utilization. Only applicable for VM runtimes. # Target scaling by request utilization.
        "targetConcurrentRequests": 42, # Target number of concurrent requests.
        "targetRequestCountPerSec": 42, # Target requests per second.
      },
      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
      "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
      "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
      "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
        "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
        "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
      },
    },
    "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
      "a_key": "A String",
    },
    "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
      "volumes": [ # User specified volumes.
        { # Volumes mounted within the app container. Only applicable for VM runtimes.
          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
          "name": "A String", # Unique name for the volume.
          "sizeGb": 3.14, # Volume size in gigabytes.
        },
      ],
      "diskGb": 3.14, # Disk size (GB) needed.
      "cpu": 3.14, # Number of CPU cores needed.
      "memoryGb": 3.14, # Memory (GB) needed.
    },
    "deployer": "A String", # Email address of the user who created this version.@OutputOnly
    "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", # Duration of time after the last request that an instance must wait before the instance is shut down.
      "maxInstances": 42, # Maximum number of instances to create for this version.
    },
    "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.
      "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
        "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/<bucket>/<object>'.
          "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
        },
      },
      "sourceReferences": [ # Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.
        { # Reference to a particular snapshot of the source tree used to build and deploy the application.
          "revisionId": "A String", # The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): "2198322f89e0bb2e25021667c2ed489d1fd34e6b"
          "repository": "A String", # URI string identifying the repository. Example: "https://source.developers.google.com/p/app-123/r/default"
        },
      ],
      "container": { # Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment. # The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.
        "image": "A String", # URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest"
      },
    },
    "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
    "runtimeApiVersion": "A String", # The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/<language>/config/appref
    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
      { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
        "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", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
          "httpHeaders": { # HTTP headers to use for all responses from these URLs.
            "a_key": "A String",
          },
          "expiration": "A String", # Time a static file served by this handler should be cached.
          "directory": "A String", # 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, # Whether this handler should match the request if the file referenced by the handler does not exist.
          "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
        },
        "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
        "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
        "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
          "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
          "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
          "expiration": "A String", # Time a static file served by this handler should be cached.
          "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
          "uploadPathRegex": "A String", # Regular expression that matches the file paths for all files that should be referenced by this handler.
          "path": "A String", # Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.
          "httpHeaders": { # HTTP headers to use for all responses from these URLs.
            "a_key": "A String",
          },
        },
        "apiEndpoint": { # Uses Google Cloud Endpoints to handle requests. # Uses API Endpoints to handle requests.
          "scriptPath": "A String", # Path to the script from the application root directory.
        },
        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
        "login": "A String", # Level of login required to access this resource.
      },
    ],
    "creationTime": "A String", # Time that this version was created.@OutputOnly
    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
    "runtime": "A String", # Desired runtime. Example: python27.
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: # The error result of the operation in case of failure or cancellation.
        # Simple to use and understand for most users
        # Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:
        # Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.
        # Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.
        # Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.
        # Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.
        # Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
    "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
  }</pre>
</div>

</body></html>