<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="#delete">delete(bucket, ifMetagenerationMatch=None, userProject=None, provisionalUserProject=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, projection=None, ifMetagenerationMatch=None, userProject=None, provisionalUserProject=None, ifMetagenerationNotMatch=None)</a></code></p>
<p class="firstline">Returns metadata for the specified bucket.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(bucket, userProject=None, provisionalUserProject=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, projection=None, userProject=None, predefinedDefaultObjectAcl=None, predefinedAcl=None, provisionalUserProject=None)</a></code></p>
<p class="firstline">Creates a new bucket.</p>
<p class="toc_element">
  <code><a href="#list">list(project, projection=None, pageToken=None, userProject=None, prefix=None, maxResults=None, provisionalUserProject=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, userProject=None, provisionalUserProject=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, projection=None, ifMetagenerationMatch=None, userProject=None, predefinedDefaultObjectAcl=None, predefinedAcl=None, provisionalUserProject=None, ifMetagenerationNotMatch=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, userProject=None, provisionalUserProject=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, userProject=None, provisionalUserProject=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, projection=None, ifMetagenerationMatch=None, userProject=None, predefinedDefaultObjectAcl=None, predefinedAcl=None, provisionalUserProject=None, ifMetagenerationNotMatch=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="delete">delete(bucket, ifMetagenerationMatch=None, userProject=None, provisionalUserProject=None, ifMetagenerationNotMatch=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.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  ifMetagenerationNotMatch: string, If set, only deletes the bucket if its metageneration does not match this value.
</pre>
</div>

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

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

Returns:
  An object of the form:

    { # A bucket.
      "labels": { # User-provided labels, in key/value pairs.
        "a_key": "A String", # An individual label entry.
      },
      "versioning": { # The bucket's versioning configuration.
        "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
      },
      "owner": { # The owner of the bucket. This is always the project team's owner group.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form project-owner-projectId.
      },
      "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
      "defaultEventBasedHold": 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'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.
      "billing": { # The bucket's billing configuration.
        "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
      },
      "encryption": { # Encryption configuration for a bucket.
        "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
      },
      "projectNumber": "A String", # The project number of the project the bucket belongs to.
      "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
      "location": "A String", # 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's guide for the authoritative list.
      "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
        "notFoundPage": "A String", # 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.
        "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
      },
      "updated": "A String", # The modification time of the bucket in RFC 3339 format.
      "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
      "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
        { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "generation": "A String", # The content generation of the object, if applied to an object.
          "object": "A String", # The name of the object, if applied to an object.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
      ],
      "metageneration": "A String", # The metadata generation of this bucket.
      "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
        {
          "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
            "A String",
          ],
          "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
            "A String",
          ],
          "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
            "A String",
          ],
          "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
        },
      ],
      "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
        "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
          {
            "action": { # The action to take.
              "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
              "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
            },
            "condition": { # The condition(s) under which the action will be taken.
              "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
                "A String",
              ],
              "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
              "numNewerVersions": 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.
              "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
              "matchesPattern": "A String", # 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 "Early Access" 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.
              "isLive": 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.
            },
          },
        ],
      },
      "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
      "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
        "logObjectPrefix": "A String", # A prefix for log object names.
        "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
      },
      "name": "A String", # The name of the bucket.
      "locationType": "A String", # The type of the bucket location.
      "acl": [ # Access controls on the bucket.
        { # An access-control entry.
            "domain": "A String", # The domain associated with the entity, if any.
            "bucket": "A String", # The name of the bucket.
            "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
            "entity": "A String", # 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.
            "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
            "role": "A String", # The access permission for the entity.
            "id": "A String", # The ID of the access-control entry.
            "entityId": "A String", # The ID for the entity, if any.
            "projectTeam": { # The project team associated with the entity, if any.
              "projectNumber": "A String", # The project number.
              "team": "A String", # The team.
            },
            "email": "A String", # The email address associated with the entity, if any.
            "selfLink": "A String", # The link to this access-control entry.
          },
      ],
      "retentionPolicy": { # The bucket'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.
        "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
        "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
        "retentionPeriod": "A String", # 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.
      },
      "storageClass": "A String", # The bucket'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, 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.
      "iamConfiguration": { # The bucket's IAM configuration.
        "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
          "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
          "lockedTime": "A String", # The deadline time 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.
        },
      },
      "selfLink": "A String", # The URI of this bucket.
    }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # A bucket/object IAM policy.
    "resourceId": "A String", # 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.
    "bindings": [ # An association between a role, which comes with a set of permissions, and members who may assume that role.
      {
        "role": "A String", # 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.
        "members": [ # 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
          "A String",
        ],
        "condition": { # Represents an expression text. Example: title: "User account presence" description: "Determines whether the request has a user account" expression: "size(request.user) > 0" # 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.
          "title": "A String", # 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.
          "expression": "A String", # 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.
          "description": "A String", # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          "location": "A String", # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        },
      },
    ],
    "etag": "A String", # HTTP 1.1  Entity tag for the policy.
    "kind": "storage#policy", # The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.
  }</pre>
