<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="remotebuildexecution_v1.html">Remote Build Execution API</a> . <a href="remotebuildexecution_v1.v1.html">v1</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#watch">watch(target=None, resumeMarker=None, Semantics=None, Semantics=None, Semantics=None, x__xgafv=None)</a></code></p>
<p class="firstline">Start a streaming RPC to get watch information from the server.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="watch">watch(target=None, resumeMarker=None, Semantics=None, Semantics=None, Semantics=None, x__xgafv=None)</code>
  <pre>Start a streaming RPC to get watch information from the server.

Args:
  target: string, The `target` value **must** be a valid URL path pointing to an entity
to watch. Note that the service name **must** be
removed from the target field (e.g., the target field must say
"/foo/bar", not "myservice.googleapis.com/foo/bar"). A client is
also allowed to pass system-specific parameters in the URL that
are only obeyed by some implementations. Some parameters will be
implementation-specific. However, some have predefined meaning
and are listed here:

 * recursive = true|false [default=false]
   If set to true, indicates that the client wants to watch all elements
   of entities in the subtree rooted at the entity's name in `target`. For
   descendants that are not the immediate children of the target, the
   `Change.element` will contain slashes.

   Note that some namespaces and entities will not support recursive
   watching. When watching such an entity, a client must not set recursive
   to true. Otherwise, it will receive an `UNIMPLEMENTED` error.

Normal URL encoding must be used inside `target`.  For example, if a query
parameter name or value, or the non-query parameter portion of `target`
contains a special character, it must be %-encoded.  We recommend that
clients and servers use their runtime's URL library to produce and consume
target values.
  resumeMarker: string, The `resume_marker` specifies how much of the existing underlying state is
delivered to the client when the watch request is received by the
system. The client can set this marker in one of the following ways to get
different semantics:

*   Parameter is not specified or has the value "".
    Semantics: Fetch initial state.
    The client wants the entity's initial state to be delivered. See the
    description in "Initial State".

*   Parameter is set to the string "now" (UTF-8 encoding).
    Semantics: Fetch new changes only.
    The client just wants to get the changes received by the system after
    the watch point. The system may deliver changes from before the watch
    point as well.

*   Parameter is set to a value received in an earlier
    `Change.resume_marker` field while watching the same entity.
    Semantics: Resume from a specific point.
    The client wants to receive the changes from a specific point; this
    value must correspond to a value received in the `Change.resume_marker`
    field. The system may deliver changes from before the `resume_marker`
    as well. If the system cannot resume the stream from this point (e.g.,
    if it is too far behind in the stream), it can raise the
    `FAILED_PRECONDITION` error.

An implementation MUST support an unspecified parameter and the
empty string "" marker (initial state fetching) and the "now" marker.
It need not support resuming from a specific point.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A batch of Change messages.
    "changes": [ # A list of Change messages.
      { # A Change indicates the most recent state of an element.
        "continued": True or False, # If true, this Change is followed by more Changes that are in the same group
            # as this Change.
        "state": "A String", # The state of the `element`.
        "resumeMarker": "A String", # If present, provides a compact representation of all the messages that have
            # been received by the caller for the given entity, e.g., it could be a
            # sequence number or a multi-part timestamp/version vector. This marker can
            # be provided in the Request message, allowing the caller to resume the
            # stream watching at a specific point without fetching the initial state.
        "data": { # The actual change data. This field is present only when `state() == EXISTS`
            # or `state() == ERROR`. Please see google.protobuf.Any about how to use
            # the Any type.
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
        "element": "A String", # Name of the element, interpreted relative to the entity's actual
            # name. "" refers to the entity itself. The element name is a valid
            # UTF-8 string.
      },
    ],
  }</pre>
</div>

</body></html>