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

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)
  generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
  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.
</pre>
</div>

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

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)
  generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
  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:

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

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

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts. (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.
  "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.
}

  generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
  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:

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

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

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts. (required)
  generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
  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:

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

<div class="method">
    <code class="details" id="patch">patch(bucket, object, entity, body, generation=None, userProject=None, provisionalUserProject=None)</code>
  <pre>Patches an ACL entry on the specified object.

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts. (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.
  "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.
}

  generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
  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:

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

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

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts. (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.
  "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.
}

  generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
  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:

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

</body></html>