</div>

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

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

{ # A bucket.
    "labels": { # User-provided labels, in key/value pairs.
      "a_key": "A String", # An individual label entry.
    },
    "versioning": { # The bucket's versioning configuration.
      "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
    },
    "owner": { # The owner of the bucket. This is always the project team's owner group.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form project-owner-projectId.
    },
    "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
    "defaultEventBasedHold": 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'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.
    "billing": { # The bucket's billing configuration.
      "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
    },
    "encryption": { # Encryption configuration for a bucket.
      "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
    },
    "projectNumber": "A String", # The project number of the project the bucket belongs to.
    "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
    "location": "A String", # 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's guide for the authoritative list.
    "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
      "notFoundPage": "A String", # 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.
      "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    },
    "updated": "A String", # The modification time of the bucket in RFC 3339 format.
    "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
    "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
      { # An access-control entry.
        "domain": "A String", # The domain associated with the entity, if any.
        "generation": "A String", # The content generation of the object, if applied to an object.
        "object": "A String", # The name of the object, if applied to an object.
        "bucket": "A String", # The name of the bucket.
        "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
        "entity": "A String", # 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.
        "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
        "role": "A String", # The access permission for the entity.
        "id": "A String", # The ID of the access-control entry.
        "entityId": "A String", # The ID for the entity, if any.
        "projectTeam": { # The project team associated with the entity, if any.
          "projectNumber": "A String", # The project number.
          "team": "A String", # The team.
        },
        "email": "A String", # The email address associated with the entity, if any.
        "selfLink": "A String", # The link to this access-control entry.
      },
    ],
    "metageneration": "A String", # The metadata generation of this bucket.
    "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
      {
        "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
          "A String",
        ],
        "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
          "A String",
        ],
        "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
          "A String",
        ],
        "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      },
    ],
    "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
      "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
        {
          "action": { # The action to take.
            "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
            "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
          },
          "condition": { # The condition(s) under which the action will be taken.
            "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
              "A String",
            ],
            "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
            "numNewerVersions": 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.
            "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
            "matchesPattern": "A String", # 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 "Early Access" 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.
            "isLive": 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.
          },
        },
      ],
    },
    "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
    "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
      "logObjectPrefix": "A String", # A prefix for log object names.
      "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
    },
    "name": "A String", # The name of the bucket.
    "locationType": "A String", # The type of the bucket location.
    "acl": [ # Access controls on the bucket.
      { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
    ],
    "retentionPolicy": { # The bucket'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.
      "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
      "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
      "retentionPeriod": "A String", # 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.
    },
    "storageClass": "A String", # The bucket'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, 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.
    "iamConfiguration": { # The bucket's IAM configuration.
      "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
        "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
        "lockedTime": "A String", # The deadline time 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.
      },
    },
    "selfLink": "A String", # The URI of this bucket.
  }

  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.
  userProject: string, The project to be billed for this request.
  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.
  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.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.

