<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="securitycenter_v1.html">Security Command Center API</a> . <a href="securitycenter_v1.projects.html">projects</a> . <a href="securitycenter_v1.projects.bigQueryExports.html">bigQueryExports</a></h1>
<h2>Instance Methods</h2>
<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, bigQueryExportId=None, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a big query export.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an existing big query export.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a big query export.</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 BigQuery exports. Note that when requesting BigQuery exports at a given level all exports under that level are also returned e.g. if requesting BigQuery exports under a folder, then all BigQuery exports immediately under the folder plus the ones created under the projects within the folder are returned.</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 BigQuery export.</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, bigQueryExportId=None, body=None, x__xgafv=None)</code>
  <pre>Creates a big query export.

Args:
  parent: string, Required. Resource name of the new big query export&#x27;s parent. Its format is &quot;organizations/[organization_id]&quot;, &quot;folders/[folder_id]&quot;, or &quot;projects/[project_id]&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Configures how to deliver Findings to BigQuery Instance.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the big query export was created. This field is set by the server and will be ignored if provided on export on creation.
  &quot;dataset&quot;: &quot;A String&quot;, # The dataset to write findings&#x27; updates to. Its format is &quot;projects/[project_id]/datasets/[bigquery_dataset_id]&quot;. BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).
  &quot;description&quot;: &quot;A String&quot;, # The description of the export (max of 1024 characters).
  &quot;filter&quot;: &quot;A String&quot;, # Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. Please see the proto documentation in the finding (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/finding.proto) and in the ListFindingsRequest for valid filter syntax. (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/securitycenter_service.proto).
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the big query export. This field is set by the server and will be ignored if provided on export creation or update.
  &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: &quot;organizations/{organization_id}/bigQueryExports/{export_id}&quot; Example format: &quot;folders/{folder_id}/bigQueryExports/{export_id}&quot; Example format: &quot;projects/{project_id}/bigQueryExports/{export_id}&quot; This field is provided in responses, and is ignored when provided in create requests.
  &quot;principal&quot;: &quot;A String&quot;, # Output only. The service account that needs permission to create table, upload data to the big query dataset.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the big export was updated. This field is set by the server and will be ignored if provided on export creation or update.
}

  bigQueryExportId: string, Required. Unique identifier provided by the client within the parent scope. It must consist of lower case letters, numbers, and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Configures how to deliver Findings to BigQuery Instance.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the big query export was created. This field is set by the server and will be ignored if provided on export on creation.
  &quot;dataset&quot;: &quot;A String&quot;, # The dataset to write findings&#x27; updates to. Its format is &quot;projects/[project_id]/datasets/[bigquery_dataset_id]&quot;. BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).
  &quot;description&quot;: &quot;A String&quot;, # The description of the export (max of 1024 characters).
  &quot;filter&quot;: &quot;A String&quot;, # Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. Please see the proto documentation in the finding (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/finding.proto) and in the ListFindingsRequest for valid filter syntax. (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/securitycenter_service.proto).
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the big query export. This field is set by the server and will be ignored if provided on export creation or update.
  &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: &quot;organizations/{organization_id}/bigQueryExports/{export_id}&quot; Example format: &quot;folders/{folder_id}/bigQueryExports/{export_id}&quot; Example format: &quot;projects/{project_id}/bigQueryExports/{export_id}&quot; This field is provided in responses, and is ignored when provided in create requests.
  &quot;principal&quot;: &quot;A String&quot;, # Output only. The service account that needs permission to create table, upload data to the big query dataset.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the big export was updated. This field is set by the server and will be ignored if provided on export creation or update.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an existing big query export.

