<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="storage_v1.html">Cloud Storage JSON API</a> . <a href="storage_v1.buckets.html">buckets</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="#delete">delete(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Permanently deletes an empty bucket.</p>
<p class="toc_element">
  <code><a href="#get">get(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, projection=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Returns metadata for the specified bucket.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(bucket, optionsRequestedPolicyVersion=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Returns an IAM policy for the specified bucket.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, body=None, predefinedAcl=None, predefinedDefaultObjectAcl=None, projection=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Creates a new bucket.</p>
<p class="toc_element">
  <code><a href="#list">list(project, maxResults=None, pageToken=None, prefix=None, projection=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Retrieves a list of buckets for a given project.</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="#lockRetentionPolicy">lockRetentionPolicy(bucket, ifMetagenerationMatch, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Locks retention policy on a bucket.</p>
<p class="toc_element">
  <code><a href="#patch">patch(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, predefinedAcl=None, predefinedDefaultObjectAcl=None, projection=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Patches a bucket. Changes to the bucket will be readable immediately after writing, but configuration changes may take time to propagate.</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(bucket, body=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Updates an IAM policy for the specified bucket.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(bucket, permissions, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Tests a set of permissions on the given bucket to see which, if any, are held by the caller.</p>
<p class="toc_element">
  <code><a href="#update">update(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, predefinedAcl=None, predefinedDefaultObjectAcl=None, projection=None, provisionalUserProject=None, userProject=None)</a></code></p>
<p class="firstline">Updates a bucket. Changes to the bucket will be readable immediately after writing, but configuration changes may take time to propagate.</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="delete">delete(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Permanently deletes an empty bucket.

Args:
  bucket: string, Name of a bucket. (required)
  ifMetagenerationMatch: string, If set, only deletes the bucket if its metageneration matches this value.
  ifMetagenerationNotMatch: string, If set, only deletes the bucket if its metageneration does not match this value.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, projection=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Returns metadata for the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket&#x27;s current metageneration matches the given value.
  ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket&#x27;s current metageneration does not match the given value.
  projection: string, Set of properties to return. Defaults to noAcl.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.

Returns:
  An object of the form:

    { # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(bucket, optionsRequestedPolicyVersion=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Returns an IAM policy for the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  optionsRequestedPolicyVersion: integer, The IAM policy format version to be returned. If the optionsRequestedPolicyVersion is for an older version that doesn&#x27;t support part of the requested IAM policy, the request fails.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.

Returns:
  An object of the form:

    { # A bucket/object IAM policy.
  &quot;bindings&quot;: [ # An association between a role, which comes with a set of permissions, and members who may assume that role.
    {
      &quot;condition&quot;: { # Represents an expression text. Example: title: &quot;User account presence&quot; description: &quot;Determines whether the request has a user account&quot; expression: &quot;size(request.user) &gt; 0&quot; # The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently.
        &quot;description&quot;: &quot;A String&quot;, # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.
        &quot;location&quot;: &quot;A String&quot;, # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # An optional title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:
          # - allUsers — A special identifier that represents anyone on the internet; with or without a Google account.
          # - allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.
          # - user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.
          # - serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .
          # - group:emailid — An email address that represents a Google group. For example, group:admins@example.com.
          # - domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.
          # - projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project
          # - projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project
          # - projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.
          # The new IAM roles are:
          # - roles/storage.admin — Full control of Google Cloud Storage resources.
          # - roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.
          # - roles/storage.objectCreator — Access to create objects in Google Cloud Storage.
          # - roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:
          # - roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.
          # - roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.
          # - roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.
          # - roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.
          # - roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1  Entity tag for the policy.
  &quot;kind&quot;: &quot;storage#policy&quot;, # The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.
  &quot;resourceId&quot;: &quot;A String&quot;, # The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, and projects/_/buckets/bucket/objects/object for objects. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input.
  &quot;version&quot;: 42, # The IAM policy format version.
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, body=None, predefinedAcl=None, predefinedDefaultObjectAcl=None, projection=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Creates a new bucket.

Args:
  project: string, A valid API project identifier. (required)
  body: object, The request body.
    The object takes the form of:

{ # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}

  predefinedAcl: string, Apply a predefined set of access controls to this bucket.
    Allowed values
      authenticatedRead - Project team owners get OWNER access, and allAuthenticatedUsers get READER access.
      private - Project team owners get OWNER access.
      projectPrivate - Project team members get access according to their roles.
      publicRead - Project team owners get OWNER access, and allUsers get READER access.
      publicReadWrite - Project team owners get OWNER access, and allUsers get WRITER access.
  predefinedDefaultObjectAcl: string, Apply a predefined set of default object access controls to this bucket.
    Allowed values
      authenticatedRead - Object owner gets OWNER access, and allAuthenticatedUsers get READER access.
      bucketOwnerFullControl - Object owner gets OWNER access, and project team owners get OWNER access.
      bucketOwnerRead - Object owner gets OWNER access, and project team owners get READER access.
      private - Object owner gets OWNER access.
      projectPrivate - Object owner gets OWNER access, and project team members get access according to their roles.
      publicRead - Object owner gets OWNER access, and allUsers get READER access.
  projection: string, Set of properties to return. Defaults to noAcl, unless the bucket resource specifies acl or defaultObjectAcl properties, when it defaults to full.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request.

Returns:
  An object of the form:

    { # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, maxResults=None, pageToken=None, prefix=None, projection=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Retrieves a list of buckets for a given project.

Args:
  project: string, A valid API project identifier. (required)
  maxResults: integer, Maximum number of buckets to return in a single response. The service will use this parameter or 1,000 items, whichever is smaller.
  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
  prefix: string, Filter results to buckets whose names begin with this prefix.
  projection: string, Set of properties to return. Defaults to noAcl.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request.

Returns:
  An object of the form:

    { # A list of buckets.
  &quot;items&quot;: [ # The list of items.
    { # A bucket.
      &quot;acl&quot;: [ # Access controls on the bucket.
        { # An access-control entry.
          &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
          &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
          &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
          &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
              # - user-userId
              # - user-email
              # - group-groupId
              # - group-email
              # - domain-domain
              # - project-team-projectId
              # - allUsers
              # - allAuthenticatedUsers Examples:
              # - The user liz@example.com would be user-liz@example.com.
              # - The group example@googlegroups.com would be group-example@googlegroups.com.
              # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
          &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
          &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
          &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
          &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
            &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
            &quot;team&quot;: &quot;A String&quot;, # The team.
          },
          &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
          &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
        },
      ],
      &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
        &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
        &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
      },
      &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
        &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
      },
      &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
        {
          &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
          &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
            &quot;A String&quot;,
          ],
          &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
            &quot;A String&quot;,
          ],
          &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
        &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
          &quot;A String&quot;,
        ],
      },
      &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
      &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
        { # An access-control entry.
          &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
          &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
          &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
          &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
              # - user-userId
              # - user-email
              # - group-groupId
              # - group-email
              # - domain-domain
              # - project-team-projectId
              # - allUsers
              # - allAuthenticatedUsers Examples:
              # - The user liz@example.com would be user-liz@example.com.
              # - The group example@googlegroups.com would be group-example@googlegroups.com.
              # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
          &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
          &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
          &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
          &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
          &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
          &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
            &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
            &quot;team&quot;: &quot;A String&quot;, # The team.
          },
          &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
          &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
        },
      ],
      &quot;encryption&quot;: { # Encryption configuration for a bucket.
        &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
      },
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
      &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
        &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
          &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
          &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
        },
        &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
        &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
          &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
          &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
        },
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
      &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
      &quot;labels&quot;: { # User-provided labels, in key/value pairs.
        &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
      },
      &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
        &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
          {
            &quot;action&quot;: { # The action to take.
              &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
              &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
            },
            &quot;condition&quot;: { # The condition(s) under which the action will be taken.
              &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
              &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
              &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
              &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
              &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
              &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
              &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
              &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
                &quot;A String&quot;,
              ],
              &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
              &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
            },
          },
        ],
      },
      &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
      &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
      &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
        &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
        &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
      },
      &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
      &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
        &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
        &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
      },
      &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
      &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
        &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
        &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
        &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
      },
      &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
      &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
      &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
      &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
      &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
      &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
        &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
      },
      &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
        &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
        &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
      },
    },
  ],
  &quot;kind&quot;: &quot;storage#buckets&quot;, # The kind of item this is. For lists of buckets, this is always storage#buckets.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
}</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="lockRetentionPolicy">lockRetentionPolicy(bucket, ifMetagenerationMatch, provisionalUserProject=None, userProject=None)</code>
  <pre>Locks retention policy on a bucket.