Returns:
  An object of the form:

    { # A bucket.
      "labels": { # User-provided labels, in key/value pairs.
        "a_key": "A String", # An individual label entry.
      },
      "versioning": { # The bucket's versioning configuration.
        "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
      },
      "owner": { # The owner of the bucket. This is always the project team's owner group.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form project-owner-projectId.
      },
      "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
      "defaultEventBasedHold": 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'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.
      "billing": { # The bucket's billing configuration.
        "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
      },
      "encryption": { # Encryption configuration for a bucket.
        "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
      },
      "projectNumber": "A String", # The project number of the project the bucket belongs to.
      "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
      "location": "A String", # 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's guide for the authoritative list.
      "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
        "notFoundPage": "A String", # 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.
        "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
      },
      "updated": "A String", # The modification time of the bucket in RFC 3339 format.
      "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
      "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
        { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "generation": "A String", # The content generation of the object, if applied to an object.
          "object": "A String", # The name of the object, if applied to an object.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
      ],
      "metageneration": "A String", # The metadata generation of this bucket.
      "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
        {
          "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
            "A String",
          ],
          "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
            "A String",
          ],
          "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
            "A String",
          ],
          "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
        },
      ],
      "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
        "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
          {
            "action": { # The action to take.
              "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
              "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
            },
            "condition": { # The condition(s) under which the action will be taken.
              "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
                "A String",
              ],
              "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
              "numNewerVersions": 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.
              "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
              "matchesPattern": "A String", # 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 "Early Access" 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.
              "isLive": 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.
            },
          },
        ],
      },
      "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
      "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
        "logObjectPrefix": "A String", # A prefix for log object names.
        "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
      },
      "name": "A String", # The name of the bucket.
      "locationType": "A String", # The type of the bucket location.
      "acl": [ # Access controls on the bucket.
        { # An access-control entry.
            "domain": "A String", # The domain associated with the entity, if any.
            "bucket": "A String", # The name of the bucket.
            "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
            "entity": "A String", # 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.
            "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
            "role": "A String", # The access permission for the entity.
            "id": "A String", # The ID of the access-control entry.
            "entityId": "A String", # The ID for the entity, if any.
            "projectTeam": { # The project team associated with the entity, if any.
              "projectNumber": "A String", # The project number.
              "team": "A String", # The team.
            },
            "email": "A String", # The email address associated with the entity, if any.
            "selfLink": "A String", # The link to this access-control entry.
          },
      ],
      "retentionPolicy": { # The bucket'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.
        "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
        "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
        "retentionPeriod": "A String", # 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.
      },
      "storageClass": "A String", # The bucket'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, 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.
      "iamConfiguration": { # The bucket's IAM configuration.
        "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
          "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
          "lockedTime": "A String", # The deadline time 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.
        },
      },
      "selfLink": "A String", # The URI of this bucket.
    }</pre>
</div>

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

Args:
  project: string, A valid API project identifier. (required)
  projection: string, Set of properties to return. Defaults to noAcl.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
  userProject: string, The project to be billed for this request.
  prefix: string, Filter results to buckets whose names begin with this prefix.
  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.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.

