<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="logging_v2.html">Cloud Logging API</a> . <a href="logging_v2.projects.html">projects</a> . <a href="logging_v2.projects.sinks.html">sinks</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, body=None, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.</p>
<p class="toc_element">
  <code><a href="#delete">delete(sinkName, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.</p>
<p class="toc_element">
  <code><a href="#get">get(sinkName, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a sink.</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 sinks.</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(sinkName, body=None, uniqueWriterIdentity=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter.The updated sink might also have a new writer_identity; see the unique_writer_identity field.</p>
<p class="toc_element">
  <code><a href="#update">update(sinkName, body=None, uniqueWriterIdentity=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter.The updated sink might also have a new writer_identity; see the unique_writer_identity field.</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, uniqueWriterIdentity=None, x__xgafv=None)</code>
  <pre>Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the sink&#x27;s writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.

Args:
  parent: string, Required. The resource in which to create the sink: &quot;projects/[PROJECT_ID]&quot; &quot;organizations/[ORGANIZATION_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]&quot; &quot;folders/[FOLDER_ID]&quot; Examples: &quot;projects/my-logging-project&quot;, &quot;organizations/123456789&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
  &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
    &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
    &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
  &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
  &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
  &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
    { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
      &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
    },
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
  &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
  &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
  &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
  &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
}

  uniqueWriterIdentity: boolean, Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink&#x27;s parent is a project, then the value returned as writer_identity is the same group or service account used by Logging before the addition of writer identities to this API. The sink&#x27;s destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
  &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
    &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
    &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
  &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
  &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
  &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
    { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
      &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
    },
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
  &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
  &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
  &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
  &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(sinkName, x__xgafv=None)</code>
  <pre>Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.

Args:
  sinkName: string, Required. The full resource name of the sink to delete, including the parent resource and the sink identifier: &quot;projects/[PROJECT_ID]/sinks/[SINK_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]&quot; &quot;folders/[FOLDER_ID]/sinks/[SINK_ID]&quot; Example: &quot;projects/my-project-id/sinks/my-sink-id&quot;. (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(sinkName, x__xgafv=None)</code>
  <pre>Gets a sink.

Args:
  sinkName: string, Required. The resource name of the sink: &quot;projects/[PROJECT_ID]/sinks/[SINK_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]&quot; &quot;folders/[FOLDER_ID]/sinks/[SINK_ID]&quot; Example: &quot;projects/my-project-id/sinks/my-sink-id&quot;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
  &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
    &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
    &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
  &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
  &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
  &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
    { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
      &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
    },
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
  &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
  &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
  &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
  &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists sinks.

Args:
  parent: string, Required. The parent resource whose sinks are to be listed: &quot;projects/[PROJECT_ID]&quot; &quot;organizations/[ORGANIZATION_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]&quot; &quot;folders/[FOLDER_ID]&quot;  (required)
  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Result returned from ListSinks.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.
  &quot;sinks&quot;: [ # A list of sinks.
    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
      &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
        &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
        &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
      &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
      &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
        { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
          &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
          &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
          &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
          &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
        },
      ],
      &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
      &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
      &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
      &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
    },
  ],
}</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(sinkName, body=None, uniqueWriterIdentity=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter.The updated sink might also have a new writer_identity; see the unique_writer_identity field.

Args:
  sinkName: string, Required. The full resource name of the sink to update, including the parent resource and the sink identifier: &quot;projects/[PROJECT_ID]/sinks/[SINK_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]&quot; &quot;folders/[FOLDER_ID]/sinks/[SINK_ID]&quot; Example: &quot;projects/my-project-id/sinks/my-sink-id&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
  &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
    &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
    &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
  &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
  &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
  &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
    { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
      &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
    },
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
  &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
  &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
  &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
  &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
}

  uniqueWriterIdentity: boolean, Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field: If the old and new values of this field are both false or both true, then there is no change to the sink&#x27;s writer_identity. If the old value is false and the new value is true, then writer_identity is changed to a unique service account. It is an error if the old value is true and the new value is set to false or defaulted to false.
  updateMask: string, Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes: destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMaskExample: updateMask=filter.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
  &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
    &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
    &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
  &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
  &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
  &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
    { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
      &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
    },
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
  &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
  &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
  &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
  &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(sinkName, body=None, uniqueWriterIdentity=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, and filter.The updated sink might also have a new writer_identity; see the unique_writer_identity field.

Args:
  sinkName: string, Required. The full resource name of the sink to update, including the parent resource and the sink identifier: &quot;projects/[PROJECT_ID]/sinks/[SINK_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]&quot; &quot;folders/[FOLDER_ID]/sinks/[SINK_ID]&quot; Example: &quot;projects/my-project-id/sinks/my-sink-id&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
  &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
    &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
    &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
  &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
  &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
  &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
    { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
      &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
    },
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
  &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
  &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
  &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
  &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
}

  uniqueWriterIdentity: boolean, Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field: If the old and new values of this field are both false or both true, then there is no change to the sink&#x27;s writer_identity. If the old value is false and the new value is true, then writer_identity is changed to a unique service account. It is an error if the old value is true and the new value is set to false or defaulted to false.
  updateMask: string, Optional. Field mask that specifies the fields in sink that need an update. A sink field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.An empty updateMask is temporarily treated as using the following mask for backwards compatibility purposes: destination,filter,includeChildren At some point in the future, behavior will be removed and specifying an empty updateMask will be an error.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMaskExample: updateMask=filter.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, a Cloud Pub/Sub topic or a Cloud Logging Bucket. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.
  &quot;bigqueryOptions&quot;: { # Options that change functionality of a sink exporting data to BigQuery. # Optional. Options that affect sinks exporting data to BigQuery.
    &quot;usePartitionedTables&quot;: True or False, # Optional. Whether to use BigQuery&#x27;s partition tables (https://cloud.google.com/bigquery/docs/partitioned-tables). By default, Logging creates dated tables based on the log entries&#x27; timestamps, e.g. syslog_20170523. With partitioned tables the date suffix is no longer present and special query syntax (https://cloud.google.com/bigquery/docs/querying-partitioned-tables) has to be used instead. In both cases, tables are sharded based on UTC timezone.
    &quot;usesTimestampColumnPartitioning&quot;: True or False, # Output only. True if new timestamp column based partitioning is in use, false if legacy ingestion-time partitioning is in use. All new sinks will have this field set true and will use timestamp column based partitioning. If use_partitioned_tables is false, this value has no meaning and will be false. Legacy sinks using partitioned tables will have this field set to false.
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the sink.This field may not be present for older sinks.
  &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this sink. The maximum length of the description is 8000 characters.
  &quot;destination&quot;: &quot;A String&quot;, # Required. The export destination: &quot;storage.googleapis.com/[GCS_BUCKET]&quot; &quot;bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]&quot; &quot;pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]&quot; The sink&#x27;s writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs with Sinks (https://cloud.google.com/logging/docs/api/tasks/exporting-logs).
  &quot;disabled&quot;: True or False, # Optional. If set to True, then this sink is disabled and it does not export any log entries.
  &quot;exclusions&quot;: [ # Optional. Log entries that match any of the exclusion filters will not be exported. If a log entry is matched by both filter and one of exclusion_filters it will not be exported.
    { # Specifies a set of log entries that are not to be stored in Logging. If your GCP resource receives a large volume of logs, you can use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Note that organization-level and folder-level exclusions don&#x27;t apply to child resources, and that you can&#x27;t exclude audit log entries.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the exclusion.This field may not be present for older exclusions.
      &quot;description&quot;: &quot;A String&quot;, # Optional. A description of this exclusion.
      &quot;disabled&quot;: True or False, # Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can update an exclusion to change the value of this field.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries) that matches the log entries to be excluded. By using the sample function (https://cloud.google.com/logging/docs/view/advanced-queries#sample), you can exclude less than 100% of the matching log entries. For example, the following query matches 99% of low-severity log entries from Google Cloud Storage buckets:&quot;resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)&quot;
      &quot;name&quot;: &quot;A String&quot;, # Required. A client-assigned identifier, such as &quot;load-balancer-exclusion&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods. First character has to be alphanumeric.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the exclusion.This field may not be present for older exclusions.
    },
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Optional. An advanced logs filter (https://cloud.google.com/logging/docs/view/advanced-queries). The only exported log entries are those that are in the resource owning the sink and that match the filter. For example: logName=&quot;projects/[PROJECT_ID]/logs/[LOG_ID]&quot; AND severity&gt;=ERROR
  &quot;includeChildren&quot;: True or False, # Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink&#x27;s parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink&#x27;s parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink&#x27;s filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink&#x27;s parent. To only export entries from certain child projects, filter on the project part of the log name: logName:(&quot;projects/test-project1/&quot; OR &quot;projects/test-project2/&quot;) AND resource.type=gce_instance
  &quot;name&quot;: &quot;A String&quot;, # Required. The client-assigned sink identifier, unique within the project. Example: &quot;my-syslog-errors-to-pubsub&quot;. Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods. First character has to be alphanumeric.
  &quot;outputVersionFormat&quot;: &quot;A String&quot;, # Deprecated. This field is unused.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the sink.This field may not be present for older sinks.
  &quot;writerIdentity&quot;: &quot;A String&quot;, # Output only. An IAM identity—a service account or group—under which Logging writes the exported log entries to the sink&#x27;s destination. This field is set by sinks.create and sinks.update based on the value of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting Access for a Resource (https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). Consult the destination service&#x27;s documentation to determine the appropriate IAM roles to assign to the identity.
}</pre>
</div>

</body></html>