<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_v2.html">Remote Build Execution API</a> . <a href="remotebuildexecution_v2.v2.html">v2</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#getCapabilities">getCapabilities(instanceName, x__xgafv=None)</a></code></p>
<p class="firstline">GetCapabilities returns the server capabilities configuration of the</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="getCapabilities">getCapabilities(instanceName, x__xgafv=None)</code>
  <pre>GetCapabilities returns the server capabilities configuration of the
remote endpoint.
Only the capabilities of the services supported by the endpoint will
be returned:
* Execution + CAS + Action Cache endpoints should return both
  CacheCapabilities and ExecutionCapabilities.
* Execution only endpoints should return ExecutionCapabilities.
* CAS + Action Cache only endpoints should return CacheCapabilities.

Args:
  instanceName: string, The instance of the execution system to operate against. A server may
support multiple instances of the execution system (with their own workers,
storage, caches, etc.). The server MAY require use of this field to select
between them in an implementation-defined fashion, otherwise it can be
omitted. (required)
  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
      # Capabilities.GetCapabilities.
    &quot;lowApiVersion&quot;: { # The full version of a given tool. # Earliest non-deprecated RE API version supported.
      &quot;patch&quot;: 42, # The patch version, e.g 3 for 10.2.3.
      &quot;prerelease&quot;: &quot;A String&quot;, # The pre-release version. Either this field or major/minor/patch fields
          # must be filled. They are mutually exclusive. Pre-release versions are
          # assumed to be earlier than any released versions.
      &quot;major&quot;: 42, # The major version, e.g 10 for 10.2.3.
      &quot;minor&quot;: 42, # The minor version, e.g. 2 for 10.2.3.
    },
    &quot;cacheCapabilities&quot;: { # Capabilities of the remote cache system. # Capabilities of the remote cache system.
      &quot;cachePriorityCapabilities&quot;: { # Allowed values for priority in # Supported cache priority range for both CAS and ActionCache.
          # ResultsCachePolicy
          # Used for querying both cache and execution valid priority ranges.
        &quot;priorities&quot;: [
          { # Supported range of priorities, including boundaries.
            &quot;maxPriority&quot;: 42,
            &quot;minPriority&quot;: 42,
          },
        ],
      },
      &quot;maxBatchTotalSizeBytes&quot;: &quot;A String&quot;, # Maximum total size of blobs to be uploaded/downloaded using
          # batch methods. A value of 0 means no limit is set, although
          # in practice there will always be a message size limitation
          # of the protocol in use, e.g. GRPC.
      &quot;symlinkAbsolutePathStrategy&quot;: &quot;A String&quot;, # Whether absolute symlink targets are supported.
      &quot;actionCacheUpdateCapabilities&quot;: { # Describes the server/instance capabilities for updating the action cache. # Capabilities for updating the action cache.
        &quot;updateEnabled&quot;: True or False,
      },
      &quot;digestFunction&quot;: [ # All the digest functions supported by the remote cache.
          # Remote cache may support multiple digest functions simultaneously.
        &quot;A String&quot;,
      ],
    },
    &quot;highApiVersion&quot;: { # The full version of a given tool. # Latest RE API version supported.
      &quot;patch&quot;: 42, # The patch version, e.g 3 for 10.2.3.
      &quot;prerelease&quot;: &quot;A String&quot;, # The pre-release version. Either this field or major/minor/patch fields
          # must be filled. They are mutually exclusive. Pre-release versions are
          # assumed to be earlier than any released versions.
      &quot;major&quot;: 42, # The major version, e.g 10 for 10.2.3.
      &quot;minor&quot;: 42, # The minor version, e.g. 2 for 10.2.3.
    },
    &quot;executionCapabilities&quot;: { # Capabilities of the remote execution system. # Capabilities of the remote execution system.
      &quot;execEnabled&quot;: True or False, # Whether remote execution is enabled for the particular server/instance.
      &quot;digestFunction&quot;: &quot;A String&quot;, # Remote execution may only support a single digest function.
      &quot;executionPriorityCapabilities&quot;: { # Allowed values for priority in # Supported execution priority range.
          # ResultsCachePolicy
          # Used for querying both cache and execution valid priority ranges.
        &quot;priorities&quot;: [
          { # Supported range of priorities, including boundaries.
            &quot;maxPriority&quot;: 42,
            &quot;minPriority&quot;: 42,
          },
        ],
      },
      &quot;supportedNodeProperties&quot;: [ # Supported node properties.
        &quot;A String&quot;,
      ],
    },
    &quot;deprecatedApiVersion&quot;: { # The full version of a given tool. # Earliest RE API version supported, including deprecated versions.
      &quot;patch&quot;: 42, # The patch version, e.g 3 for 10.2.3.
      &quot;prerelease&quot;: &quot;A String&quot;, # The pre-release version. Either this field or major/minor/patch fields
          # must be filled. They are mutually exclusive. Pre-release versions are
          # assumed to be earlier than any released versions.
      &quot;major&quot;: 42, # The major version, e.g 10 for 10.2.3.
      &quot;minor&quot;: 42, # The minor version, e.g. 2 for 10.2.3.
    },
  }</pre>
</div>

</body></html>