Returns:
  An object of the form:

    { # A list of buckets.
    "nextPageToken": "A String", # The continuation token, used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
    "items": [ # The list of items.
      { # A bucket.
          "labels": { # User-provided labels, in key/value pairs.
            "a_key": "A String", # An individual label entry.
          },
          "versioning": { # The bucket's versioning configuration.
            "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
          },
          "owner": { # The owner of the bucket. This is always the project team's owner group.
            "entityId": "A String", # The ID for the entity.
            "entity": "A String", # The entity, in the form project-owner-projectId.
          },
          "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
          "defaultEventBasedHold": 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'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.
          "billing": { # The bucket's billing configuration.
            "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
          },
          "encryption": { # Encryption configuration for a bucket.
            "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
          },
          "projectNumber": "A String", # The project number of the project the bucket belongs to.
          "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
          "location": "A String", # 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's guide for the authoritative list.
          "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
            "notFoundPage": "A String", # 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.
            "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
          },
          "updated": "A String", # The modification time of the bucket in RFC 3339 format.
          "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
          "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
            { # An access-control entry.
              "domain": "A String", # The domain associated with the entity, if any.
              "generation": "A String", # The content generation of the object, if applied to an object.
              "object": "A String", # The name of the object, if applied to an object.
              "bucket": "A String", # The name of the bucket.
              "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
              "entity": "A String", # 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.
              "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
              "role": "A String", # The access permission for the entity.
              "id": "A String", # The ID of the access-control entry.
              "entityId": "A String", # The ID for the entity, if any.
              "projectTeam": { # The project team associated with the entity, if any.
                "projectNumber": "A String", # The project number.
                "team": "A String", # The team.
              },
              "email": "A String", # The email address associated with the entity, if any.
              "selfLink": "A String", # The link to this access-control entry.
            },
          ],
          "metageneration": "A String", # The metadata generation of this bucket.
          "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
            {
              "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
                "A String",
              ],
              "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
                "A String",
              ],
              "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
                "A String",
              ],
              "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
            },
          ],
          "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
            "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
              {
                "action": { # The action to take.
                  "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
                  "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
                },
                "condition": { # The condition(s) under which the action will be taken.
                  "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
                    "A String",
                  ],
                  "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
                  "numNewerVersions": 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.
                  "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
                  "matchesPattern": "A String", # 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 "Early Access" 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.
                  "isLive": 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.
                },
              },
            ],
          },
          "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
          "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
            "logObjectPrefix": "A String", # A prefix for log object names.
            "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
          },
          "name": "A String", # The name of the bucket.
          "locationType": "A String", # The type of the bucket location.
          "acl": [ # Access controls on the bucket.
            { # An access-control entry.
                "domain": "A String", # The domain associated with the entity, if any.
                "bucket": "A String", # The name of the bucket.
                "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
                "entity": "A String", # 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.
                "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
                "role": "A String", # The access permission for the entity.
                "id": "A String", # The ID of the access-control entry.
                "entityId": "A String", # The ID for the entity, if any.
                "projectTeam": { # The project team associated with the entity, if any.
                  "projectNumber": "A String", # The project number.
                  "team": "A String", # The team.
                },
                "email": "A String", # The email address associated with the entity, if any.
                "selfLink": "A String", # The link to this access-control entry.
              },
          ],
          "retentionPolicy": { # The bucket'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.
            "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
            "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
            "retentionPeriod": "A String", # 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.
          },
          "storageClass": "A String", # The bucket'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, 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.
          "iamConfiguration": { # The bucket's IAM configuration.
            "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
              "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
              "lockedTime": "A String", # The deadline time 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.
            },
          },
          "selfLink": "A String", # The URI of this bucket.
        },
    ],
    "kind": "storage#buckets", # The kind of item this is. For lists of buckets, this is always storage#buckets.
  }</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 'execute()' 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, userProject=None, provisionalUserProject=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's current metageneration matches the given value. (required)
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.

