<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.projects.html">projects</a> . <a href="toolresults_v1beta3.projects.histories.html">histories</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="toolresults_v1beta3.projects.histories.executions.html">executions()</a></code>
</p>
<p class="firstline">Returns the executions Resource.</p>

<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="#create">create(projectId, body=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a History. The returned History will have the id set. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the containing project does not exist</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, historyId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a History. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the History does not exist</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, filterByName=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Histories for a given Project. The histories are sorted by modification time in descending order. The history_id key will be used to order the history with the same modification time. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the History does not exist</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(projectId, body=None, requestId=None, x__xgafv=None)</code>
  <pre>Creates a History. The returned History will have the id set. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to write to project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the containing project does not exist

Args:
  projectId: string, A Project id. Required. (required)
  body: object, The request body.
    The object takes the form of:

{ # A History represents a sorted list of Executions ordered by the start_timestamp_millis field (descending). It can be used to group all the Executions of a continuous build. Note that the ordering only operates on one-dimension. If a repository has multiple branches, it means that multiple histories will need to be used in order to order Executions per branch.
  &quot;displayName&quot;: &quot;A String&quot;, # A short human-readable (plain text) name to display in the UI. Maximum of 100 characters. - In response: present if set during create. - In create request: optional
  &quot;historyId&quot;: &quot;A String&quot;, # A unique identifier within a project for this History. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create request: never set
  &quot;name&quot;: &quot;A String&quot;, # A name to uniquely identify a history within a project. Maximum of 200 characters. - In response always set - In create request: always set
  &quot;testPlatform&quot;: &quot;A String&quot;, # The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown.
}

  requestId: string, A unique request ID for server to detect duplicated requests. For example, a UUID. Optional, but strongly recommended.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A History represents a sorted list of Executions ordered by the start_timestamp_millis field (descending). It can be used to group all the Executions of a continuous build. Note that the ordering only operates on one-dimension. If a repository has multiple branches, it means that multiple histories will need to be used in order to order Executions per branch.
  &quot;displayName&quot;: &quot;A String&quot;, # A short human-readable (plain text) name to display in the UI. Maximum of 100 characters. - In response: present if set during create. - In create request: optional
  &quot;historyId&quot;: &quot;A String&quot;, # A unique identifier within a project for this History. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create request: never set
  &quot;name&quot;: &quot;A String&quot;, # A name to uniquely identify a history within a project. Maximum of 200 characters. - In response always set - In create request: always set
  &quot;testPlatform&quot;: &quot;A String&quot;, # The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, historyId, x__xgafv=None)</code>
  <pre>Gets a History. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the History does not exist

Args:
  projectId: string, A Project id. Required. (required)
  historyId: string, A History 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:

    { # A History represents a sorted list of Executions ordered by the start_timestamp_millis field (descending). It can be used to group all the Executions of a continuous build. Note that the ordering only operates on one-dimension. If a repository has multiple branches, it means that multiple histories will need to be used in order to order Executions per branch.
  &quot;displayName&quot;: &quot;A String&quot;, # A short human-readable (plain text) name to display in the UI. Maximum of 100 characters. - In response: present if set during create. - In create request: optional
  &quot;historyId&quot;: &quot;A String&quot;, # A unique identifier within a project for this History. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create request: never set
  &quot;name&quot;: &quot;A String&quot;, # A name to uniquely identify a history within a project. Maximum of 200 characters. - In response always set - In create request: always set
  &quot;testPlatform&quot;: &quot;A String&quot;, # The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, filterByName=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists Histories for a given Project. The histories are sorted by modification time in descending order. The history_id key will be used to order the history with the same modification time. May return any of the following canonical error codes: - PERMISSION_DENIED - if the user is not authorized to read project - INVALID_ARGUMENT - if the request is malformed - NOT_FOUND - if the History does not exist

Args:
  projectId: string, A Project id. Required. (required)
  filterByName: string, If set, only return histories with the given name. Optional.
  pageSize: integer, The maximum number of Histories to fetch. Default value: 20. The server will use this default if the field is not set or has a value of 0. Any value greater than 100 will be treated as 100. Optional.
  pageToken: string, A continuation token to resume the query at the next item. Optional.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for HistoryService.List
  &quot;histories&quot;: [ # Histories.
    { # A History represents a sorted list of Executions ordered by the start_timestamp_millis field (descending). It can be used to group all the Executions of a continuous build. Note that the ordering only operates on one-dimension. If a repository has multiple branches, it means that multiple histories will need to be used in order to order Executions per branch.
      &quot;displayName&quot;: &quot;A String&quot;, # A short human-readable (plain text) name to display in the UI. Maximum of 100 characters. - In response: present if set during create. - In create request: optional
      &quot;historyId&quot;: &quot;A String&quot;, # A unique identifier within a project for this History. Returns INVALID_ARGUMENT if this field is set or overwritten by the caller. - In response always set - In create request: never set
      &quot;name&quot;: &quot;A String&quot;, # A name to uniquely identify a history within a project. Maximum of 200 characters. - In response always set - In create request: always set
      &quot;testPlatform&quot;: &quot;A String&quot;, # The platform of the test history. - In response: always set. Returns the platform of the last execution if unknown.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A continuation token to resume the query at the next item. Will only be set if there are more histories to fetch. Tokens are valid for up to one hour from the time of the first list request. For instance, if you make a list request at 1PM and use the token from this first request 10 minutes later, the token from this second response will only be valid for 50 minutes.
}</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>