<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="websecurityscanner_v1.html">Web Security Scanner API</a> . <a href="websecurityscanner_v1.projects.html">projects</a> . <a href="websecurityscanner_v1.projects.scanConfigs.html">scanConfigs</a> . <a href="websecurityscanner_v1.projects.scanConfigs.scanRuns.html">scanRuns</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="websecurityscanner_v1.projects.scanConfigs.scanRuns.crawledUrls.html">crawledUrls()</a></code>
</p>
<p class="firstline">Returns the crawledUrls Resource.</p>

<p class="toc_element">
  <code><a href="websecurityscanner_v1.projects.scanConfigs.scanRuns.findingTypeStats.html">findingTypeStats()</a></code>
</p>
<p class="firstline">Returns the findingTypeStats Resource.</p>

<p class="toc_element">
  <code><a href="websecurityscanner_v1.projects.scanConfigs.scanRuns.findings.html">findings()</a></code>
</p>
<p class="firstline">Returns the findings 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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a ScanRun.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists ScanRuns under a given ScanConfig, in descending order of ScanRun stop time.</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>
<p class="toc_element">
  <code><a href="#stop">stop(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Stops a ScanRun. The stopped ScanRun is returned.</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="get">get(name, x__xgafv=None)</code>
  <pre>Gets a ScanRun.

Args:
  name: string, Required. The resource name of the ScanRun to be returned. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}&#x27;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time at which the ScanRun reached termination state - that the ScanRun is either finished or stopped by user.
  &quot;errorTrace&quot;: { # Output only. Defines an error trace message for a ScanRun. # Output only. If result_state is an ERROR, this field provides the primary reason for scan&#x27;s termination and more details, if such are available.
    &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the error reason code.
    &quot;mostCommonHttpErrorCode&quot;: 42, # Output only. If the scan encounters TOO_MANY_HTTP_ERRORS, this field indicates the most common HTTP error code, if such is available. For example, if this code is 404, the scan has encountered too many NOT_FOUND responses.
    &quot;scanConfigError&quot;: { # Defines a custom error message used by CreateScanConfig and UpdateScanConfig APIs when scan configuration validation fails. It is also reported as part of a ScanRunErrorTrace message if scan validation fails due to a scan configuration error. # Output only. If the scan encounters SCAN_CONFIG_ISSUE error, this field has the error message encountered during scan configuration validation that is performed before each scan run.
      &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the reason code for a configuration failure.
      &quot;fieldName&quot;: &quot;A String&quot;, # Output only. Indicates the full name of the ScanConfig field that triggers this error, for example &quot;scan_config.max_qps&quot;. This field is provided for troubleshooting purposes only and its actual value can change in the future.
    },
  },
  &quot;executionState&quot;: &quot;A String&quot;, # Output only. The execution state of the ScanRun.
  &quot;hasVulnerabilities&quot;: True or False, # Output only. Whether the scan run has found any vulnerabilities.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the ScanRun. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}&#x27;. The ScanRun IDs are generated by the system.
  &quot;progressPercent&quot;: 42, # Output only. The percentage of total completion ranging from 0 to 100. If the scan is in queue, the value is 0. If the scan is running, the value ranges from 0 to 100. If the scan is finished, the value is 100.
  &quot;resultState&quot;: &quot;A String&quot;, # Output only. The result state of the ScanRun. This field is only available after the execution state reaches &quot;FINISHED&quot;.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time at which the ScanRun started.
  &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # Output only. The number of URLs crawled during this ScanRun. If the scan is in progress, the value represents the number of URLs crawled up to now.
  &quot;urlsTestedCount&quot;: &quot;A String&quot;, # Output only. The number of URLs tested during this ScanRun. If the scan is in progress, the value represents the number of URLs tested up to now. The number of URLs tested is usually larger than the number URLS crawled because typically a crawled URL is tested with multiple test payloads.
  &quot;warningTraces&quot;: [ # Output only. A list of warnings, if such are encountered during this scan run.
    { # Output only. Defines a warning trace message for ScanRun. Warning traces provide customers with useful information that helps make the scanning process more effective.
      &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the warning code.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists ScanRuns under a given ScanConfig, in descending order of ScanRun stop time.

Args:
  parent: string, Required. The parent resource name, which should be a scan resource name in the format &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. (required)
  pageSize: integer, The maximum number of ScanRuns to return, can be limited by server. If not specified or not positive, the implementation will select a reasonable value.
  pageToken: string, A token identifying a page of results to be returned. This should be a `next_page_token` value returned from a previous List request. If unspecified, the first page of results is returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for the `ListScanRuns` method.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
  &quot;scanRuns&quot;: [ # The list of ScanRuns returned.
    { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time at which the ScanRun reached termination state - that the ScanRun is either finished or stopped by user.
      &quot;errorTrace&quot;: { # Output only. Defines an error trace message for a ScanRun. # Output only. If result_state is an ERROR, this field provides the primary reason for scan&#x27;s termination and more details, if such are available.
        &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the error reason code.
        &quot;mostCommonHttpErrorCode&quot;: 42, # Output only. If the scan encounters TOO_MANY_HTTP_ERRORS, this field indicates the most common HTTP error code, if such is available. For example, if this code is 404, the scan has encountered too many NOT_FOUND responses.
        &quot;scanConfigError&quot;: { # Defines a custom error message used by CreateScanConfig and UpdateScanConfig APIs when scan configuration validation fails. It is also reported as part of a ScanRunErrorTrace message if scan validation fails due to a scan configuration error. # Output only. If the scan encounters SCAN_CONFIG_ISSUE error, this field has the error message encountered during scan configuration validation that is performed before each scan run.
          &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the reason code for a configuration failure.
          &quot;fieldName&quot;: &quot;A String&quot;, # Output only. Indicates the full name of the ScanConfig field that triggers this error, for example &quot;scan_config.max_qps&quot;. This field is provided for troubleshooting purposes only and its actual value can change in the future.
        },
      },
      &quot;executionState&quot;: &quot;A String&quot;, # Output only. The execution state of the ScanRun.
      &quot;hasVulnerabilities&quot;: True or False, # Output only. Whether the scan run has found any vulnerabilities.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the ScanRun. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}&#x27;. The ScanRun IDs are generated by the system.
      &quot;progressPercent&quot;: 42, # Output only. The percentage of total completion ranging from 0 to 100. If the scan is in queue, the value is 0. If the scan is running, the value ranges from 0 to 100. If the scan is finished, the value is 100.
      &quot;resultState&quot;: &quot;A String&quot;, # Output only. The result state of the ScanRun. This field is only available after the execution state reaches &quot;FINISHED&quot;.
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time at which the ScanRun started.
      &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # Output only. The number of URLs crawled during this ScanRun. If the scan is in progress, the value represents the number of URLs crawled up to now.
      &quot;urlsTestedCount&quot;: &quot;A String&quot;, # Output only. The number of URLs tested during this ScanRun. If the scan is in progress, the value represents the number of URLs tested up to now. The number of URLs tested is usually larger than the number URLS crawled because typically a crawled URL is tested with multiple test payloads.
      &quot;warningTraces&quot;: [ # Output only. A list of warnings, if such are encountered during this scan run.
        { # Output only. Defines a warning trace message for ScanRun. Warning traces provide customers with useful information that helps make the scanning process more effective.
          &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the warning code.
        },
      ],
    },
  ],
}</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>

<div class="method">
    <code class="details" id="stop">stop(name, body=None, x__xgafv=None)</code>
  <pre>Stops a ScanRun. The stopped ScanRun is returned.

Args:
  name: string, Required. The resource name of the ScanRun to be stopped. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}&#x27;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for the `StopScanRun` method.
}

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