Returns:
  An object of the form:

    { # A bucket.
      "labels": { # User-provided labels, in key/value pairs.
        "a_key": "A String", # An individual label entry.
      },
      "versioning": { # The bucket's versioning configuration.
        "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
      },
      "owner": { # The owner of the bucket. This is always the project team's owner group.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form project-owner-projectId.
      },
      "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
      "defaultEventBasedHold": 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'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.
      "billing": { # The bucket's billing configuration.
        "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
      },
      "encryption": { # Encryption configuration for a bucket.
        "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
      },
      "projectNumber": "A String", # The project number of the project the bucket belongs to.
      "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
      "location": "A String", # 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's guide for the authoritative list.
      "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
        "notFoundPage": "A String", # 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.
        "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
      },
      "updated": "A String", # The modification time of the bucket in RFC 3339 format.
      "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
      "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
        { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "generation": "A String", # The content generation of the object, if applied to an object.
          "object": "A String", # The name of the object, if applied to an object.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
      ],
      "metageneration": "A String", # The metadata generation of this bucket.
      "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
        {
          "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
            "A String",
          ],
          "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
            "A String",
          ],
          "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
            "A String",
          ],
          "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
        },
      ],
      "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
        "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
          {
            "action": { # The action to take.
              "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
              "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
            },
            "condition": { # The condition(s) under which the action will be taken.
              "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
                "A String",
              ],
              "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
              "numNewerVersions": 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.
              "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
              "matchesPattern": "A String", # 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 "Early Access" 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.
              "isLive": 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.
            },
          },
        ],
      },
      "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
      "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
        "logObjectPrefix": "A String", # A prefix for log object names.
        "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
      },
      "name": "A String", # The name of the bucket.
      "locationType": "A String", # The type of the bucket location.
      "acl": [ # Access controls on the bucket.
        { # An access-control entry.
            "domain": "A String", # The domain associated with the entity, if any.
            "bucket": "A String", # The name of the bucket.
            "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
            "entity": "A String", # 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.
            "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
            "role": "A String", # The access permission for the entity.
            "id": "A String", # The ID of the access-control entry.
            "entityId": "A String", # The ID for the entity, if any.
            "projectTeam": { # The project team associated with the entity, if any.
              "projectNumber": "A String", # The project number.
              "team": "A String", # The team.
            },
            "email": "A String", # The email address associated with the entity, if any.
            "selfLink": "A String", # The link to this access-control entry.
          },
      ],
      "retentionPolicy": { # The bucket'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.
        "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
        "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
        "retentionPeriod": "A String", # 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.
      },
      "storageClass": "A String", # The bucket'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, 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.
      "iamConfiguration": { # The bucket's IAM configuration.
        "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
          "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
          "lockedTime": "A String", # The deadline time 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.
        },
      },
      "selfLink": "A String", # The URI of this bucket.
    }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(bucket, body, projection=None, ifMetagenerationMatch=None, userProject=None, predefinedDefaultObjectAcl=None, predefinedAcl=None, provisionalUserProject=None, ifMetagenerationNotMatch=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. (required)
    The object takes the form of:

{ # A bucket.
    "labels": { # User-provided labels, in key/value pairs.
      "a_key": "A String", # An individual label entry.
    },
    "versioning": { # The bucket's versioning configuration.
      "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
    },
    "owner": { # The owner of the bucket. This is always the project team's owner group.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form project-owner-projectId.
    },
    "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
    "defaultEventBasedHold": 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'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.
    "billing": { # The bucket's billing configuration.
      "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
    },
    "encryption": { # Encryption configuration for a bucket.
      "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
    },
    "projectNumber": "A String", # The project number of the project the bucket belongs to.
    "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
    "location": "A String", # 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's guide for the authoritative list.
    "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
      "notFoundPage": "A String", # 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.
      "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    },
    "updated": "A String", # The modification time of the bucket in RFC 3339 format.
    "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
    "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
      { # An access-control entry.
        "domain": "A String", # The domain associated with the entity, if any.
        "generation": "A String", # The content generation of the object, if applied to an object.
        "object": "A String", # The name of the object, if applied to an object.
        "bucket": "A String", # The name of the bucket.
        "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
        "entity": "A String", # 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.
        "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
        "role": "A String", # The access permission for the entity.
        "id": "A String", # The ID of the access-control entry.
        "entityId": "A String", # The ID for the entity, if any.
        "projectTeam": { # The project team associated with the entity, if any.
          "projectNumber": "A String", # The project number.
          "team": "A String", # The team.
        },
        "email": "A String", # The email address associated with the entity, if any.
        "selfLink": "A String", # The link to this access-control entry.
      },
    ],
    "metageneration": "A String", # The metadata generation of this bucket.
    "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
      {
        "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
          "A String",
        ],
        "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
          "A String",
        ],
        "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
          "A String",
        ],
        "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      },
    ],
    "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
      "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
        {
          "action": { # The action to take.
            "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
            "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
          },
          "condition": { # The condition(s) under which the action will be taken.
            "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
              "A String",
            ],
            "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
            "numNewerVersions": 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.
            "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
            "matchesPattern": "A String", # 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 "Early Access" 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.
            "isLive": 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.
          },
        },
      ],
    },
    "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
    "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
      "logObjectPrefix": "A String", # A prefix for log object names.
      "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
    },
    "name": "A String", # The name of the bucket.
    "locationType": "A String", # The type of the bucket location.
    "acl": [ # Access controls on the bucket.
      { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
    ],
    "retentionPolicy": { # The bucket'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.
      "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
      "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
      "retentionPeriod": "A String", # 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.
    },
    "storageClass": "A String", # The bucket'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, 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.
    "iamConfiguration": { # The bucket's IAM configuration.
      "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
        "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
        "lockedTime": "A String", # The deadline time 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.
      },
    },
    "selfLink": "A String", # The URI of this bucket.
  }

  projection: string, Set of properties to return. Defaults to full.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.
  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.
  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.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration does not match the given value.

