<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="appengine_v1beta.html">App Engine Admin API</a> . <a href="appengine_v1beta.apps.html">apps</a> . <a href="appengine_v1beta.apps.services.html">services</a> . <a href="appengine_v1beta.apps.services.versions.html">versions</a> . <a href="appengine_v1beta.apps.services.versions.instances.html">instances</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#debug">debug(appsId, servicesId, versionsId, instancesId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.</p>
<p class="toc_element">
  <code><a href="#delete">delete(appsId, servicesId, versionsId, instancesId, x__xgafv=None)</a></code></p>
<p class="firstline">Stops a running instance.The instance might be automatically recreated based on the scaling settings of the version. For more information, see "How Instances are Managed" (standard environment (https://cloud.google.com/appengine/docs/standard/python/how-instances-are-managed) | flexible environment (https://cloud.google.com/appengine/docs/flexible/python/how-instances-are-managed)).To ensure that instances are not re-created and avoid getting billed, you can stop all instances within the target version by changing the serving status of the version to STOPPED with the apps.services.versions.patch (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions/patch) method.</p>
<p class="toc_element">
  <code><a href="#get">get(appsId, servicesId, versionsId, instancesId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets instance information.</p>
<p class="toc_element">
  <code><a href="#list">list(appsId, servicesId, versionsId, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="debug">debug(appsId, servicesId, versionsId, instancesId, body=None, x__xgafv=None)</code>
  <pre>Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in &quot;debug mode&quot;, the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.

Args:
  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1. (required)
  servicesId: string, Part of `name`. See documentation of `appsId`. (required)
  versionsId: string, Part of `name`. See documentation of `appsId`. (required)
  instancesId: string, Part of `name`. See documentation of `appsId`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for Instances.DebugInstance.
    &quot;sshKey&quot;: &quot;A String&quot;, # Public SSH key to add to the instance. Examples:
        # [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]
        # [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {&quot;userName&quot;:&quot;[USERNAME]&quot;,&quot;expireOn&quot;:&quot;[EXPIRE_TIME]&quot;}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).
  }

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(appsId, servicesId, versionsId, instancesId, x__xgafv=None)</code>
  <pre>Stops a running instance.The instance might be automatically recreated based on the scaling settings of the version. For more information, see &quot;How Instances are Managed&quot; (standard environment (https://cloud.google.com/appengine/docs/standard/python/how-instances-are-managed) | flexible environment (https://cloud.google.com/appengine/docs/flexible/python/how-instances-are-managed)).To ensure that instances are not re-created and avoid getting billed, you can stop all instances within the target version by changing the serving status of the version to STOPPED with the apps.services.versions.patch (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions/patch) method.

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
    &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
  }</pre>
</div>

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

Args:
  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1. (required)
  servicesId: string, Part of `name`. See documentation of `appsId`. (required)
  versionsId: string, Part of `name`. See documentation of `appsId`. (required)
  instancesId: 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:

    { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
    &quot;vmName&quot;: &quot;A String&quot;, # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
    &quot;id&quot;: &quot;A String&quot;, # Relative name of the instance within the version. Example: instance-1.@OutputOnly
    &quot;vmIp&quot;: &quot;A String&quot;, # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
    &quot;vmId&quot;: &quot;A String&quot;, # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
    &quot;appEngineRelease&quot;: &quot;A String&quot;, # App Engine release this instance is running on.@OutputOnly
    &quot;name&quot;: &quot;A String&quot;, # Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly
    &quot;averageLatency&quot;: 42, # Average latency (ms) over the last minute.@OutputOnly
    &quot;vmZoneName&quot;: &quot;A String&quot;, # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
    &quot;vmDebugEnabled&quot;: True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
    &quot;vmStatus&quot;: &quot;A String&quot;, # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
    &quot;memoryUsage&quot;: &quot;A String&quot;, # Total memory in use (bytes).@OutputOnly
    &quot;requests&quot;: 42, # Number of requests since this instance was started.@OutputOnly
    &quot;errors&quot;: 42, # Number of errors since this instance was started.@OutputOnly
    &quot;qps&quot;: 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
    &quot;startTime&quot;: &quot;A String&quot;, # Time that this instance was started.@OutputOnly
    &quot;availability&quot;: &quot;A String&quot;, # Availability of the instance.@OutputOnly
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(appsId, servicesId, versionsId, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).

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

Returns:
  An object of the form:

    { # Response message for Instances.ListInstances.
    &quot;instances&quot;: [ # The instances belonging to the requested version.
      { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
        &quot;vmName&quot;: &quot;A String&quot;, # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
        &quot;id&quot;: &quot;A String&quot;, # Relative name of the instance within the version. Example: instance-1.@OutputOnly
        &quot;vmIp&quot;: &quot;A String&quot;, # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
        &quot;vmId&quot;: &quot;A String&quot;, # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
        &quot;appEngineRelease&quot;: &quot;A String&quot;, # App Engine release this instance is running on.@OutputOnly
        &quot;name&quot;: &quot;A String&quot;, # Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly
        &quot;averageLatency&quot;: 42, # Average latency (ms) over the last minute.@OutputOnly
        &quot;vmZoneName&quot;: &quot;A String&quot;, # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
        &quot;vmDebugEnabled&quot;: True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
        &quot;vmStatus&quot;: &quot;A String&quot;, # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
        &quot;memoryUsage&quot;: &quot;A String&quot;, # Total memory in use (bytes).@OutputOnly
        &quot;requests&quot;: 42, # Number of requests since this instance was started.@OutputOnly
        &quot;errors&quot;: 42, # Number of errors since this instance was started.@OutputOnly
        &quot;qps&quot;: 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
        &quot;startTime&quot;: &quot;A String&quot;, # Time that this instance was started.@OutputOnly
        &quot;availability&quot;: &quot;A String&quot;, # Availability of the instance.@OutputOnly
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token for fetching the next page of results.
  }</pre>
</div>

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

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

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

</body></html>