<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.
    "deprecatedApiVersion": { # The full version of a given tool. # Earliest RE API version supported, including deprecated versions.
      "major": 42, # The major version, e.g 10 for 10.2.3.
      "prerelease": "A String", # 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.
      "minor": 42, # The minor version, e.g. 2 for 10.2.3.
      "patch": 42, # The patch version, e.g 3 for 10.2.3.
    },
    "cacheCapabilities": { # Capabilities of the remote cache system. # Capabilities of the remote cache system.
      "cachePriorityCapabilities": { # 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.
        "priorities": [
          { # Supported range of priorities, including boundaries.
            "maxPriority": 42,
            "minPriority": 42,
          },
        ],
      },
      "maxBatchTotalSizeBytes": "A String", # 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.
      "actionCacheUpdateCapabilities": { # Describes the server/instance capabilities for updating the action cache. # Capabilities for updating the action cache.
        "updateEnabled": True or False,
      },
      "digestFunction": [ # All the digest functions supported by the remote cache.
          # Remote cache may support multiple digest functions simultaneously.
        "A String",
      ],
      "symlinkAbsolutePathStrategy": "A String", # Whether absolute symlink targets are supported.
    },
    "executionCapabilities": { # Capabilities of the remote execution system. # Capabilities of the remote execution system.
      "executionPriorityCapabilities": { # Allowed values for priority in # Supported execution priority range.
          # ResultsCachePolicy
          # Used for querying both cache and execution valid priority ranges.
        "priorities": [
          { # Supported range of priorities, including boundaries.
            "maxPriority": 42,
            "minPriority": 42,
          },
        ],
      },
      "execEnabled": True or False, # Whether remote execution is enabled for the particular server/instance.
      "digestFunction": "A String", # Remote execution may only support a single digest function.
    },
    "highApiVersion": { # The full version of a given tool. # Latest RE API version supported.
      "major": 42, # The major version, e.g 10 for 10.2.3.
      "prerelease": "A String", # 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.
      "minor": 42, # The minor version, e.g. 2 for 10.2.3.
      "patch": 42, # The patch version, e.g 3 for 10.2.3.
    },
    "lowApiVersion": { # The full version of a given tool. # Earliest non-deprecated RE API version supported.
      "major": 42, # The major version, e.g 10 for 10.2.3.
      "prerelease": "A String", # 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.
      "minor": 42, # The minor version, e.g. 2 for 10.2.3.
      "patch": 42, # The patch version, e.g 3 for 10.2.3.
    },
  }</pre>
</div>

</body></html>