Returns:
  An object of the form:

    { # A bucket.
      "labels": { # User-provided labels, in key/value pairs.
        "a_key": "A String", # An individual label entry.
      },
      "versioning": { # The bucket's versioning configuration.
        "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
      },
      "owner": { # The owner of the bucket. This is always the project team's owner group.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form project-owner-projectId.
      },
      "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
      "defaultEventBasedHold": 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'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.
      "billing": { # The bucket's billing configuration.
        "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
      },
      "encryption": { # Encryption configuration for a bucket.
        "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
      },
      "projectNumber": "A String", # The project number of the project the bucket belongs to.
      "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
      "location": "A String", # 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's guide for the authoritative list.
      "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
        "notFoundPage": "A String", # 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.
        "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
      },
      "updated": "A String", # The modification time of the bucket in RFC 3339 format.
      "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
      "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
        { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "generation": "A String", # The content generation of the object, if applied to an object.
          "object": "A String", # The name of the object, if applied to an object.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
      ],
      "metageneration": "A String", # The metadata generation of this bucket.
      "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
        {
          "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
            "A String",
          ],
          "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
            "A String",
          ],
          "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
            "A String",
          ],
          "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
        },
      ],
      "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
        "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
          {
            "action": { # The action to take.
              "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
              "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
            },
            "condition": { # The condition(s) under which the action will be taken.
              "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
                "A String",
              ],
              "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
              "numNewerVersions": 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.
              "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
              "matchesPattern": "A String", # 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 "Early Access" 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.
              "isLive": 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.
            },
          },
        ],
      },
      "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
      "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
        "logObjectPrefix": "A String", # A prefix for log object names.
        "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
      },
      "name": "A String", # The name of the bucket.
      "locationType": "A String", # The type of the bucket location.
      "acl": [ # Access controls on the bucket.
        { # An access-control entry.
            "domain": "A String", # The domain associated with the entity, if any.
            "bucket": "A String", # The name of the bucket.
            "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
            "entity": "A String", # 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.
            "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
            "role": "A String", # The access permission for the entity.
            "id": "A String", # The ID of the access-control entry.
            "entityId": "A String", # The ID for the entity, if any.
            "projectTeam": { # The project team associated with the entity, if any.
              "projectNumber": "A String", # The project number.
              "team": "A String", # The team.
            },
            "email": "A String", # The email address associated with the entity, if any.
            "selfLink": "A String", # The link to this access-control entry.
          },
      ],
      "retentionPolicy": { # The bucket'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.
        "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
        "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
        "retentionPeriod": "A String", # 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.
      },
      "storageClass": "A String", # The bucket'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, 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.
      "iamConfiguration": { # The bucket's IAM configuration.
        "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
          "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
          "lockedTime": "A String", # The deadline time 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.
        },
      },
      "selfLink": "A String", # The URI of this bucket.
    }</pre>
</div>

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

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

{ # A bucket/object IAM policy.
  "resourceId": "A String", # 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.
  "bindings": [ # An association between a role, which comes with a set of permissions, and members who may assume that role.
    {
      "role": "A String", # 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.
      "members": [ # 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
        "A String",
      ],
      "condition": { # Represents an expression text. Example: title: "User account presence" description: "Determines whether the request has a user account" expression: "size(request.user) > 0" # 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.
        "title": "A String", # 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.
        "expression": "A String", # 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.
        "description": "A String", # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        "location": "A String", # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
      },
    },
  ],
  "etag": "A String", # HTTP 1.1  Entity tag for the policy.
  "kind": "storage#policy", # The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.
}

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