Returns:
  An object of the form:

    { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time at which the ScanRun reached termination state - that the ScanRun is either finished or stopped by user.
  &quot;errorTrace&quot;: { # Output only. Defines an error trace message for a ScanRun. # Output only. If result_state is an ERROR, this field provides the primary reason for scan&#x27;s termination and more details, if such are available.
    &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the error reason code.
    &quot;mostCommonHttpErrorCode&quot;: 42, # Output only. If the scan encounters TOO_MANY_HTTP_ERRORS, this field indicates the most common HTTP error code, if such is available. For example, if this code is 404, the scan has encountered too many NOT_FOUND responses.
    &quot;scanConfigError&quot;: { # Defines a custom error message used by CreateScanConfig and UpdateScanConfig APIs when scan configuration validation fails. It is also reported as part of a ScanRunErrorTrace message if scan validation fails due to a scan configuration error. # Output only. If the scan encounters SCAN_CONFIG_ISSUE error, this field has the error message encountered during scan configuration validation that is performed before each scan run.
      &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the reason code for a configuration failure.
      &quot;fieldName&quot;: &quot;A String&quot;, # Output only. Indicates the full name of the ScanConfig field that triggers this error, for example &quot;scan_config.max_qps&quot;. This field is provided for troubleshooting purposes only and its actual value can change in the future.
    },
  },
  &quot;executionState&quot;: &quot;A String&quot;, # Output only. The execution state of the ScanRun.
  &quot;hasVulnerabilities&quot;: True or False, # Output only. Whether the scan run has found any vulnerabilities.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the ScanRun. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}&#x27;. The ScanRun IDs are generated by the system.
  &quot;progressPercent&quot;: 42, # Output only. The percentage of total completion ranging from 0 to 100. If the scan is in queue, the value is 0. If the scan is running, the value ranges from 0 to 100. If the scan is finished, the value is 100.
  &quot;resultState&quot;: &quot;A String&quot;, # Output only. The result state of the ScanRun. This field is only available after the execution state reaches &quot;FINISHED&quot;.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time at which the ScanRun started.
  &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # Output only. The number of URLs crawled during this ScanRun. If the scan is in progress, the value represents the number of URLs crawled up to now.
  &quot;urlsTestedCount&quot;: &quot;A String&quot;, # Output only. The number of URLs tested during this ScanRun. If the scan is in progress, the value represents the number of URLs tested up to now. The number of URLs tested is usually larger than the number URLS crawled because typically a crawled URL is tested with multiple test payloads.
  &quot;warningTraces&quot;: [ # Output only. A list of warnings, if such are encountered during this scan run.
    { # Output only. Defines a warning trace message for ScanRun. Warning traces provide customers with useful information that helps make the scanning process more effective.
      &quot;code&quot;: &quot;A String&quot;, # Output only. Indicates the warning code.
    },
  ],
}</pre>
</div>

</body></html>