<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.billingAccounts.html">billingAccounts</a> . <a href="logging_v2.billingAccounts.locations.html">locations</a> . <a href="logging_v2.billingAccounts.locations.buckets.html">buckets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="logging_v2.billingAccounts.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="#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 The supported locations are: &quot;global&quot;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;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 The supported locations are: &quot;global&quot;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;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="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 The supported locations are: &quot;global&quot;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;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 The supported locations are: &quot;global&quot;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;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 The supported locations are: &quot;global&quot;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;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>