Args:
  name: string, Required. Name of the big query export to delete. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or projects/{project}/bigQueryExports/{export_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 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 big query export.

Args:
  name: string, Required. Name of the big query export to retrieve. Its format is organizations/{organization}/bigQueryExports/{export_id}, folders/{folder}/bigQueryExports/{export_id}, or projects/{project}/bigQueryExports/{export_id} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Configures how to deliver Findings to BigQuery Instance.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the big query export was created. This field is set by the server and will be ignored if provided on export on creation.
  &quot;dataset&quot;: &quot;A String&quot;, # The dataset to write findings&#x27; updates to. Its format is &quot;projects/[project_id]/datasets/[bigquery_dataset_id]&quot;. BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).
  &quot;description&quot;: &quot;A String&quot;, # The description of the export (max of 1024 characters).
  &quot;filter&quot;: &quot;A String&quot;, # Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. Please see the proto documentation in the finding (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/finding.proto) and in the ListFindingsRequest for valid filter syntax. (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/securitycenter_service.proto).
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the big query export. This field is set by the server and will be ignored if provided on export creation or update.
  &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: &quot;organizations/{organization_id}/bigQueryExports/{export_id}&quot; Example format: &quot;folders/{folder_id}/bigQueryExports/{export_id}&quot; Example format: &quot;projects/{project_id}/bigQueryExports/{export_id}&quot; This field is provided in responses, and is ignored when provided in create requests.
  &quot;principal&quot;: &quot;A String&quot;, # Output only. The service account that needs permission to create table, upload data to the big query dataset.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the big export was updated. This field is set by the server and will be ignored if provided on export creation or update.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists BigQuery exports. Note that when requesting BigQuery exports at a given level all exports under that level are also returned e.g. if requesting BigQuery exports under a folder, then all BigQuery exports immediately under the folder plus the ones created under the projects within the folder are returned.

Args:
  parent: string, Required. The parent, which owns the collection of BigQuery exports. Its format is &quot;organizations/[organization_id]&quot;, &quot;folders/[folder_id]&quot;, &quot;projects/[project_id]&quot;. (required)
  pageSize: integer, The maximum number of configs to return. The service may return fewer than this value. If unspecified, at most 10 configs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, A page token, received from a previous `ListBigQueryExports` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBigQueryExports` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for listing BigQuery exports.
  &quot;bigQueryExports&quot;: [ # The BigQuery exports from the specified parent.
    { # Configures how to deliver Findings to BigQuery Instance.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the big query export was created. This field is set by the server and will be ignored if provided on export on creation.
      &quot;dataset&quot;: &quot;A String&quot;, # The dataset to write findings&#x27; updates to. Its format is &quot;projects/[project_id]/datasets/[bigquery_dataset_id]&quot;. BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).
      &quot;description&quot;: &quot;A String&quot;, # The description of the export (max of 1024 characters).
      &quot;filter&quot;: &quot;A String&quot;, # Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. Please see the proto documentation in the finding (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/finding.proto) and in the ListFindingsRequest for valid filter syntax. (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/securitycenter_service.proto).
      &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the big query export. This field is set by the server and will be ignored if provided on export creation or update.
      &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: &quot;organizations/{organization_id}/bigQueryExports/{export_id}&quot; Example format: &quot;folders/{folder_id}/bigQueryExports/{export_id}&quot; Example format: &quot;projects/{project_id}/bigQueryExports/{export_id}&quot; This field is provided in responses, and is ignored when provided in create requests.
      &quot;principal&quot;: &quot;A String&quot;, # Output only. The service account that needs permission to create table, upload data to the big query dataset.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the big export was updated. This field is set by the server and will be ignored if provided on export creation or update.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
}</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 BigQuery export.

Args:
  name: string, The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: &quot;organizations/{organization_id}/bigQueryExports/{export_id}&quot; Example format: &quot;folders/{folder_id}/bigQueryExports/{export_id}&quot; Example format: &quot;projects/{project_id}/bigQueryExports/{export_id}&quot; This field is provided in responses, and is ignored when provided in create requests. (required)
  body: object, The request body.
    The object takes the form of:

{ # Configures how to deliver Findings to BigQuery Instance.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the big query export was created. This field is set by the server and will be ignored if provided on export on creation.
  &quot;dataset&quot;: &quot;A String&quot;, # The dataset to write findings&#x27; updates to. Its format is &quot;projects/[project_id]/datasets/[bigquery_dataset_id]&quot;. BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).
  &quot;description&quot;: &quot;A String&quot;, # The description of the export (max of 1024 characters).
  &quot;filter&quot;: &quot;A String&quot;, # Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. Please see the proto documentation in the finding (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/finding.proto) and in the ListFindingsRequest for valid filter syntax. (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/securitycenter_service.proto).
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the big query export. This field is set by the server and will be ignored if provided on export creation or update.
  &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: &quot;organizations/{organization_id}/bigQueryExports/{export_id}&quot; Example format: &quot;folders/{folder_id}/bigQueryExports/{export_id}&quot; Example format: &quot;projects/{project_id}/bigQueryExports/{export_id}&quot; This field is provided in responses, and is ignored when provided in create requests.
  &quot;principal&quot;: &quot;A String&quot;, # Output only. The service account that needs permission to create table, upload data to the big query dataset.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the big export was updated. This field is set by the server and will be ignored if provided on export creation or update.
}

  updateMask: string, The list of fields to be updated. If empty all mutable fields will be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Configures how to deliver Findings to BigQuery Instance.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the big query export was created. This field is set by the server and will be ignored if provided on export on creation.
  &quot;dataset&quot;: &quot;A String&quot;, # The dataset to write findings&#x27; updates to. Its format is &quot;projects/[project_id]/datasets/[bigquery_dataset_id]&quot;. BigQuery Dataset unique ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).
  &quot;description&quot;: &quot;A String&quot;, # The description of the export (max of 1024 characters).
  &quot;filter&quot;: &quot;A String&quot;, # Expression that defines the filter to apply across create/update events of findings. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. The fields map to those defined in the corresponding resource. The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. Please see the proto documentation in the finding (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/finding.proto) and in the ListFindingsRequest for valid filter syntax. (https://source.corp.google.com/piper///depot/google3/google/cloud/securitycenter/v1/securitycenter_service.proto).
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the big query export. This field is set by the server and will be ignored if provided on export creation or update.
  &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this export. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name. Example format: &quot;organizations/{organization_id}/bigQueryExports/{export_id}&quot; Example format: &quot;folders/{folder_id}/bigQueryExports/{export_id}&quot; Example format: &quot;projects/{project_id}/bigQueryExports/{export_id}&quot; This field is provided in responses, and is ignored when provided in create requests.
  &quot;principal&quot;: &quot;A String&quot;, # Output only. The service account that needs permission to create table, upload data to the big query dataset.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the big export was updated. This field is set by the server and will be ignored if provided on export creation or update.
}</pre>
</div>

</body></html>