<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="container_v1beta1.html">Kubernetes Engine API</a> . <a href="container_v1beta1.projects.html">projects</a> . <a href="container_v1beta1.projects.locations.html">locations</a> . <a href="container_v1beta1.projects.locations.operations.html">operations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels the specified operation.</p>
<p class="toc_element">
  <code><a href="#get">get(name, operationId=None, projectId=None, zone=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified operation.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, zone=None, projectId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all operations in a project in the specified zone or all zones.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(name, body=None, x__xgafv=None)</code>
  <pre>Cancels the specified operation.

Args:
  name: string, The name (project, location, operation id) of the operation to cancel.
Specified in the format `projects/*/locations/*/operations/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # CancelOperationRequest cancels a single operation.
    &quot;zone&quot;: &quot;A String&quot;, # Required. Deprecated. The name of the Google Compute Engine
        # [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        # operation resides. This field has been deprecated and replaced by the name
        # field.
    &quot;projectId&quot;: &quot;A String&quot;, # Required. Deprecated. The Google Developers Console [project ID or project
        # number](https://support.google.com/cloud/answer/6158840).
        # This field has been deprecated and replaced by the name field.
    &quot;operationId&quot;: &quot;A String&quot;, # Required. Deprecated. The server-assigned `name` of the operation.
        # This field has been deprecated and replaced by the name field.
    &quot;name&quot;: &quot;A String&quot;, # The name (project, location, operation id) of the operation to cancel.
        # Specified in the format `projects/*/locations/*/operations/*`.
  }

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

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated
      # empty messages in your APIs. A typical example is to use it as the request
      # or the response type of an API method. For instance:
      #
      #     service Foo {
      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
      #     }
      #
      # The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, operationId=None, projectId=None, zone=None, x__xgafv=None)</code>
  <pre>Gets the specified operation.

Args:
  name: string, The name (project, location, operation id) of the operation to get.
Specified in the format `projects/*/locations/*/operations/*`. (required)
  operationId: string, Required. Deprecated. The server-assigned `name` of the operation.
This field has been deprecated and replaced by the name field.
  projectId: string, Required. Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the name field.
  zone: string, Required. Deprecated. The name of the Google Compute Engine
[zone](https://cloud.google.com/compute/docs/zones#available) in which the
cluster resides. This field has been deprecated and replaced by the name
field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This operation resource represents operations that may have happened or are
      # happening on the cluster. All fields are output only.
    &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
    &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
    &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
      &quot;stages&quot;: [ # Substages of an operation or a stage.
        # Object with schema name: OperationProgress
      ],
      &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage.
          # Unset for single-stage operations.
      &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage.
          # Unset for single-stage operations.
      &quot;metrics&quot;: [ # Progress metric bundle, for example:
          #   metrics: [{name: &quot;nodes done&quot;,     int_value: 15},
          #             {name: &quot;nodes total&quot;,    int_value: 32}]
          # or
          #   metrics: [{name: &quot;progress&quot;,       double_value: 0.56},
          #             {name: &quot;progress scale&quot;, double_value: 1.0}]
        { # Progress metric is (string, int|float|string) pair.
          &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
          &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
          &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
          &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
        },
      ],
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
    &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine
        # [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
        # or
        # [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
        # in which the cluster resides.
    &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine
        # [zone](https://cloud.google.com/compute/docs/zones#available) in which the
        # operation is taking place. This field is deprecated, use location instead.
    &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error.
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
    &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition
        &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
      },
    ],
    &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in
        # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
    &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
    &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state.
      { # StatusCondition describes why a cluster or a node pool has a certain status
          # (e.g., ERROR or DEGRADED).
        &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition
        &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
      },
    ],
    &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, zone=None, projectId=None, x__xgafv=None)</code>
  <pre>Lists all operations in a project in the specified zone or all zones.

Args:
  parent: string, The parent (project and location) where the operations will be listed.
Specified in the format `projects/*/locations/*`.
Location &quot;-&quot; matches all zones and all regions. (required)
  zone: string, Required. Deprecated. The name of the Google Compute Engine
[zone](https://cloud.google.com/compute/docs/zones#available) to return
operations for, or `-` for all zones. This field has been deprecated and
replaced by the parent field.
  projectId: string, Required. Deprecated. The Google Developers Console [project ID or project
number](https://support.google.com/cloud/answer/6158840).
This field has been deprecated and replaced by the parent field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListOperationsResponse is the result of ListOperationsRequest.
    &quot;missingZones&quot;: [ # If any zones are listed here, the list of operations returned
        # may be missing the operations from those zones.
      &quot;A String&quot;,
    ],
    &quot;operations&quot;: [ # A list of operations in the project in the specified zone.
      { # This operation resource represents operations that may have happened or are
          # happening on the cluster. All fields are output only.
        &quot;targetLink&quot;: &quot;A String&quot;, # Server-defined URL for the target of the operation.
        &quot;operationType&quot;: &quot;A String&quot;, # The operation type.
        &quot;progress&quot;: { # Information about operation (or operation stage) progress. # Output only. [Output only] Progress information for an operation.
          &quot;stages&quot;: [ # Substages of an operation or a stage.
            # Object with schema name: OperationProgress
          ],
          &quot;name&quot;: &quot;A String&quot;, # A non-parameterized string describing an operation stage.
              # Unset for single-stage operations.
          &quot;status&quot;: &quot;A String&quot;, # Status of an operation stage.
              # Unset for single-stage operations.
          &quot;metrics&quot;: [ # Progress metric bundle, for example:
              #   metrics: [{name: &quot;nodes done&quot;,     int_value: 15},
              #             {name: &quot;nodes total&quot;,    int_value: 32}]
              # or
              #   metrics: [{name: &quot;progress&quot;,       double_value: 0.56},
              #             {name: &quot;progress scale&quot;, double_value: 1.0}]
            { # Progress metric is (string, int|float|string) pair.
              &quot;doubleValue&quot;: 3.14, # For metrics with floating point value.
              &quot;stringValue&quot;: &quot;A String&quot;, # For metrics with custom values (ratios, visual progress, etc.).
              &quot;name&quot;: &quot;A String&quot;, # Required. Metric name, e.g., &quot;nodes total&quot;, &quot;percent done&quot;.
              &quot;intValue&quot;: &quot;A String&quot;, # For metrics with integer value.
            },
          ],
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # Server-defined URL for the resource.
        &quot;location&quot;: &quot;A String&quot;, # [Output only] The name of the Google Compute Engine
            # [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
            # or
            # [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
            # in which the cluster resides.
        &quot;zone&quot;: &quot;A String&quot;, # The name of the Google Compute Engine
            # [zone](https://cloud.google.com/compute/docs/zones#available) in which the
            # operation is taking place. This field is deprecated, use location instead.
        &quot;endTime&quot;: &quot;A String&quot;, # [Output only] The time the operation completed, in
            # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        &quot;statusMessage&quot;: &quot;A String&quot;, # Output only. If an error has occurred, a textual description of the error.
        &quot;name&quot;: &quot;A String&quot;, # The server-assigned ID for the operation.
        &quot;clusterConditions&quot;: [ # Which conditions caused the current cluster state.
          { # StatusCondition describes why a cluster or a node pool has a certain status
              # (e.g., ERROR or DEGRADED).
            &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition
            &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
          },
        ],
        &quot;startTime&quot;: &quot;A String&quot;, # [Output only] The time the operation started, in
            # [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
        &quot;detail&quot;: &quot;A String&quot;, # Detailed operation progress, if available.
        &quot;nodepoolConditions&quot;: [ # Which conditions caused the current node pool state.
          { # StatusCondition describes why a cluster or a node pool has a certain status
              # (e.g., ERROR or DEGRADED).
            &quot;code&quot;: &quot;A String&quot;, # Machine-friendly representation of the condition
            &quot;message&quot;: &quot;A String&quot;, # Human-friendly representation of the condition
          },
        ],
        &quot;status&quot;: &quot;A String&quot;, # The current status of the operation.
      },
    ],
  }</pre>
</div>

</body></html>