<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.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="#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; For examples:&quot;projects/my-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 Pub/Sub topic or a Cloud Logging log 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, Cloud 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 these 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 filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don&#x27;t apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.
      &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:resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)
      &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 log entries 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.For 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 Cloud 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.Sinks that have a destination that is a log bucket in the same project as the sink do not have a writer_identity and no additional permissions are required.
}

  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 Cloud 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 Pub/Sub topic or a Cloud Logging log 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, Cloud 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 these 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 filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don&#x27;t apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.
      &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:resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)
      &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 log entries 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.For 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 Cloud 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.Sinks that have a destination that is a log bucket in the same project as the sink do not have a writer_identity and no additional permissions are required.
}</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; For example:&quot;projects/my-project/sinks/my-sink&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; For example:&quot;projects/my-project/sinks/my-sink&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 Pub/Sub topic or a Cloud Logging log 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, Cloud 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 these 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 filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don&#x27;t apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.
      &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:resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)
      &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 log entries 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.For 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 Cloud 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.Sinks that have a destination that is a log bucket in the same project as the sink do not have a writer_identity and no additional permissions are required.
}</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 Pub/Sub topic or a Cloud Logging log 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, Cloud 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 these 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 filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don&#x27;t apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.
          &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:resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)
          &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 log entries 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.For 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 Cloud 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.Sinks that have a destination that is a log bucket in the same project as the sink do not have a writer_identity and no additional permissions are required.
    },
  ],
}</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="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; For example:&quot;projects/my-project/sinks/my-sink&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 Pub/Sub topic or a Cloud Logging log 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, Cloud 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 these 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 filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don&#x27;t apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.
      &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:resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)
      &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 log entries 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.For 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 Cloud 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.Sinks that have a destination that is a log bucket in the same project as the sink do not have a writer_identity and no additional permissions are required.
}

  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,includeChildrenAt 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.FieldMaskFor example: 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 Pub/Sub topic or a Cloud Logging log 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, Cloud 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 these 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 filtered out by a sink. If your Google Cloud resource receives a large volume of log entries, you can use exclusions to reduce your chargeable logs. Note that exclusions on organization-level and folder-level sinks don&#x27;t apply to child resources. Note also that you cannot modify the _Required sink or exclude logs from it.
      &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:resource.type=gcs_bucket severity&lt;ERROR sample(insertId, 0.99)
      &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 log entries 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.For 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 Cloud 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.Sinks that have a destination that is a log bucket in the same project as the sink do not have a writer_identity and no additional permissions are required.
}</pre>
</div>

</body></html>