<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="osconfig_v1beta.html">Cloud OS Config API</a> . <a href="osconfig_v1beta.projects.html">projects</a> . <a href="osconfig_v1beta.projects.patchJobs.html">patchJobs</a> . <a href="osconfig_v1beta.projects.patchJobs.instanceDetails.html">instanceDetails</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get a list of instance details for a given patch job.</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="list">list(parent, filter=None, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Get a list of instance details for a given patch job.

Args:
  parent: string, Required. The parent for the instances are in the form of `projects/*/patchJobs/*`. (required)
  filter: string, A filter expression that filters results listed in the response. This
field supports filtering results by instance zone, name, state, or
`failure_reason`.
  pageToken: string, A pagination token returned from a previous call
that indicates where this listing should continue from.
  pageSize: integer, The maximum number of instance details records to return.  Default is 100.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response message for listing the instances details for a patch job.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A pagination token that can be used to get the next page of results.
    &quot;patchJobInstanceDetails&quot;: [ # A list of instance status.
      { # Patch details for a VM instance. For more information about reviewing VM
          # instance details, see
          # [Listing all VM instance details for a specific patch
          # job](https://cloud.google.com/compute/docs/os-patch-management/manage-patch-jobs#list-instance-details).
        &quot;name&quot;: &quot;A String&quot;, # The instance name in the form `projects/*/zones/*/instances/*`
        &quot;failureReason&quot;: &quot;A String&quot;, # If the patch fails, this field provides the reason.
        &quot;instanceSystemId&quot;: &quot;A String&quot;, # The unique identifier for the instance. This identifier is
            # defined by the server.
        &quot;state&quot;: &quot;A String&quot;, # Current state of instance patch.
        &quot;attemptCount&quot;: &quot;A String&quot;, # The number of times the agent that the agent attempts to apply the patch.
      },
    ],
  }</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>