<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<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 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.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<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;cacheCapabilities&quot;: { # Capabilities of the remote cache system. # Capabilities of the remote cache system.
    &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;cachePriorityCapabilities&quot;: { # Allowed values for priority in ResultsCachePolicy and ExecutionPolicy Used for querying both cache and execution valid priority ranges. # Supported cache priority range for both CAS and ActionCache.
      &quot;priorities&quot;: [
        { # Supported range of priorities, including boundaries.
          &quot;maxPriority&quot;: 42, # The maximum numeric value for this priority range, which represents the least urgent task or shortest retained item.
          &quot;minPriority&quot;: 42, # The minimum numeric value for this priority range, which represents the most urgent task or longest retained item.
        },
      ],
    },
    &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;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;supportedCompressor&quot;: [ # Compressors supported by the &quot;compressed-blobs&quot; bytestream resources. Servers MUST support identity/no-compression, even if it is not listed here. Note that this does not imply which if any compressors are supported by the server at the gRPC level.
      &quot;A String&quot;,
    ],
    &quot;symlinkAbsolutePathStrategy&quot;: &quot;A String&quot;, # Whether absolute symlink targets are supported.
  },
  &quot;deprecatedApiVersion&quot;: { # The full version of a given tool. # Earliest RE API version supported, including deprecated 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;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;executionCapabilities&quot;: { # Capabilities of the remote execution system. # Capabilities of the remote execution system.
    &quot;digestFunction&quot;: &quot;A String&quot;, # Remote execution may only support a single digest function.
    &quot;execEnabled&quot;: True or False, # Whether remote execution is enabled for the particular server/instance.
    &quot;executionPriorityCapabilities&quot;: { # Allowed values for priority in ResultsCachePolicy and ExecutionPolicy Used for querying both cache and execution valid priority ranges. # Supported execution priority range.
      &quot;priorities&quot;: [
        { # Supported range of priorities, including boundaries.
          &quot;maxPriority&quot;: 42, # The maximum numeric value for this priority range, which represents the least urgent task or shortest retained item.
          &quot;minPriority&quot;: 42, # The minimum numeric value for this priority range, which represents the most urgent task or longest retained item.
        },
      ],
    },
    &quot;supportedNodeProperties&quot;: [ # Supported node properties.
      &quot;A String&quot;,
    ],
  },
  &quot;highApiVersion&quot;: { # The full version of a given tool. # Latest RE API version supported.
    &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;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;lowApiVersion&quot;: { # The full version of a given tool. # Earliest non-deprecated RE API version supported.
    &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;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.
  },
}</pre>
</div>

</body></html>