<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_v1alpha.html">Web Security Scanner API</a> . <a href="websecurityscanner_v1alpha.projects.html">projects</a> . <a href="websecurityscanner_v1alpha.projects.scanConfigs.html">scanConfigs</a> . <a href="websecurityscanner_v1alpha.projects.scanConfigs.scanRuns.html">scanRuns</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="websecurityscanner_v1alpha.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_v1alpha.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_v1alpha.projects.scanConfigs.scanRuns.findings.html">findings()</a></code>
</p>
<p class="firstline">Returns the findings Resource.</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</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="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
'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'. (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.
    "name": "A String", # Output only.
        # The resource name of the ScanRun. The name follows the format of
        # 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.
        # The ScanRun IDs are generated by the system.
    "executionState": "A String", # Output only.
        # The execution state of the ScanRun.
    "urlsTestedCount": "A String", # 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.
    "progressPercent": 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.
    "resultState": "A String", # Output only.
        # The result state of the ScanRun. This field is only available after the
        # execution state reaches "FINISHED".
    "startTime": "A String", # Output only.
        # The time at which the ScanRun started.
    "endTime": "A String", # Output only.
        # The time at which the ScanRun reached termination state - that the ScanRun
        # is either finished or stopped by user.
    "hasVulnerabilities": True or False, # Output only.
        # Whether the scan run has found any vulnerabilities.
    "urlsCrawledCount": "A String", # 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.
  }</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 'projects/{projectId}/scanConfigs/{scanConfigId}'. (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.
    "nextPageToken": "A String", # Token to retrieve the next page of results, or empty if there are no
        # more results in the list.
    "scanRuns": [ # The list of ScanRuns returned.
      { # A ScanRun is a output-only resource representing an actual run of the scan.
        "name": "A String", # Output only.
            # The resource name of the ScanRun. The name follows the format of
            # 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.
            # The ScanRun IDs are generated by the system.
        "executionState": "A String", # Output only.
            # The execution state of the ScanRun.
        "urlsTestedCount": "A String", # 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.
        "progressPercent": 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.
        "resultState": "A String", # Output only.
            # The result state of the ScanRun. This field is only available after the
            # execution state reaches "FINISHED".
        "startTime": "A String", # Output only.
            # The time at which the ScanRun started.
        "endTime": "A String", # Output only.
            # The time at which the ScanRun reached termination state - that the ScanRun
            # is either finished or stopped by user.
        "hasVulnerabilities": True or False, # Output only.
            # Whether the scan run has found any vulnerabilities.
        "urlsCrawledCount": "A String", # 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.
      },
    ],
  }</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 'execute()' 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
'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'. (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.
    "name": "A String", # Output only.
        # The resource name of the ScanRun. The name follows the format of
        # 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.
        # The ScanRun IDs are generated by the system.
    "executionState": "A String", # Output only.
        # The execution state of the ScanRun.
    "urlsTestedCount": "A String", # 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.
    "progressPercent": 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.
    "resultState": "A String", # Output only.
        # The result state of the ScanRun. This field is only available after the
        # execution state reaches "FINISHED".
    "startTime": "A String", # Output only.
        # The time at which the ScanRun started.
    "endTime": "A String", # Output only.
        # The time at which the ScanRun reached termination state - that the ScanRun
        # is either finished or stopped by user.
    "hasVulnerabilities": True or False, # Output only.
        # Whether the scan run has found any vulnerabilities.
    "urlsCrawledCount": "A String", # 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.
  }</pre>
</div>

</body></html>