<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.locations.html">locations</a> . <a href="logging_v2.locations.buckets.html">buckets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="logging_v2.locations.buckets.views.html">views()</a></code>
</p>
<p class="firstline">Returns the views Resource.</p>

<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, bucketId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a bucket that can be used to store log entries. Once a bucket has been created, the region cannot be changed.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a bucket. Moves the bucket to the DELETE_REQUESTED state. After 7 days, the bucket will be purged and all logs in the bucket will be permanently deleted.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a bucket.</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 buckets.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a bucket. This method replaces the following fields in the existing bucket with values from the new bucket: retention_periodIf the retention period is decreased and the bucket is locked, FAILED_PRECONDITION will be returned.If the bucket has a LifecycleState of DELETE_REQUESTED, FAILED_PRECONDITION will be returned.A buckets region may not be modified after it is created.</p>
<p class="toc_element">
  <code><a href="#undelete">undelete(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Undeletes a bucket. A bucket that has been deleted may be undeleted within the grace period of 7 days.</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, bucketId=None, x__xgafv=None)</code>
  <pre>Creates a bucket that can be used to store log entries. Once a bucket has been created, the region cannot be changed.

Args:
  parent: string, Required. The resource in which to create the bucket: &quot;projects/[PROJECT_ID]/locations/[LOCATION_ID]&quot; Example: &quot;projects/my-logging-project/locations/global&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # Describes a repository of logs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the bucket. This is not set for any of the default buckets.
  &quot;description&quot;: &quot;A String&quot;, # Describes this bucket.
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The bucket lifecycle state.
  &quot;locked&quot;: True or False, # Whether the bucket has been locked. The retention period on a locked bucket may not be changed. Locked buckets may only be deleted if they are empty.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the bucket. For example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot; The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.For the location of global it is unspecified where logs are actually stored. Once a bucket has been created, the location can not be changed.
  &quot;restrictedFields&quot;: [ # Log entry field paths that are denied access in this bucket. The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation. Restricting a repeated field will restrict all values. Adding a parent will block all child fields e.g. foo.bar will block foo.bar.baz.
    &quot;A String&quot;,
  ],
  &quot;retentionDays&quot;: 42, # Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the bucket.
}

  bucketId: string, Required. A client-assigned identifier such as &quot;my-bucket&quot;. Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes a repository of logs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the bucket. This is not set for any of the default buckets.
  &quot;description&quot;: &quot;A String&quot;, # Describes this bucket.
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The bucket lifecycle state.
  &quot;locked&quot;: True or False, # Whether the bucket has been locked. The retention period on a locked bucket may not be changed. Locked buckets may only be deleted if they are empty.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the bucket. For example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot; The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.For the location of global it is unspecified where logs are actually stored. Once a bucket has been created, the location can not be changed.
  &quot;restrictedFields&quot;: [ # Log entry field paths that are denied access in this bucket. The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation. Restricting a repeated field will restrict all values. Adding a parent will block all child fields e.g. foo.bar will block foo.bar.baz.
    &quot;A String&quot;,
  ],
  &quot;retentionDays&quot;: 42, # Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the bucket.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a bucket. Moves the bucket to the DELETE_REQUESTED state. After 7 days, the bucket will be purged and all logs in the bucket will be permanently deleted.

Args:
  name: string, Required. The full resource name of the bucket to delete. &quot;projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; Example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-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(name, x__xgafv=None)</code>
  <pre>Gets a bucket.

Args:
  name: string, Required. The resource name of the bucket: &quot;projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; Example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-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 repository of logs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the bucket. This is not set for any of the default buckets.
  &quot;description&quot;: &quot;A String&quot;, # Describes this bucket.
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The bucket lifecycle state.
  &quot;locked&quot;: True or False, # Whether the bucket has been locked. The retention period on a locked bucket may not be changed. Locked buckets may only be deleted if they are empty.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the bucket. For example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot; The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.For the location of global it is unspecified where logs are actually stored. Once a bucket has been created, the location can not be changed.
  &quot;restrictedFields&quot;: [ # Log entry field paths that are denied access in this bucket. The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation. Restricting a repeated field will restrict all values. Adding a parent will block all child fields e.g. foo.bar will block foo.bar.baz.
    &quot;A String&quot;,
  ],
  &quot;retentionDays&quot;: 42, # Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the bucket.
}</pre>
</div>

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

