<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.bucketAccessControls.html">bucketAccessControls</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(bucket, entity, userProject=None)</a></code></p>
<p class="firstline">Permanently deletes the ACL entry for the specified entity on the specified bucket.</p>
<p class="toc_element">
  <code><a href="#get">get(bucket, entity, userProject=None)</a></code></p>
<p class="firstline">Returns the ACL entry for the specified entity on the specified bucket.</p>
<p class="toc_element">
  <code><a href="#insert">insert(bucket, body, userProject=None)</a></code></p>
<p class="firstline">Creates a new ACL entry on the specified bucket.</p>
<p class="toc_element">
  <code><a href="#list">list(bucket, userProject=None)</a></code></p>
<p class="firstline">Retrieves ACL entries on the specified bucket.</p>
<p class="toc_element">
  <code><a href="#patch">patch(bucket, entity, body, userProject=None)</a></code></p>
<p class="firstline">Updates an ACL entry on the specified bucket. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(bucket, entity, body, userProject=None)</a></code></p>
<p class="firstline">Updates an ACL entry on the specified bucket.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(bucket, entity, userProject=None)</code>
  <pre>Permanently deletes the ACL entry for the specified entity on the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)
  userProject: string, The project number to be billed for this request, for Requester Pays buckets.
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(bucket, entity, userProject=None)</code>
  <pre>Returns the ACL entry for the specified entity on the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)
  userProject: string, The project number to be billed for this request, for Requester Pays buckets.

Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(bucket, body, userProject=None)</code>
  <pre>Creates a new ACL entry on the specified bucket.

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

{ # 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.
  }

  userProject: string, The project number to be billed for this request, for Requester Pays buckets.

Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(bucket, userProject=None)</code>
  <pre>Retrieves ACL entries on the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  userProject: string, The project number to be billed for this request, for Requester Pays buckets.

Returns:
  An object of the form:

    { # An access-control list.
    "items": [ # The list of items.
      { # 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.
        },
    ],
    "kind": "storage#bucketAccessControls", # The kind of item this is. For lists of bucket access control entries, this is always storage#bucketAccessControls.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(bucket, entity, body, userProject=None)</code>
  <pre>Updates an ACL entry on the specified bucket. This method supports patch semantics.

Args:
  bucket: string, Name of a bucket. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # 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.
  }

  userProject: string, The project number to be billed for this request, for Requester Pays buckets.

Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(bucket, entity, body, userProject=None)</code>
  <pre>Updates an ACL entry on the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # 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.
  }

  userProject: string, The project number to be billed for this request, for Requester Pays buckets.

Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

</body></html>