<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.
  &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.
  &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); }
}</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.
  &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.
      &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.
  &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.
  &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>