<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="genomics_v2alpha1.workers.projects.html">projects()</a></code>
</p>
<p class="firstline">Returns the projects Resource.</p>

<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</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;deadlineExpired&quot;: { # A generic empty message that you can re-use to avoid defining duplicated # The deadline has expired and the worker needs more time.
        # 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 `{}`.
    },
    &quot;workerStatus&quot;: { # The status of the worker VM. # Data about the status of the worker VM.
      &quot;uptimeSeconds&quot;: &quot;A String&quot;, # System uptime.
      &quot;totalRamBytes&quot;: &quot;A String&quot;, # Total RAM.
      &quot;bootDisk&quot;: { # The status of a disk on a VM. # Status of the boot disk.
        &quot;totalSpaceBytes&quot;: &quot;A String&quot;, # Total disk space.
        &quot;freeSpaceBytes&quot;: &quot;A String&quot;, # Free disk space.
      },
      &quot;freeRamBytes&quot;: &quot;A String&quot;, # Free RAM.
      &quot;attachedDisks&quot;: { # Status of attached disks.
        &quot;a_key&quot;: { # The status of a disk on a VM.
          &quot;totalSpaceBytes&quot;: &quot;A String&quot;, # Total disk space.
          &quot;freeSpaceBytes&quot;: &quot;A String&quot;, # Free disk space.
        },
      },
    },
    &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;data&quot;: { # The event data.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
        &quot;timestamp&quot;: &quot;A String&quot;, # The time when the event happened.
      },
    ],
    &quot;result&quot;: { # The `Status` type defines a logical error model that is suitable for # The operation has finished with the given result.
        # 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).
      &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;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;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;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.
    &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.
    },
  }</pre>
</div>

</body></html>