Returns:
  An object of the form:

    { # A bucket/object IAM policy.
    "resourceId": "A String", # 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.
    "bindings": [ # An association between a role, which comes with a set of permissions, and members who may assume that role.
      {
        "role": "A String", # 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.
        "members": [ # 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
          "A String",
        ],
        "condition": { # Represents an expression text. Example: title: "User account presence" description: "Determines whether the request has a user account" expression: "size(request.user) > 0" # 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.
          "title": "A String", # 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.
          "expression": "A String", # 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.
          "description": "A String", # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          "location": "A String", # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        },
      },
    ],
    "etag": "A String", # HTTP 1.1  Entity tag for the policy.
    "kind": "storage#policy", # The kind of item this is. For policies, this is always storage#policy. This field is ignored on input.
  }</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(bucket, permissions, userProject=None, provisionalUserProject=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)
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.

Returns:
  An object of the form:

    { # A storage.(buckets|objects).testIamPermissions response.
    "kind": "storage#testIamPermissionsResponse", # The kind of item this is.
    "permissions": [ # 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.
      "A String",
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(bucket, body, projection=None, ifMetagenerationMatch=None, userProject=None, predefinedDefaultObjectAcl=None, predefinedAcl=None, provisionalUserProject=None, ifMetagenerationNotMatch=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. (required)
    The object takes the form of:

{ # A bucket.
    "labels": { # User-provided labels, in key/value pairs.
      "a_key": "A String", # An individual label entry.
    },
    "versioning": { # The bucket's versioning configuration.
      "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
    },
    "owner": { # The owner of the bucket. This is always the project team's owner group.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form project-owner-projectId.
    },
    "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
    "defaultEventBasedHold": 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'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.
    "billing": { # The bucket's billing configuration.
      "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
    },
    "encryption": { # Encryption configuration for a bucket.
      "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
    },
    "projectNumber": "A String", # The project number of the project the bucket belongs to.
    "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
    "location": "A String", # 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's guide for the authoritative list.
    "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
      "notFoundPage": "A String", # 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.
      "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
    },
    "updated": "A String", # The modification time of the bucket in RFC 3339 format.
    "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
    "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
      { # An access-control entry.
        "domain": "A String", # The domain associated with the entity, if any.
        "generation": "A String", # The content generation of the object, if applied to an object.
        "object": "A String", # The name of the object, if applied to an object.
        "bucket": "A String", # The name of the bucket.
        "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
        "entity": "A String", # 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.
        "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
        "role": "A String", # The access permission for the entity.
        "id": "A String", # The ID of the access-control entry.
        "entityId": "A String", # The ID for the entity, if any.
        "projectTeam": { # The project team associated with the entity, if any.
          "projectNumber": "A String", # The project number.
          "team": "A String", # The team.
        },
        "email": "A String", # The email address associated with the entity, if any.
        "selfLink": "A String", # The link to this access-control entry.
      },
    ],
    "metageneration": "A String", # The metadata generation of this bucket.
    "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
      {
        "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
          "A String",
        ],
        "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
          "A String",
        ],
        "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
          "A String",
        ],
        "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
      },
    ],
    "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
      "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
        {
          "action": { # The action to take.
            "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
            "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
          },
          "condition": { # The condition(s) under which the action will be taken.
            "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
              "A String",
            ],
            "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
            "numNewerVersions": 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.
            "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
            "matchesPattern": "A String", # 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 "Early Access" 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.
            "isLive": 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.
          },
        },
      ],
    },
    "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
    "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
      "logObjectPrefix": "A String", # A prefix for log object names.
      "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
    },
    "name": "A String", # The name of the bucket.
    "locationType": "A String", # The type of the bucket location.
    "acl": [ # Access controls on the bucket.
      { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
    ],
    "retentionPolicy": { # The bucket'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.
      "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
      "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
      "retentionPeriod": "A String", # 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.
    },
    "storageClass": "A String", # The bucket'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, 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.
    "iamConfiguration": { # The bucket's IAM configuration.
      "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
        "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
        "lockedTime": "A String", # The deadline time 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.
      },
    },
    "selfLink": "A String", # The URI of this bucket.
  }

  projection: string, Set of properties to return. Defaults to full.
    Allowed values
      full - Include all properties.
      noAcl - Omit owner, acl and defaultObjectAcl properties.
  ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value.
  userProject: string, The project to be billed for this request. Required for Requester Pays buckets.
  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.
  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.
  provisionalUserProject: string, The project to be billed for this request if the target bucket is requester-pays bucket.
  ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration does not match the given value.

