<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="containeranalysis_v1beta1.html">Container Analysis API</a> . <a href="containeranalysis_v1beta1.projects.html">projects</a> . <a href="containeranalysis_v1beta1.projects.scanConfigs.html">scanConfigs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified scan configuration.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None, filter=None)</a></code></p>
<p class="firstline">Lists scan configurations for the specified 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="#update">update(name, body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified scan configuration.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets the specified scan configuration.

Args:
  name: string, The name of the scan configuration in the form of
`projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A scan configuration specifies whether Cloud components in a project have a
      # particular type of analysis being run. For example, it can configure whether
      # vulnerability scanning is being done on Docker images or not.
    "updateTime": "A String", # Output only. The time this scan config was last updated.
    "description": "A String", # Output only. A human-readable description of what the scan configuration
        # does.
    "enabled": True or False, # Whether the scan is enabled.
    "createTime": "A String", # Output only. The time this scan config was created.
    "name": "A String", # Output only. The name of the scan configuration in the form of
        # `projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None, filter=None)</code>
  <pre>Lists scan configurations for the specified project.

Args:
  parent: string, The name of the project to list scan configurations for in the form of
`projects/[PROJECT_ID]`. (required)
  pageSize: integer, The number of scan configs to return in the list.
  pageToken: string, Token to provide to skip to a particular spot in the list.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  filter: string, The filter expression.

Returns:
  An object of the form:

    { # Response for listing scan configurations.
    "nextPageToken": "A String", # The next pagination token in the list response. It should be used as
        # `page_token` for the following request. An empty value means no more
        # results.
    "scanConfigs": [ # The scan configurations requested.
      { # A scan configuration specifies whether Cloud components in a project have a
          # particular type of analysis being run. For example, it can configure whether
          # vulnerability scanning is being done on Docker images or not.
        "updateTime": "A String", # Output only. The time this scan config was last updated.
        "description": "A String", # Output only. A human-readable description of what the scan configuration
            # does.
        "enabled": True or False, # Whether the scan is enabled.
        "createTime": "A String", # Output only. The time this scan config was created.
        "name": "A String", # Output only. The name of the scan configuration in the form of
            # `projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.
      },
    ],
  }</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="update">update(name, body, x__xgafv=None)</code>
  <pre>Updates the specified scan configuration.

Args:
  name: string, The name of the scan configuration in the form of
`projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A scan configuration specifies whether Cloud components in a project have a
    # particular type of analysis being run. For example, it can configure whether
    # vulnerability scanning is being done on Docker images or not.
  "updateTime": "A String", # Output only. The time this scan config was last updated.
  "description": "A String", # Output only. A human-readable description of what the scan configuration
      # does.
  "enabled": True or False, # Whether the scan is enabled.
  "createTime": "A String", # Output only. The time this scan config was created.
  "name": "A String", # Output only. The name of the scan configuration in the form of
      # `projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.
}

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

Returns:
  An object of the form:

    { # A scan configuration specifies whether Cloud components in a project have a
      # particular type of analysis being run. For example, it can configure whether
      # vulnerability scanning is being done on Docker images or not.
    "updateTime": "A String", # Output only. The time this scan config was last updated.
    "description": "A String", # Output only. A human-readable description of what the scan configuration
        # does.
    "enabled": True or False, # Whether the scan is enabled.
    "createTime": "A String", # Output only. The time this scan config was created.
    "name": "A String", # Output only. The name of the scan configuration in the form of
        # `projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.
  }</pre>
</div>

</body></html>