Args:
  bucket: string, Name of a bucket. (required)
  ifMetagenerationMatch: string, Makes the operation conditional on whether bucket&#x27;s current metageneration matches the given value. (required)
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.

Returns:
  An object of the form:

    { # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, predefinedAcl=None, predefinedDefaultObjectAcl=None, projection=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Patches a bucket. Changes to the bucket will be readable immediately after writing, but configuration changes may take time to propagate.

Args:
  bucket: string, Name of a bucket. (required)
  body: object, The request body.
    The object takes the form of:

{ # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}

  ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket&#x27;s current metageneration matches the given value.
  ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket&#x27;s current metageneration does not match the given value.
  predefinedAcl: string, Apply a predefined set of access controls to this bucket.
    Allowed values
      authenticatedRead - Project team owners get OWNER access, and allAuthenticatedUsers get READER access.
      private - Project team owners get OWNER access.
      projectPrivate - Project team members get access according to their roles.
      publicRead - Project team owners get OWNER access, and allUsers get READER access.
      publicReadWrite - Project team owners get OWNER access, and allUsers get WRITER access.
  predefinedDefaultObjectAcl: string, Apply a predefined set of default object access controls to this bucket.
    Allowed values
      authenticatedRead - Object owner gets OWNER access, and allAuthenticatedUsers get READER access.
      bucketOwnerFullControl - Object owner gets OWNER access, and project team owners get OWNER access.
      bucketOwnerRead - Object owner gets OWNER access, and project team owners get READER access.
      private - Object owner gets OWNER access.
      projectPrivate - Object owner gets OWNER access, and project team members get access according to their roles.
      publicRead - Object owner gets OWNER access, and allUsers get READER access.
  projection: string, Set of properties to return. Defaults to full.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.

Returns:
  An object of the form:

    { # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="setIamPolicy">setIamPolicy(bucket, body=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Updates an IAM policy for the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  body: object, The request body.
    The object takes the form of:

{ # A bucket/object IAM policy.
  &quot;bindings&quot;: [ # An association between a role, which comes with a set of permissions, and members who may assume that role.
    {
      &quot;condition&quot;: { # Represents an expression text. Example: title: &quot;User account presence&quot; description: &quot;Determines whether the request has a user account&quot; expression: &quot;size(request.user) &gt; 0&quot; # The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently.
        &quot;description&quot;: &quot;A String&quot;, # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.
        &quot;location&quot;: &quot;A String&quot;, # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # An optional title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:
          # - allUsers — A special identifier that represents anyone on the internet; with or without a Google account.
          # - allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.
          # - user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.
          # - serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .
          # - group:emailid — An email address that represents a Google group. For example, group:admins@example.com.
          # - domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.
          # - projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project
          # - projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project
          # - projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.
          # The new IAM roles are:
          # - roles/storage.admin — Full control of Google Cloud Storage resources.
          # - roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.
          # - roles/storage.objectCreator — Access to create objects in Google Cloud Storage.
          # - roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:
          # - roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.
          # - roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.
          # - roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.
          # - roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.
          # - roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1  Entity tag for the policy.
  &quot;kind&quot;: &quot;storage#policy&quot;, # The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.
  &quot;resourceId&quot;: &quot;A String&quot;, # The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, and projects/_/buckets/bucket/objects/object for objects. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input.
  &quot;version&quot;: 42, # The IAM policy format version.
}

  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.

Returns:
  An object of the form:

    { # A bucket/object IAM policy.
  &quot;bindings&quot;: [ # An association between a role, which comes with a set of permissions, and members who may assume that role.
    {
      &quot;condition&quot;: { # Represents an expression text. Example: title: &quot;User account presence&quot; description: &quot;Determines whether the request has a user account&quot; expression: &quot;size(request.user) &gt; 0&quot; # The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently.
        &quot;description&quot;: &quot;A String&quot;, # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.
        &quot;location&quot;: &quot;A String&quot;, # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # An optional title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # A collection of identifiers for members who may assume the provided role. Recognized identifiers are as follows:
          # - allUsers — A special identifier that represents anyone on the internet; with or without a Google account.
          # - allAuthenticatedUsers — A special identifier that represents anyone who is authenticated with a Google account or a service account.
          # - user:emailid — An email address that represents a specific account. For example, user:alice@gmail.com or user:joe@example.com.
          # - serviceAccount:emailid — An email address that represents a service account. For example,  serviceAccount:my-other-app@appspot.gserviceaccount.com .
          # - group:emailid — An email address that represents a Google group. For example, group:admins@example.com.
          # - domain:domain — A Google Apps domain name that represents all the users of that domain. For example, domain:google.com or domain:example.com.
          # - projectOwner:projectid — Owners of the given project. For example, projectOwner:my-example-project
          # - projectEditor:projectid — Editors of the given project. For example, projectEditor:my-example-project
          # - projectViewer:projectid — Viewers of the given project. For example, projectViewer:my-example-project
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # The role to which members belong. Two types of roles are supported: new IAM roles, which grant permissions that do not map directly to those provided by ACLs, and legacy IAM roles, which do map directly to ACL permissions. All roles are of the format roles/storage.specificRole.
          # The new IAM roles are:
          # - roles/storage.admin — Full control of Google Cloud Storage resources.
          # - roles/storage.objectViewer — Read-Only access to Google Cloud Storage objects.
          # - roles/storage.objectCreator — Access to create objects in Google Cloud Storage.
          # - roles/storage.objectAdmin — Full control of Google Cloud Storage objects.   The legacy IAM roles are:
          # - roles/storage.legacyObjectReader — Read-only access to objects without listing. Equivalent to an ACL entry on an object with the READER role.
          # - roles/storage.legacyObjectOwner — Read/write access to existing objects without listing. Equivalent to an ACL entry on an object with the OWNER role.
          # - roles/storage.legacyBucketReader — Read access to buckets with object listing. Equivalent to an ACL entry on a bucket with the READER role.
          # - roles/storage.legacyBucketWriter — Read access to buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the WRITER role.
          # - roles/storage.legacyBucketOwner — Read and write access to existing buckets with object listing/creation/deletion. Equivalent to an ACL entry on a bucket with the OWNER role.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1  Entity tag for the policy.
  &quot;kind&quot;: &quot;storage#policy&quot;, # The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.
  &quot;resourceId&quot;: &quot;A String&quot;, # The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, and projects/_/buckets/bucket/objects/object for objects. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input.
  &quot;version&quot;: 42, # The IAM policy format version.
}</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(bucket, permissions, provisionalUserProject=None, userProject=None)</code>
  <pre>Tests a set of permissions on the given bucket to see which, if any, are held by the caller.

Args:
  bucket: string, Name of a bucket. (required)
  permissions: string, Permissions to test. (required) (repeated)
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.

Returns:
  An object of the form:

    { # A storage.(buckets|objects).testIamPermissions response.
  &quot;kind&quot;: &quot;storage#testIamPermissionsResponse&quot;, # The kind of item this is.
  &quot;permissions&quot;: [ # The permissions held by the caller. Permissions are always of the format storage.resource.capability, where resource is one of buckets or objects. The supported permissions are as follows:
      # - storage.buckets.delete — Delete bucket.
      # - storage.buckets.get — Read bucket metadata.
      # - storage.buckets.getIamPolicy — Read bucket IAM policy.
      # - storage.buckets.create — Create bucket.
      # - storage.buckets.list — List buckets.
      # - storage.buckets.setIamPolicy — Update bucket IAM policy.
      # - storage.buckets.update — Update bucket metadata.
      # - storage.objects.delete — Delete object.
      # - storage.objects.get — Read object data and metadata.
      # - storage.objects.getIamPolicy — Read object IAM policy.
      # - storage.objects.create — Create object.
      # - storage.objects.list — List objects.
      # - storage.objects.setIamPolicy — Update object IAM policy.
      # - storage.objects.update — Update object metadata.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, predefinedAcl=None, predefinedDefaultObjectAcl=None, projection=None, provisionalUserProject=None, userProject=None)</code>
  <pre>Updates a bucket. Changes to the bucket will be readable immediately after writing, but configuration changes may take time to propagate.

Args:
  bucket: string, Name of a bucket. (required)
  body: object, The request body.
    The object takes the form of:

{ # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}

  ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket&#x27;s current metageneration matches the given value.
  ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket&#x27;s current metageneration does not match the given value.
  predefinedAcl: string, Apply a predefined set of access controls to this bucket.
    Allowed values
      authenticatedRead - Project team owners get OWNER access, and allAuthenticatedUsers get READER access.
      private - Project team owners get OWNER access.
      projectPrivate - Project team members get access according to their roles.
      publicRead - Project team owners get OWNER access, and allUsers get READER access.
      publicReadWrite - Project team owners get OWNER access, and allUsers get WRITER access.
  predefinedDefaultObjectAcl: string, Apply a predefined set of default object access controls to this bucket.
    Allowed values
      authenticatedRead - Object owner gets OWNER access, and allAuthenticatedUsers get READER access.
      bucketOwnerFullControl - Object owner gets OWNER access, and project team owners get OWNER access.
      bucketOwnerRead - Object owner gets OWNER access, and project team owners get READER access.
      private - Object owner gets OWNER access.
      projectPrivate - Object owner gets OWNER access, and project team members get access according to their roles.
      publicRead - Object owner gets OWNER access, and allUsers get READER access.
  projection: string, Set of properties to return. Defaults to full.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.

Returns:
  An object of the form:

    { # A bucket.
  &quot;acl&quot;: [ # Access controls on the bucket.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#bucketAccessControl&quot;, # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;autoclass&quot;: { # The bucket&#x27;s Autoclass configuration.
    &quot;enabled&quot;: True or False, # Whether or not Autoclass is enabled on this bucket
    &quot;toggleTime&quot;: &quot;A String&quot;, # A date and time in RFC 3339 format representing the instant at which &quot;enabled&quot; was last toggled.
  },
  &quot;billing&quot;: { # The bucket&#x27;s billing configuration.
    &quot;requesterPays&quot;: True or False, # When set to true, Requester Pays is enabled for this bucket.
  },
  &quot;cors&quot;: [ # The bucket&#x27;s Cross-Origin Resource Sharing (CORS) configuration.
    {
      &quot;maxAgeSeconds&quot;: 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      &quot;method&quot;: [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: &quot;*&quot; is permitted in the list of methods, and means &quot;any method&quot;.
        &quot;A String&quot;,
      ],
      &quot;origin&quot;: [ # The list of Origins eligible to receive CORS response headers. Note: &quot;*&quot; is permitted in the list of origins, and means &quot;any Origin&quot;.
        &quot;A String&quot;,
      ],
      &quot;responseHeader&quot;: [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;customPlacementConfig&quot;: { # The bucket&#x27;s custom placement configuration for Custom Dual Regions.
    &quot;dataLocations&quot;: [ # The list of regional locations in which data is placed.
      &quot;A String&quot;,
    ],
  },
  &quot;defaultEventBasedHold&quot;: True or False, # The default value for event-based hold on newly created objects in this bucket. Event-based hold is a way to retain objects indefinitely until an event occurs, signified by the hold&#x27;s release. After being released, such objects will be subject to bucket-level retention (if any). One sample use case of this flag is for banks to hold loan documents for at least 3 years after loan is paid in full. Here, bucket-level retention is 3 years and the event is loan being paid in full. In this example, these objects will be held intact for any number of years until the event has occurred (event-based hold on the object is released) and then 3 more years after that. That means retention duration of the objects begins from the moment event-based hold transitioned from true to false. Objects under event-based hold cannot be deleted, overwritten or archived until the hold is removed.
  &quot;defaultObjectAcl&quot;: [ # Default access controls to apply to new objects when no ACL is provided.
    { # An access-control entry.
      &quot;bucket&quot;: &quot;A String&quot;, # The name of the bucket.
      &quot;domain&quot;: &quot;A String&quot;, # The domain associated with the entity, if any.
      &quot;email&quot;: &quot;A String&quot;, # The email address associated with the entity, if any.
      &quot;entity&quot;: &quot;A String&quot;, # The entity holding the permission, in one of the following forms:
          # - user-userId
          # - user-email
          # - group-groupId
          # - group-email
          # - domain-domain
          # - project-team-projectId
          # - allUsers
          # - allAuthenticatedUsers Examples:
          # - The user liz@example.com would be user-liz@example.com.
          # - The group example@googlegroups.com would be group-example@googlegroups.com.
          # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity, if any.
      &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the access-control entry.
      &quot;generation&quot;: &quot;A String&quot;, # The content generation of the object, if applied to an object.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the access-control entry.
      &quot;kind&quot;: &quot;storage#objectAccessControl&quot;, # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
      &quot;object&quot;: &quot;A String&quot;, # The name of the object, if applied to an object.
      &quot;projectTeam&quot;: { # The project team associated with the entity, if any.
        &quot;projectNumber&quot;: &quot;A String&quot;, # The project number.
        &quot;team&quot;: &quot;A String&quot;, # The team.
      },
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;encryption&quot;: { # Encryption configuration for a bucket.
    &quot;defaultKmsKeyName&quot;: &quot;A String&quot;, # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
  },
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;iamConfiguration&quot;: { # The bucket&#x27;s IAM configuration.
    &quot;bucketPolicyOnly&quot;: { # The bucket&#x27;s uniform bucket-level access configuration. The feature was formerly known as Bucket Policy Only. For backward compatibility, this field will be populated with identical information as the uniformBucketLevelAccess field. We recommend using the uniformBucketLevelAccess field to enable and disable the feature.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
    &quot;publicAccessPrevention&quot;: &quot;A String&quot;, # The bucket&#x27;s Public Access Prevention configuration. Currently, &#x27;unspecified&#x27; and &#x27;enforced&#x27; are supported.
    &quot;uniformBucketLevelAccess&quot;: { # The bucket&#x27;s uniform bucket-level access configuration.
      &quot;enabled&quot;: True or False, # If set, access is controlled only by bucket-level or above IAM policies.
      &quot;lockedTime&quot;: &quot;A String&quot;, # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled from true to false in RFC 3339  format. iamConfiguration.uniformBucketLevelAccess.enabled may be changed from true to false until the locked time, after which the field is immutable.
    },
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket. For buckets, the id and name properties are the same.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;labels&quot;: { # User-provided labels, in key/value pairs.
    &quot;a_key&quot;: &quot;A String&quot;, # An individual label entry.
  },
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See lifecycle management for more information.
    &quot;rule&quot;: [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
      {
        &quot;action&quot;: { # The action to take.
          &quot;storageClass&quot;: &quot;A String&quot;, # Target storage class. Required iff the type of the action is SetStorageClass.
          &quot;type&quot;: &quot;A String&quot;, # Type of the action. Currently, only Delete and SetStorageClass are supported.
        },
        &quot;condition&quot;: { # The condition(s) under which the action will be taken.
          &quot;age&quot;: 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
          &quot;createdBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &quot;customTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the custom time on an object is before this date in UTC.
          &quot;daysSinceCustomTime&quot;: 42, # Number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.
          &quot;daysSinceNoncurrentTime&quot;: 42, # Number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. This condition is relevant only for versioned objects. The value of the field must be a nonnegative integer. If it&#x27;s zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent.
          &quot;isLive&quot;: True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
          &quot;matchesPattern&quot;: &quot;A String&quot;, # A regular expression that satisfies the RE2 syntax. This condition is satisfied when the name of the object matches the RE2 pattern. Note: This feature is currently in the &quot;Early Access&quot; launch stage and is only available to a whitelisted set of users; that means that this feature may be changed in backward-incompatible ways and that it is not guaranteed to be released.
          &quot;matchesStorageClass&quot;: [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
            &quot;A String&quot;,
          ],
          &quot;noncurrentTimeBefore&quot;: &quot;A String&quot;, # A date in RFC 3339 format with only the date part (for instance, &quot;2013-01-15&quot;). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.
          &quot;numNewerVersions&quot;: 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
        },
      },
    ],
  },
  &quot;location&quot;: &quot;A String&quot;, # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &quot;locationType&quot;: &quot;A String&quot;, # The type of the bucket location.
  &quot;logging&quot;: { # The bucket&#x27;s logging configuration, which defines the destination bucket and optional name prefix for the current bucket&#x27;s logs.
    &quot;logBucket&quot;: &quot;A String&quot;, # The destination bucket where the current bucket&#x27;s logs should be placed.
    &quot;logObjectPrefix&quot;: &quot;A String&quot;, # A prefix for log object names.
  },
  &quot;metageneration&quot;: &quot;A String&quot;, # The metadata generation of this bucket.
  &quot;name&quot;: &quot;A String&quot;, # The name of the bucket.
  &quot;owner&quot;: { # The owner of the bucket. This is always the project team&#x27;s owner group.
    &quot;entity&quot;: &quot;A String&quot;, # The entity, in the form project-owner-projectId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;projectNumber&quot;: &quot;A String&quot;, # The project number of the project the bucket belongs to.
  &quot;retentionPolicy&quot;: { # The bucket&#x27;s retention policy. The retention policy enforces a minimum retention time for all objects contained in the bucket, based on their creation time. Any attempt to overwrite or delete objects younger than the retention period will result in a PERMISSION_DENIED error. An unlocked retention policy can be modified or removed from the bucket via a storage.buckets.update operation. A locked retention policy cannot be removed or shortened in duration for the lifetime of the bucket. Attempting to remove or decrease period of a locked retention policy will result in a PERMISSION_DENIED error.
    &quot;effectiveTime&quot;: &quot;A String&quot;, # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
    &quot;isLocked&quot;: True or False, # Once locked, an object retention policy cannot be modified.
    &quot;retentionPeriod&quot;: &quot;A String&quot;, # The duration in seconds that objects need to be retained. Retention duration must be greater than zero and less than 100 years. Note that enforcement of retention periods less than a day is not guaranteed. Such periods should only be used for testing purposes.
  },
  &quot;rpo&quot;: &quot;A String&quot;, # The Recovery Point Objective (RPO) of this bucket. Set to ASYNC_TURBO to turn on Turbo Replication on a bucket.
  &quot;satisfiesPZS&quot;: True or False, # Reserved for future use.
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s default storage class, used whenever no storageClass is specified for a newly-created object. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket is created, it will default to STANDARD. For more information, see storage classes.
  &quot;timeCreated&quot;: &quot;A String&quot;, # The creation time of the bucket in RFC 3339 format.
  &quot;updated&quot;: &quot;A String&quot;, # The modification time of the bucket in RFC 3339 format.
  &quot;versioning&quot;: { # The bucket&#x27;s versioning configuration.
    &quot;enabled&quot;: True or False, # While set to true, versioning is fully enabled for this bucket.
  },
  &quot;website&quot;: { # The bucket&#x27;s website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # If the requested object path is missing, the service will ensure the path has a trailing &#x27;/&#x27;, append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # If the requested object path is missing, and any mainPageSuffix object is missing, if applicable, the service will return the named object from this bucket as the content for a 404 Not Found result.
  },
}</pre>
</div>

</body></html>