<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="genomics_v2alpha1.html">Genomics API</a> . <a href="genomics_v2alpha1.workers.html">workers</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#checkIn">checkIn(id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">The worker uses this method to retrieve the assigned operation and provide periodic status updates.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="checkIn">checkIn(id, body=None, x__xgafv=None)</code>
  <pre>The worker uses this method to retrieve the assigned operation and provide periodic status updates.

Args:
  id: string, The VM identity token for authenticating the VM instance. https://cloud.google.com/compute/docs/instances/verifying-instance-identity (required)
  body: object, The request body.
    The object takes the form of:

{ # The parameters to the CheckIn method.
    &quot;events&quot;: [ # A list of timestamped events.
      { # An event that occured in the operation assigned to the worker and the time of occurance.
        &quot;timestamp&quot;: &quot;A String&quot;, # The time when the event happened.
        &quot;data&quot;: { # The event data.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      },
    ],
    &quot;result&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 operation has finished with the given result.
      &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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &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;sosReport&quot;: &quot;A String&quot;, # An SOS report for an unexpected VM failure.
    &quot;deadlineExpired&quot;: { # 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 `{}`. # The deadline has expired and the worker needs more time.
    },
    &quot;workerStatus&quot;: { # The status of the worker VM. # Data about the status of the worker VM.
      &quot;attachedDisks&quot;: { # Status of attached disks.
        &quot;a_key&quot;: { # The status of a disk on a VM.
          &quot;freeSpaceBytes&quot;: &quot;A String&quot;, # Free disk space.
          &quot;totalSpaceBytes&quot;: &quot;A String&quot;, # Total disk space.
        },
      },
      &quot;totalRamBytes&quot;: &quot;A String&quot;, # Total RAM.
      &quot;uptimeSeconds&quot;: &quot;A String&quot;, # System uptime.
      &quot;bootDisk&quot;: { # The status of a disk on a VM. # Status of the boot disk.
        &quot;freeSpaceBytes&quot;: &quot;A String&quot;, # Free disk space.
        &quot;totalSpaceBytes&quot;: &quot;A String&quot;, # Total disk space.
      },
      &quot;freeRamBytes&quot;: &quot;A String&quot;, # Free RAM.
    },
    &quot;event&quot;: { # A workflow specific event occurred.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
  }

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

Returns:
  An object of the form:

    { # The response to the CheckIn method.
    &quot;metadata&quot;: { # The metadata that describes the operation assigned to the worker.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;deadline&quot;: &quot;A String&quot;, # The deadline by which the worker must request an extension. The backend will allow for network transmission time and other delays, but the worker must attempt to transmit the extension request no later than the deadline.
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

</body></html>