<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_v1beta2.html">Cloud Storage JSON API</a> . <a href="storage_v1beta2.buckets.html">buckets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=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)</a></code></p>
<p class="firstline">Returns metadata for the specified bucket.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, body=None, projection=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, projection=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="#patch">patch(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, projection=None)</a></code></p>
<p class="firstline">Updates a bucket. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, projection=None)</a></code></p>
<p class="firstline">Updates a bucket.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</code>
  <pre>Permanently deletes an empty 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.
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, projection=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 acl and defaultObjectAcl properties.

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
            # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &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;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
            # - 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.
        &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.
        &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
    &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
    &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
            &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
    &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 group-groupId.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
    &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
    &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
      &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
      &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, body=None, projection=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
          # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &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;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
          # - 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.
      &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.
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &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 group-groupId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
  &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
  },
}

  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 acl and defaultObjectAcl properties.

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
            # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &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;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
            # - 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.
        &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.
        &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
    &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
    &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
            &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
    &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 group-groupId.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
    &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
    &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
      &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
      &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, maxResults=None, pageToken=None, projection=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.
  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
  projection: string, Set of properties to return. Defaults to noAcl.
    Allowed values
      full - Include all properties.
      noAcl - Omit acl and defaultObjectAcl properties.

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
                # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
            &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
          },
        ],
        &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;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
                # - 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.
            &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.
            &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
            &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
          },
        ],
        &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
        &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
        &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
                &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
        &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 group-groupId.
          &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
        &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
        &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
          &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
          &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
        },
      },
    ],
    &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="patch">patch(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, projection=None)</code>
  <pre>Updates a bucket. This method supports patch semantics.

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
          # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &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;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
          # - 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.
      &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.
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &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 group-groupId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
  &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
  },
}

  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 full.
    Allowed values
      full - Include all properties.
      noAcl - Omit acl and defaultObjectAcl properties.

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
            # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &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;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
            # - 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.
        &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.
        &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
    &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
    &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
            &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
    &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 group-groupId.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
    &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
    &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
      &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
      &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(bucket, body=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None, projection=None)</code>
  <pre>Updates a bucket.

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
          # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &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;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
          # - 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.
      &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.
      &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
      &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
  &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
  &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
          &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
  &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 group-groupId.
    &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
  &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
  &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
    &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
    &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
  },
}

  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 full.
    Allowed values
      full - Include all properties.
      noAcl - Omit acl and defaultObjectAcl properties.

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
            # - 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;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER, WRITER, or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &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;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
            # - 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.
        &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.
        &quot;role&quot;: &quot;A String&quot;, # The access permission for the entity. Can be READER or OWNER.
        &quot;selfLink&quot;: &quot;A String&quot;, # The link to this access-control entry.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # HTTP 1.1 Entity tag for the bucket.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the bucket.
    &quot;kind&quot;: &quot;storage#bucket&quot;, # The kind of item this is. For buckets, this is always storage#bucket.
    &quot;lifecycle&quot;: { # The bucket&#x27;s lifecycle configuration. See object 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;type&quot;: &quot;A String&quot;, # Type of the action. Currently only Delete is 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, e.g. &quot;2013-01-15&quot;. This condition is satisfied when an object is created before midnight of the specified date in UTC.
            &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;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. Typical values are US and EU. Defaults to US. See the developer&#x27;s guide for the authoritative list.
    &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 group-groupId.
      &quot;entityId&quot;: &quot;A String&quot;, # The ID for the entity.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this bucket.
    &quot;storageClass&quot;: &quot;A String&quot;, # The bucket&#x27;s storage class. This defines how objects in the bucket are stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer&#x27;s guide for the authoritative list.
    &quot;timeCreated&quot;: &quot;A String&quot;, # Creation 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.
      &quot;mainPageSuffix&quot;: &quot;A String&quot;, # Behaves as the bucket&#x27;s directory index where missing objects are treated as potential directories.
      &quot;notFoundPage&quot;: &quot;A String&quot;, # The custom object to return when a requested resource is not found.
    },
  }</pre>
</div>

</body></html>