Args:
  parent: string, Required. The parent resource whose buckets are to be listed: &quot;projects/[PROJECT_ID]/locations/[LOCATION_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]&quot; &quot;folders/[FOLDER_ID]/locations/[LOCATION_ID]&quot; Note: The locations portion of the resource must be specified, but supplying the character - in place of LOCATION_ID will return all buckets. (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:

    { # The response from ListBuckets.
  &quot;buckets&quot;: [ # A list of buckets.
    { # Describes a repository of logs.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the bucket. This is not set for any of the default buckets.
      &quot;description&quot;: &quot;A String&quot;, # Describes this bucket.
      &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The bucket lifecycle state.
      &quot;locked&quot;: True or False, # Whether the bucket has been locked. The retention period on a locked bucket may not be changed. Locked buckets may only be deleted if they are empty.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the bucket. For example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot; The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.For the location of global it is unspecified where logs are actually stored. Once a bucket has been created, the location can not be changed.
      &quot;restrictedFields&quot;: [ # Log entry field paths that are denied access in this bucket. The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation. Restricting a repeated field will restrict all values. Adding a parent will block all child fields e.g. foo.bar will block foo.bar.baz.
        &quot;A String&quot;,
      ],
      &quot;retentionDays&quot;: 42, # Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the bucket.
    },
  ],
  &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.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a bucket. This method replaces the following fields in the existing bucket with values from the new bucket: retention_periodIf the retention period is decreased and the bucket is locked, FAILED_PRECONDITION will be returned.If the bucket has a LifecycleState of DELETE_REQUESTED, FAILED_PRECONDITION will be returned.A buckets region may not be modified after it is created.

Args:
  name: string, Required. The full resource name of the bucket to update. &quot;projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; Example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot;. Also requires permission &quot;resourcemanager.projects.updateLiens&quot; to set the locked property (required)
  body: object, The request body.
    The object takes the form of:

{ # Describes a repository of logs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the bucket. This is not set for any of the default buckets.
  &quot;description&quot;: &quot;A String&quot;, # Describes this bucket.
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The bucket lifecycle state.
  &quot;locked&quot;: True or False, # Whether the bucket has been locked. The retention period on a locked bucket may not be changed. Locked buckets may only be deleted if they are empty.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the bucket. For example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot; The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.For the location of global it is unspecified where logs are actually stored. Once a bucket has been created, the location can not be changed.
  &quot;restrictedFields&quot;: [ # Log entry field paths that are denied access in this bucket. The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation. Restricting a repeated field will restrict all values. Adding a parent will block all child fields e.g. foo.bar will block foo.bar.baz.
    &quot;A String&quot;,
  ],
  &quot;retentionDays&quot;: 42, # Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the bucket.
}

  updateMask: string, Required. Field mask that specifies the fields in bucket that need an update. A bucket field will be overwritten if, and only if, it is in the update mask. name and output only fields cannot be updated.For a detailed FieldMask definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMaskExample: updateMask=retention_days.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes a repository of logs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of the bucket. This is not set for any of the default buckets.
  &quot;description&quot;: &quot;A String&quot;, # Describes this bucket.
  &quot;lifecycleState&quot;: &quot;A String&quot;, # Output only. The bucket lifecycle state.
  &quot;locked&quot;: True or False, # Whether the bucket has been locked. The retention period on a locked bucket may not be changed. Locked buckets may only be deleted if they are empty.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the bucket. For example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot; The supported locations are: global, us-central1, us-east1, us-west1, asia-east1, europe-west1.For the location of global it is unspecified where logs are actually stored. Once a bucket has been created, the location can not be changed.
  &quot;restrictedFields&quot;: [ # Log entry field paths that are denied access in this bucket. The following fields and their children are eligible: textPayload, jsonPayload, protoPayload, httpRequest, labels, sourceLocation. Restricting a repeated field will restrict all values. Adding a parent will block all child fields e.g. foo.bar will block foo.bar.baz.
    &quot;A String&quot;,
  ],
  &quot;retentionDays&quot;: 42, # Logs will be retained by default for this amount of time, after which they will automatically be deleted. The minimum retention period is 1 day. If this value is set to zero at bucket creation time, the default time of 30 days will be used.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the bucket.
}</pre>
</div>

<div class="method">
    <code class="details" id="undelete">undelete(name, body=None, x__xgafv=None)</code>
  <pre>Undeletes a bucket. A bucket that has been deleted may be undeleted within the grace period of 7 days.

Args:
  name: string, Required. The full resource name of the bucket to undelete. &quot;projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; &quot;folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]&quot; Example: &quot;projects/my-project-id/locations/my-location/buckets/my-bucket-id&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # The parameters to UndeleteBucket.
}

  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>

</body></html>