<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_v1beta.html">Web Security Scanner API</a> . <a href="websecurityscanner_v1beta.projects.html">projects</a> . <a href="websecurityscanner_v1beta.projects.scanConfigs.html">scanConfigs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="websecurityscanner_v1beta.projects.scanConfigs.scanRuns.html">scanRuns()</a></code>
</p>
<p class="firstline">Returns the scanRuns 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(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new ScanConfig.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an existing ScanConfig and its child resources.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a ScanConfig.</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 ScanConfigs under a given project.</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="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a ScanConfig. This method support partial update of a ScanConfig.</p>
<p class="toc_element">
  <code><a href="#start">start(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Start a ScanRun according to the given ScanConfig.</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(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new ScanConfig.

Args:
  parent: string, Required. The parent resource name where the scan is created, which should be a project resource name in the format &#x27;projects/{projectId}&#x27;. (required)
  body: object, The request body.
    The object takes the form of:

{ # A ScanConfig resource contains the configurations to launch a scan.
  &quot;authentication&quot;: { # Scan authentication configuration. # The authentication configuration. If specified, service will use the authentication configuration during scanning.
    &quot;customAccount&quot;: { # Describes authentication configuration that uses a custom account. # Authentication using a custom account.
      &quot;loginUrl&quot;: &quot;A String&quot;, # Required. The login form URL of the website.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the custom account.
    },
    &quot;googleAccount&quot;: { # Describes authentication configuration that uses a Google account. # Authentication using a Google account.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the Google account.
    },
    &quot;iapCredential&quot;: { # Describes authentication configuration for Identity-Aware-Proxy (IAP). # Authentication using Identity-Aware-Proxy (IAP).
      &quot;iapTestServiceAccountInfo&quot;: { # Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies. # Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.
        &quot;targetAudienceClientId&quot;: &quot;A String&quot;, # Required. Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP).
      },
    },
  },
  &quot;blacklistPatterns&quot;: [ # The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The user provided display name of the ScanConfig.
  &quot;exportToSecurityCommandCenter&quot;: &quot;A String&quot;, # Controls export of scan configurations and results to Security Command Center.
  &quot;ignoreHttpStatusErrors&quot;: True or False, # Whether to keep scanning even if most requests return HTTP error codes.
  &quot;latestRun&quot;: { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12 # Latest ScanRun if available.
    &quot;endTime&quot;: &quot;A String&quot;, # 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. # 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;, # Indicates the error reason code.
      &quot;mostCommonHttpErrorCode&quot;: 42, # 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. # 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;, # Indicates the reason code for a configuration failure.
        &quot;fieldName&quot;: &quot;A String&quot;, # 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;, # The execution state of the ScanRun.
    &quot;hasVulnerabilities&quot;: True or False, # Whether the scan run has found any vulnerabilities.
    &quot;name&quot;: &quot;A String&quot;, # 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, # 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;, # 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;, # The time at which the ScanRun started.
    &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # 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;, # 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;: [ # 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;, # Indicates the warning code.
      },
    ],
  },
  &quot;managedScan&quot;: True or False, # Whether the scan config is managed by Web Security Scanner, output only.
  &quot;maxQps&quot;: 42, # The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ScanConfig. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. The ScanConfig IDs are generated by the system.
  &quot;riskLevel&quot;: &quot;A String&quot;, # The risk level selected for the scan
  &quot;schedule&quot;: { # Scan schedule configuration. # The schedule of the ScanConfig.
    &quot;intervalDurationDays&quot;: 42, # Required. The duration of time between executions in days.
    &quot;scheduleTime&quot;: &quot;A String&quot;, # A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately.
  },
  &quot;startingUrls&quot;: [ # Required. The starting URLs from which the scanner finds site pages.
    &quot;A String&quot;,
  ],
  &quot;staticIpScan&quot;: True or False, # Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.
  &quot;targetPlatforms&quot;: [ # Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.
    &quot;A String&quot;,
  ],
  &quot;userAgent&quot;: &quot;A String&quot;, # The user agent used during scanning.
}

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

Returns:
  An object of the form:

    { # A ScanConfig resource contains the configurations to launch a scan.
  &quot;authentication&quot;: { # Scan authentication configuration. # The authentication configuration. If specified, service will use the authentication configuration during scanning.
    &quot;customAccount&quot;: { # Describes authentication configuration that uses a custom account. # Authentication using a custom account.
      &quot;loginUrl&quot;: &quot;A String&quot;, # Required. The login form URL of the website.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the custom account.
    },
    &quot;googleAccount&quot;: { # Describes authentication configuration that uses a Google account. # Authentication using a Google account.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the Google account.
    },
    &quot;iapCredential&quot;: { # Describes authentication configuration for Identity-Aware-Proxy (IAP). # Authentication using Identity-Aware-Proxy (IAP).
      &quot;iapTestServiceAccountInfo&quot;: { # Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies. # Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.
        &quot;targetAudienceClientId&quot;: &quot;A String&quot;, # Required. Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP).
      },
    },
  },
  &quot;blacklistPatterns&quot;: [ # The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The user provided display name of the ScanConfig.
  &quot;exportToSecurityCommandCenter&quot;: &quot;A String&quot;, # Controls export of scan configurations and results to Security Command Center.
  &quot;ignoreHttpStatusErrors&quot;: True or False, # Whether to keep scanning even if most requests return HTTP error codes.
  &quot;latestRun&quot;: { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12 # Latest ScanRun if available.
    &quot;endTime&quot;: &quot;A String&quot;, # 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. # 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;, # Indicates the error reason code.
      &quot;mostCommonHttpErrorCode&quot;: 42, # 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. # 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;, # Indicates the reason code for a configuration failure.
        &quot;fieldName&quot;: &quot;A String&quot;, # 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;, # The execution state of the ScanRun.
    &quot;hasVulnerabilities&quot;: True or False, # Whether the scan run has found any vulnerabilities.
    &quot;name&quot;: &quot;A String&quot;, # 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, # 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;, # 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;, # The time at which the ScanRun started.
    &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # 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;, # 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;: [ # 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;, # Indicates the warning code.
      },
    ],
  },
  &quot;managedScan&quot;: True or False, # Whether the scan config is managed by Web Security Scanner, output only.
  &quot;maxQps&quot;: 42, # The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ScanConfig. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. The ScanConfig IDs are generated by the system.
  &quot;riskLevel&quot;: &quot;A String&quot;, # The risk level selected for the scan
  &quot;schedule&quot;: { # Scan schedule configuration. # The schedule of the ScanConfig.
    &quot;intervalDurationDays&quot;: 42, # Required. The duration of time between executions in days.
    &quot;scheduleTime&quot;: &quot;A String&quot;, # A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately.
  },
  &quot;startingUrls&quot;: [ # Required. The starting URLs from which the scanner finds site pages.
    &quot;A String&quot;,
  ],
  &quot;staticIpScan&quot;: True or False, # Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.
  &quot;targetPlatforms&quot;: [ # Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.
    &quot;A String&quot;,
  ],
  &quot;userAgent&quot;: &quot;A String&quot;, # The user agent used during scanning.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an existing ScanConfig and its child resources.

Args:
  name: string, Required. The resource name of the ScanConfig to be deleted. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#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 generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a ScanConfig.

Args:
  name: string, Required. The resource name of the ScanConfig to be returned. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#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 ScanConfig resource contains the configurations to launch a scan.
  &quot;authentication&quot;: { # Scan authentication configuration. # The authentication configuration. If specified, service will use the authentication configuration during scanning.
    &quot;customAccount&quot;: { # Describes authentication configuration that uses a custom account. # Authentication using a custom account.
      &quot;loginUrl&quot;: &quot;A String&quot;, # Required. The login form URL of the website.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the custom account.
    },
    &quot;googleAccount&quot;: { # Describes authentication configuration that uses a Google account. # Authentication using a Google account.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the Google account.
    },
    &quot;iapCredential&quot;: { # Describes authentication configuration for Identity-Aware-Proxy (IAP). # Authentication using Identity-Aware-Proxy (IAP).
      &quot;iapTestServiceAccountInfo&quot;: { # Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies. # Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.
        &quot;targetAudienceClientId&quot;: &quot;A String&quot;, # Required. Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP).
      },
    },
  },
  &quot;blacklistPatterns&quot;: [ # The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The user provided display name of the ScanConfig.
  &quot;exportToSecurityCommandCenter&quot;: &quot;A String&quot;, # Controls export of scan configurations and results to Security Command Center.
  &quot;ignoreHttpStatusErrors&quot;: True or False, # Whether to keep scanning even if most requests return HTTP error codes.
  &quot;latestRun&quot;: { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12 # Latest ScanRun if available.
    &quot;endTime&quot;: &quot;A String&quot;, # 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. # 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;, # Indicates the error reason code.
      &quot;mostCommonHttpErrorCode&quot;: 42, # 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. # 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;, # Indicates the reason code for a configuration failure.
        &quot;fieldName&quot;: &quot;A String&quot;, # 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;, # The execution state of the ScanRun.
    &quot;hasVulnerabilities&quot;: True or False, # Whether the scan run has found any vulnerabilities.
    &quot;name&quot;: &quot;A String&quot;, # 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, # 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;, # 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;, # The time at which the ScanRun started.
    &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # 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;, # 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;: [ # 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;, # Indicates the warning code.
      },
    ],
  },
  &quot;managedScan&quot;: True or False, # Whether the scan config is managed by Web Security Scanner, output only.
  &quot;maxQps&quot;: 42, # The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ScanConfig. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. The ScanConfig IDs are generated by the system.
  &quot;riskLevel&quot;: &quot;A String&quot;, # The risk level selected for the scan
  &quot;schedule&quot;: { # Scan schedule configuration. # The schedule of the ScanConfig.
    &quot;intervalDurationDays&quot;: 42, # Required. The duration of time between executions in days.
    &quot;scheduleTime&quot;: &quot;A String&quot;, # A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately.
  },
  &quot;startingUrls&quot;: [ # Required. The starting URLs from which the scanner finds site pages.
    &quot;A String&quot;,
  ],
  &quot;staticIpScan&quot;: True or False, # Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.
  &quot;targetPlatforms&quot;: [ # Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.
    &quot;A String&quot;,
  ],
  &quot;userAgent&quot;: &quot;A String&quot;, # The user agent used during scanning.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists ScanConfigs under a given project.

Args:
  parent: string, Required. The parent resource name, which should be a project resource name in the format &#x27;projects/{projectId}&#x27;. (required)
  pageSize: integer, The maximum number of ScanConfigs 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 `ListScanConfigs` 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;scanConfigs&quot;: [ # The list of ScanConfigs returned.
    { # A ScanConfig resource contains the configurations to launch a scan.
      &quot;authentication&quot;: { # Scan authentication configuration. # The authentication configuration. If specified, service will use the authentication configuration during scanning.
        &quot;customAccount&quot;: { # Describes authentication configuration that uses a custom account. # Authentication using a custom account.
          &quot;loginUrl&quot;: &quot;A String&quot;, # Required. The login form URL of the website.
          &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs.
          &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the custom account.
        },
        &quot;googleAccount&quot;: { # Describes authentication configuration that uses a Google account. # Authentication using a Google account.
          &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs.
          &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the Google account.
        },
        &quot;iapCredential&quot;: { # Describes authentication configuration for Identity-Aware-Proxy (IAP). # Authentication using Identity-Aware-Proxy (IAP).
          &quot;iapTestServiceAccountInfo&quot;: { # Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies. # Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.
            &quot;targetAudienceClientId&quot;: &quot;A String&quot;, # Required. Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP).
          },
        },
      },
      &quot;blacklistPatterns&quot;: [ # The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls
        &quot;A String&quot;,
      ],
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The user provided display name of the ScanConfig.
      &quot;exportToSecurityCommandCenter&quot;: &quot;A String&quot;, # Controls export of scan configurations and results to Security Command Center.
      &quot;ignoreHttpStatusErrors&quot;: True or False, # Whether to keep scanning even if most requests return HTTP error codes.
      &quot;latestRun&quot;: { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12 # Latest ScanRun if available.
        &quot;endTime&quot;: &quot;A String&quot;, # 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. # 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;, # Indicates the error reason code.
          &quot;mostCommonHttpErrorCode&quot;: 42, # 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. # 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;, # Indicates the reason code for a configuration failure.
            &quot;fieldName&quot;: &quot;A String&quot;, # 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;, # The execution state of the ScanRun.
        &quot;hasVulnerabilities&quot;: True or False, # Whether the scan run has found any vulnerabilities.
        &quot;name&quot;: &quot;A String&quot;, # 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, # 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;, # 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;, # The time at which the ScanRun started.
        &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # 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;, # 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;: [ # 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;, # Indicates the warning code.
          },
        ],
      },
      &quot;managedScan&quot;: True or False, # Whether the scan config is managed by Web Security Scanner, output only.
      &quot;maxQps&quot;: 42, # The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the ScanConfig. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. The ScanConfig IDs are generated by the system.
      &quot;riskLevel&quot;: &quot;A String&quot;, # The risk level selected for the scan
      &quot;schedule&quot;: { # Scan schedule configuration. # The schedule of the ScanConfig.
        &quot;intervalDurationDays&quot;: 42, # Required. The duration of time between executions in days.
        &quot;scheduleTime&quot;: &quot;A String&quot;, # A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately.
      },
      &quot;startingUrls&quot;: [ # Required. The starting URLs from which the scanner finds site pages.
        &quot;A String&quot;,
      ],
      &quot;staticIpScan&quot;: True or False, # Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.
      &quot;targetPlatforms&quot;: [ # Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.
        &quot;A String&quot;,
      ],
      &quot;userAgent&quot;: &quot;A String&quot;, # The user agent used during scanning.
    },
  ],
}</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="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a ScanConfig. This method support partial update of a ScanConfig.