Returns:
  An object of the form:

    { # A bucket.
      "labels": { # User-provided labels, in key/value pairs.
        "a_key": "A String", # An individual label entry.
      },
      "versioning": { # The bucket's versioning configuration.
        "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
      },
      "owner": { # The owner of the bucket. This is always the project team's owner group.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form project-owner-projectId.
      },
      "id": "A String", # The ID of the bucket. For buckets, the id and name properties are the same.
      "defaultEventBasedHold": 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'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.
      "billing": { # The bucket's billing configuration.
        "requesterPays": True or False, # When set to true, Requester Pays is enabled for this bucket.
      },
      "encryption": { # Encryption configuration for a bucket.
        "defaultKmsKeyName": "A String", # A Cloud KMS key that will be used to encrypt objects inserted into this bucket, if no encryption method is specified.
      },
      "projectNumber": "A String", # The project number of the project the bucket belongs to.
      "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
      "location": "A String", # 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's guide for the authoritative list.
      "website": { # The bucket's website configuration, controlling how the service behaves when accessing bucket contents as a web site. See the Static Website Examples for more information.
        "notFoundPage": "A String", # 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.
        "mainPageSuffix": "A String", # If the requested object path is missing, the service will ensure the path has a trailing '/', append this suffix, and attempt to retrieve the resulting object. This allows the creation of index.html objects to represent directory pages.
      },
      "updated": "A String", # The modification time of the bucket in RFC 3339 format.
      "timeCreated": "A String", # The creation time of the bucket in RFC 3339 format.
      "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
        { # An access-control entry.
          "domain": "A String", # The domain associated with the entity, if any.
          "generation": "A String", # The content generation of the object, if applied to an object.
          "object": "A String", # The name of the object, if applied to an object.
          "bucket": "A String", # The name of the bucket.
          "kind": "storage#objectAccessControl", # The kind of item this is. For object access control entries, this is always storage#objectAccessControl.
          "entity": "A String", # 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.
          "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
          "role": "A String", # The access permission for the entity.
          "id": "A String", # The ID of the access-control entry.
          "entityId": "A String", # The ID for the entity, if any.
          "projectTeam": { # The project team associated with the entity, if any.
            "projectNumber": "A String", # The project number.
            "team": "A String", # The team.
          },
          "email": "A String", # The email address associated with the entity, if any.
          "selfLink": "A String", # The link to this access-control entry.
        },
      ],
      "metageneration": "A String", # The metadata generation of this bucket.
      "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
        {
          "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
            "A String",
          ],
          "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
            "A String",
          ],
          "method": [ # The list of HTTP methods on which to include CORS response headers, (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "any method".
            "A String",
          ],
          "maxAgeSeconds": 42, # The value, in seconds, to return in the  Access-Control-Max-Age header used in preflight responses.
        },
      ],
      "lifecycle": { # The bucket's lifecycle configuration. See lifecycle management for more information.
        "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
          {
            "action": { # The action to take.
              "type": "A String", # Type of the action. Currently, only Delete and SetStorageClass are supported.
              "storageClass": "A String", # Target storage class. Required iff the type of the action is SetStorageClass.
            },
            "condition": { # The condition(s) under which the action will be taken.
              "matchesStorageClass": [ # Objects having any of the storage classes specified by this condition will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
                "A String",
              ],
              "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
              "numNewerVersions": 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.
              "createdBefore": "A String", # A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when an object is created before midnight of the specified date in UTC.
              "matchesPattern": "A String", # 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 "Early Access" 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.
              "isLive": 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.
            },
          },
        ],
      },
      "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
      "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
        "logObjectPrefix": "A String", # A prefix for log object names.
        "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
      },
      "name": "A String", # The name of the bucket.
      "locationType": "A String", # The type of the bucket location.
      "acl": [ # Access controls on the bucket.
        { # An access-control entry.
            "domain": "A String", # The domain associated with the entity, if any.
            "bucket": "A String", # The name of the bucket.
            "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
            "entity": "A String", # 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.
            "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
            "role": "A String", # The access permission for the entity.
            "id": "A String", # The ID of the access-control entry.
            "entityId": "A String", # The ID for the entity, if any.
            "projectTeam": { # The project team associated with the entity, if any.
              "projectNumber": "A String", # The project number.
              "team": "A String", # The team.
            },
            "email": "A String", # The email address associated with the entity, if any.
            "selfLink": "A String", # The link to this access-control entry.
          },
      ],
      "retentionPolicy": { # The bucket'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.
        "effectiveTime": "A String", # Server-determined value that indicates the time from which policy was enforced and effective. This value is in RFC 3339 format.
        "isLocked": True or False, # Once locked, an object retention policy cannot be modified.
        "retentionPeriod": "A String", # 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.
      },
      "storageClass": "A String", # The bucket'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, 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.
      "iamConfiguration": { # The bucket's IAM configuration.
        "bucketPolicyOnly": { # The bucket's Bucket Policy Only configuration.
          "enabled": True or False, # If set, access checks only use bucket-level IAM policies or above.
          "lockedTime": "A String", # The deadline time 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.
        },
      },
      "selfLink": "A String", # The URI of this bucket.
    }</pre>
</div>

</body></html>