<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.thumbnails.html">thumbnails</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(projectId, historyId, executionId, stepId, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists thumbnails of images attached to a step.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(projectId, historyId, executionId, stepId, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists thumbnails of images attached to a step.

May return any of the following canonical error codes:
- PERMISSION_DENIED - if the user is not authorized to read from the
                      project, or from any of the images
- INVALID_ARGUMENT - if the request is malformed
- NOT_FOUND - if the step does not exist, or if any of the images
              do not exist

Args:
  projectId: string, A Project id.

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

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

Required. (required)
  stepId: string, A Step id.

Required. (required)
  pageToken: string, A continuation token to resume the query at the next item.

Optional.
  pageSize: integer, The maximum number of thumbnails to fetch.

Default value: 50. The server will use this default if the field is not set
or has a value of 0.

Optional.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response containing the thumbnails in a step.
    &quot;thumbnails&quot;: [ # A list of image data.
        #
        # Images are returned in a deterministic order; they are ordered by these
        # factors, in order of
        # importance:
        # * First, by their associated test case. Images without a test case are
        #   considered greater than images with one.
        # * Second, by their creation time. Images without a creation time are
        #   greater than images with one.
        # * Third, by the order in which they were added to the step (by calls to
        #   CreateStep or UpdateStep).
      { # An image, with a link to the main image and a thumbnail.
        &quot;thumbnail&quot;: { # A single thumbnail, with its size and format. # The thumbnail.
          &quot;data&quot;: &quot;A String&quot;, # The thumbnail file itself.
              #
              # That is, the bytes here are precisely the bytes that make up the thumbnail
              # file; they can be served as an image as-is (with the appropriate content
              # type.)
              #
              # Always set.
          &quot;contentType&quot;: &quot;A String&quot;, # The thumbnail&#x27;s content type, i.e. &quot;image/png&quot;.
              #
              # Always set.
          &quot;heightPx&quot;: 42, # The height of the thumbnail, in pixels.
              #
              # Always set.
          &quot;widthPx&quot;: 42, # The width of the thumbnail, in pixels.
              #
              # Always set.
        },
        &quot;stepId&quot;: &quot;A String&quot;, # The step to which the image is attached.
            #
            # Always set.
        &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for # An error explaining why the thumbnail could not be rendered.
            # different programming environments, including REST APIs and RPC APIs. It is
            # used by [gRPC](https://github.com/grpc). Each `Status` message contains
            # three pieces of data: error code, error message, and error details.
            #
            # You can find out more about this error model and how to work with it in the
            # [API Design Guide](https://cloud.google.com/apis/design/errors).
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any
              # user-facing error message should be localized and sent in the
              # google.rpc.Status.details field, or localized by the client.
          &quot;details&quot;: [ # A list of messages that carry the error details.  There is a common set of
              # message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
        },
        &quot;sourceImage&quot;: { # A reference to a ToolExecution output file. # A reference to the full-size, original image.
            #
            # This is the same as the tool_outputs entry for the image under its Step.
            #
            # Always set.
          &quot;testCase&quot;: { # A reference to a test case. # The test case to which this output file belongs.
              #
              # - In response: present if set by create/update request
              # - In create/update request: optional
              #
              # Test case references are canonically ordered lexicographically by these three
              # factors:
              # * First, by test_suite_name.
              # * Second, by class_name.
              # * Third, by name.
            &quot;testSuiteName&quot;: &quot;A String&quot;, # The name of the test suite to which this test case belongs.
            &quot;className&quot;: &quot;A String&quot;, # The name of the class.
            &quot;name&quot;: &quot;A String&quot;, # The name of the test case.
                #
                # Required.
          },
          &quot;creationTime&quot;: { # A Timestamp represents a point in time independent of any time zone or local # The creation time of the file.
              #
              # - In response: present if set by create/update request
              # - In create/update request: optional
              # calendar, encoded as a count of seconds and fractions of seconds at
              # nanosecond resolution. The count is relative to an epoch at UTC midnight on
              # January 1, 1970, in the proleptic Gregorian calendar which extends the
              # Gregorian calendar backwards to year one.
              #
              # All minutes are 60 seconds long. Leap seconds are &quot;smeared&quot; so that no leap
              # second table is needed for interpretation, using a [24-hour linear
              # smear](https://developers.google.com/time/smear).
              #
              # The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
              # restricting to that range, we ensure that we can convert to and from [RFC
              # 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
            &quot;nanos&quot;: 42, # Non-negative fractions of a second at nanosecond resolution. Negative
                # second values with fractions must still have non-negative nanos values
                # that count forward in time. Must be from 0 to 999,999,999
                # inclusive.
            &quot;seconds&quot;: &quot;A String&quot;, # Represents seconds of UTC time since Unix epoch
                # 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
                # 9999-12-31T23:59:59Z inclusive.
          },
          &quot;output&quot;: { # A reference to a file. # A FileReference to an output file.
              #
              # - In response: always set
              # - In create/update request: always set
            &quot;fileUri&quot;: &quot;A String&quot;, # The URI of a file stored in Google Cloud Storage.
                #
                # For example: http://storage.googleapis.com/mybucket/path/to/test.xml
                # or in gsutil format: gs://mybucket/path/to/test.xml
                # with version-specific info,
                # gs://mybucket/path/to/test.xml#1360383693690000
                #
                # An INVALID_ARGUMENT error will be returned if the URI format is not
                # supported.
                #
                # - In response: always set
                # - In create/update request: always set
          },
        },
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A continuation token to resume the query at the next item.
        #
        # If set, indicates that there are more thumbnails to read, by calling list
        # again with this value in the page_token field.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>