Args:
  name: string, The resource name of the ScanConfig. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. The ScanConfig IDs are generated by the system. (required)
  body: object, The request body.
    The object takes the form of:

{ # A ScanConfig resource contains the configurations to launch a scan.
  &quot;authentication&quot;: { # Scan authentication configuration. # The authentication configuration. If specified, service will use the authentication configuration during scanning.
    &quot;customAccount&quot;: { # Describes authentication configuration that uses a custom account. # Authentication using a custom account.
      &quot;loginUrl&quot;: &quot;A String&quot;, # Required. The login form URL of the website.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the custom account.
    },
    &quot;googleAccount&quot;: { # Describes authentication configuration that uses a Google account. # Authentication using a Google account.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the Google account.
    },
    &quot;iapCredential&quot;: { # Describes authentication configuration for Identity-Aware-Proxy (IAP). # Authentication using Identity-Aware-Proxy (IAP).
      &quot;iapTestServiceAccountInfo&quot;: { # Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies. # Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.
        &quot;targetAudienceClientId&quot;: &quot;A String&quot;, # Required. Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP).
      },
    },
  },
  &quot;blacklistPatterns&quot;: [ # The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The user provided display name of the ScanConfig.
  &quot;exportToSecurityCommandCenter&quot;: &quot;A String&quot;, # Controls export of scan configurations and results to Security Command Center.
  &quot;ignoreHttpStatusErrors&quot;: True or False, # Whether to keep scanning even if most requests return HTTP error codes.
  &quot;latestRun&quot;: { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12 # Latest ScanRun if available.
    &quot;endTime&quot;: &quot;A String&quot;, # 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. # 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;, # Indicates the error reason code.
      &quot;mostCommonHttpErrorCode&quot;: 42, # 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. # 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;, # Indicates the reason code for a configuration failure.
        &quot;fieldName&quot;: &quot;A String&quot;, # 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;, # The execution state of the ScanRun.
    &quot;hasVulnerabilities&quot;: True or False, # Whether the scan run has found any vulnerabilities.
    &quot;name&quot;: &quot;A String&quot;, # 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, # 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;, # 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;, # The time at which the ScanRun started.
    &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # 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;, # 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;: [ # 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;, # Indicates the warning code.
      },
    ],
  },
  &quot;managedScan&quot;: True or False, # Whether the scan config is managed by Web Security Scanner, output only.
  &quot;maxQps&quot;: 42, # The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ScanConfig. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. The ScanConfig IDs are generated by the system.
  &quot;riskLevel&quot;: &quot;A String&quot;, # The risk level selected for the scan
  &quot;schedule&quot;: { # Scan schedule configuration. # The schedule of the ScanConfig.
    &quot;intervalDurationDays&quot;: 42, # Required. The duration of time between executions in days.
    &quot;scheduleTime&quot;: &quot;A String&quot;, # A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately.
  },
  &quot;startingUrls&quot;: [ # Required. The starting URLs from which the scanner finds site pages.
    &quot;A String&quot;,
  ],
  &quot;staticIpScan&quot;: True or False, # Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.
  &quot;targetPlatforms&quot;: [ # Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.
    &quot;A String&quot;,
  ],
  &quot;userAgent&quot;: &quot;A String&quot;, # The user agent used during scanning.
}

  updateMask: string, Required. The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A ScanConfig resource contains the configurations to launch a scan.
  &quot;authentication&quot;: { # Scan authentication configuration. # The authentication configuration. If specified, service will use the authentication configuration during scanning.
    &quot;customAccount&quot;: { # Describes authentication configuration that uses a custom account. # Authentication using a custom account.
      &quot;loginUrl&quot;: &quot;A String&quot;, # Required. The login form URL of the website.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the custom account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the custom account.
    },
    &quot;googleAccount&quot;: { # Describes authentication configuration that uses a Google account. # Authentication using a Google account.
      &quot;password&quot;: &quot;A String&quot;, # Required. Input only. The password of the Google account. The credential is stored encrypted and not returned in any response nor included in audit logs.
      &quot;username&quot;: &quot;A String&quot;, # Required. The user name of the Google account.
    },
    &quot;iapCredential&quot;: { # Describes authentication configuration for Identity-Aware-Proxy (IAP). # Authentication using Identity-Aware-Proxy (IAP).
      &quot;iapTestServiceAccountInfo&quot;: { # Describes authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies. # Authentication configuration when Web-Security-Scanner service account is added in Identity-Aware-Proxy (IAP) access policies.
        &quot;targetAudienceClientId&quot;: &quot;A String&quot;, # Required. Describes OAuth2 Client ID of resources protected by Identity-Aware-Proxy(IAP).
      },
    },
  },
  &quot;blacklistPatterns&quot;: [ # The excluded URL patterns as described in https://cloud.google.com/security-command-center/docs/how-to-use-web-security-scanner#excluding_urls
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The user provided display name of the ScanConfig.
  &quot;exportToSecurityCommandCenter&quot;: &quot;A String&quot;, # Controls export of scan configurations and results to Security Command Center.
  &quot;ignoreHttpStatusErrors&quot;: True or False, # Whether to keep scanning even if most requests return HTTP error codes.
  &quot;latestRun&quot;: { # A ScanRun is a output-only resource representing an actual run of the scan. Next id: 12 # Latest ScanRun if available.
    &quot;endTime&quot;: &quot;A String&quot;, # 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. # 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;, # Indicates the error reason code.
      &quot;mostCommonHttpErrorCode&quot;: 42, # 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. # 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;, # Indicates the reason code for a configuration failure.
        &quot;fieldName&quot;: &quot;A String&quot;, # 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;, # The execution state of the ScanRun.
    &quot;hasVulnerabilities&quot;: True or False, # Whether the scan run has found any vulnerabilities.
    &quot;name&quot;: &quot;A String&quot;, # 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, # 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;, # 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;, # The time at which the ScanRun started.
    &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # 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;, # 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;: [ # 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;, # Indicates the warning code.
      },
    ],
  },
  &quot;managedScan&quot;: True or False, # Whether the scan config is managed by Web Security Scanner, output only.
  &quot;maxQps&quot;: 42, # The maximum QPS during scanning. A valid value ranges from 5 to 20 inclusively. If the field is unspecified or its value is set 0, server will default to 15. Other values outside of [5, 20] range will be rejected with INVALID_ARGUMENT error.
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ScanConfig. The name follows the format of &#x27;projects/{projectId}/scanConfigs/{scanConfigId}&#x27;. The ScanConfig IDs are generated by the system.
  &quot;riskLevel&quot;: &quot;A String&quot;, # The risk level selected for the scan
  &quot;schedule&quot;: { # Scan schedule configuration. # The schedule of the ScanConfig.
    &quot;intervalDurationDays&quot;: 42, # Required. The duration of time between executions in days.
    &quot;scheduleTime&quot;: &quot;A String&quot;, # A timestamp indicates when the next run will be scheduled. The value is refreshed by the server after each run. If unspecified, it will default to current server time, which means the scan will be scheduled to start immediately.
  },
  &quot;startingUrls&quot;: [ # Required. The starting URLs from which the scanner finds site pages.
    &quot;A String&quot;,
  ],
  &quot;staticIpScan&quot;: True or False, # Whether the scan configuration has enabled static IP address scan feature. If enabled, the scanner will access applications from static IP addresses.
  &quot;targetPlatforms&quot;: [ # Set of Google Cloud platforms targeted by the scan. If empty, APP_ENGINE will be used as a default.
    &quot;A String&quot;,
  ],
  &quot;userAgent&quot;: &quot;A String&quot;, # The user agent used during scanning.
}</pre>
</div>

<div class="method">
    <code class="details" id="start">start(name, body=None, x__xgafv=None)</code>
  <pre>Start a ScanRun according to the given ScanConfig.

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

{ # Request for the `StartScanRun` 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;, # 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. # 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;, # Indicates the error reason code.
    &quot;mostCommonHttpErrorCode&quot;: 42, # 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. # 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;, # Indicates the reason code for a configuration failure.
      &quot;fieldName&quot;: &quot;A String&quot;, # 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;, # The execution state of the ScanRun.
  &quot;hasVulnerabilities&quot;: True or False, # Whether the scan run has found any vulnerabilities.
  &quot;name&quot;: &quot;A String&quot;, # 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, # 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;, # 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;, # The time at which the ScanRun started.
  &quot;urlsCrawledCount&quot;: &quot;A String&quot;, # 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;, # 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;: [ # 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;, # Indicates the warning code.
    },
  ],
}</pre>
</div>

</body></html>