<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="toolresults_v1beta3.html">Cloud Tool Results API</a> . <a href="toolresults_v1beta3.clusters.html">clusters</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(projectId, historyId, executionId, clusterId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a single screenshot cluster by its ID</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, historyId, executionId, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Screenshot Clusters</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(projectId, historyId, executionId, clusterId, x__xgafv=None)</code>
  <pre>Retrieves a single screenshot cluster by its ID

Args:
  projectId: string, A Project id.

Required. (required)
  historyId: string, A History id.

Required. (required)
  executionId: string, An Execution id.

Required. (required)
  clusterId: string, A Cluster id

Required. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;activity&quot;: &quot;A String&quot;, # A string that describes the activity of every screen in the cluster.
    &quot;screens&quot;: [ # Full list of screens.
      {
        &quot;locale&quot;: &quot;A String&quot;, # Locale of the device that the screenshot was taken on.
            # Required.
        &quot;fileReference&quot;: &quot;A String&quot;, # File reference of the png file.
            # Required.
        &quot;model&quot;: &quot;A String&quot;, # Model of the device that the screenshot was taken on.
            # Required.
        &quot;version&quot;: &quot;A String&quot;, # OS version of the device that the screenshot was taken on.
            # Required.
      },
    ],
    &quot;keyScreen&quot;: { # A singular screen that represents the cluster as a whole. This screen will
        # act as the &quot;cover&quot; of the entire cluster. When users look at the clusters,
        # only the key screen from each cluster will be shown. Which screen is the
        # key screen is determined by the ClusteringAlgorithm
      &quot;locale&quot;: &quot;A String&quot;, # Locale of the device that the screenshot was taken on.
          # Required.
      &quot;fileReference&quot;: &quot;A String&quot;, # File reference of the png file.
          # Required.
      &quot;model&quot;: &quot;A String&quot;, # Model of the device that the screenshot was taken on.
          # Required.
      &quot;version&quot;: &quot;A String&quot;, # OS version of the device that the screenshot was taken on.
          # Required.
    },
    &quot;clusterId&quot;: &quot;A String&quot;, # A unique identifier for the cluster.
        # @OutputOnly
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, historyId, executionId, x__xgafv=None)</code>
  <pre>Lists Screenshot Clusters

Returns the list of screenshot clusters corresponding to an execution.
Screenshot clusters are created after the execution is finished.
Clusters are created from a set of screenshots. Between any two
screenshots, a matching score is calculated based off their metadata
that determines how similar they are. Screenshots are placed
in the cluster that has screens which have the highest matching
scores.

Args:
  projectId: string, A Project id.

Required. (required)
  historyId: string, A History id.

Required. (required)
  executionId: string, An Execution id.

Required. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;clusters&quot;: [ # The set of clusters associated with an execution
        # Always set
      {
        &quot;activity&quot;: &quot;A String&quot;, # A string that describes the activity of every screen in the cluster.
        &quot;screens&quot;: [ # Full list of screens.
          {
            &quot;locale&quot;: &quot;A String&quot;, # Locale of the device that the screenshot was taken on.
                # Required.
            &quot;fileReference&quot;: &quot;A String&quot;, # File reference of the png file.
                # Required.
            &quot;model&quot;: &quot;A String&quot;, # Model of the device that the screenshot was taken on.
                # Required.
            &quot;version&quot;: &quot;A String&quot;, # OS version of the device that the screenshot was taken on.
                # Required.
          },
        ],
        &quot;keyScreen&quot;: { # A singular screen that represents the cluster as a whole. This screen will
            # act as the &quot;cover&quot; of the entire cluster. When users look at the clusters,
            # only the key screen from each cluster will be shown. Which screen is the
            # key screen is determined by the ClusteringAlgorithm
          &quot;locale&quot;: &quot;A String&quot;, # Locale of the device that the screenshot was taken on.
              # Required.
          &quot;fileReference&quot;: &quot;A String&quot;, # File reference of the png file.
              # Required.
          &quot;model&quot;: &quot;A String&quot;, # Model of the device that the screenshot was taken on.
              # Required.
          &quot;version&quot;: &quot;A String&quot;, # OS version of the device that the screenshot was taken on.
              # Required.
        },
        &quot;clusterId&quot;: &quot;A String&quot;, # A unique identifier for the cluster.
            # @OutputOnly
      },
    ],
  }</pre>
</div>

</body></html>