<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_v1beta1.html">Cloud Storage JSON API</a> . <a href="storage_v1beta1.objectAccessControls.html">objectAccessControls</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(bucket, object, entity)</a></code></p>
<p class="firstline">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)</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)</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)</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)</a></code></p>
<p class="firstline">Updates an ACL entry on the specified object. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(bucket, object, entity, body)</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)</code>
  <pre>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. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(bucket, object, entity)</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. (required)
  entity: string, The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers. (required)

Returns:
  An object of the form:

    { # An access-control entry.
    "domain": "A String", # The domain associated with the entity, if any.
    "object": "A String", # The name of the 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.
    "id": "A String", # The ID of the access-control entry.
    "role": "A String", # The access permission for the entity. Can be READER or OWNER.
    "entityId": "A String", # The ID for the entity, if any.
    "entity": "A String", # The entity holding the permission, in one of the following forms:
        # - user-userId
        # - user-email
        # - group-groupId
        # - group-email
        # - domain-domain
        # - allUsers
        # - allAuthenticatedUsers Examples:
        # - The user liz@example.com would be user-liz@example.com.
        # - The group example@googlegroups.com would be group-example@googlegroups.com.
        # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
    "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)</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. (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.
  "object": "A String", # The name of the 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.
  "id": "A String", # The ID of the access-control entry.
  "role": "A String", # The access permission for the entity. Can be READER or OWNER.
  "entityId": "A String", # The ID for the entity, if any.
  "entity": "A String", # The entity holding the permission, in one of the following forms:
      # - user-userId
      # - user-email
      # - group-groupId
      # - group-email
      # - domain-domain
      # - allUsers
      # - allAuthenticatedUsers Examples:
      # - The user liz@example.com would be user-liz@example.com.
      # - The group example@googlegroups.com would be group-example@googlegroups.com.
      # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
  "email": "A String", # The email address associated with the entity, if any.
  "selfLink": "A String", # The link to this access-control entry.
}


Returns:
  An object of the form:

    { # An access-control entry.
    "domain": "A String", # The domain associated with the entity, if any.
    "object": "A String", # The name of the 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.
    "id": "A String", # The ID of the access-control entry.
    "role": "A String", # The access permission for the entity. Can be READER or OWNER.
    "entityId": "A String", # The ID for the entity, if any.
    "entity": "A String", # The entity holding the permission, in one of the following forms:
        # - user-userId
        # - user-email
        # - group-groupId
        # - group-email
        # - domain-domain
        # - allUsers
        # - allAuthenticatedUsers Examples:
        # - The user liz@example.com would be user-liz@example.com.
        # - The group example@googlegroups.com would be group-example@googlegroups.com.
        # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
    "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)</code>
  <pre>Retrieves ACL entries on the specified object.

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. (required)

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.
        "object": "A String", # The name of the 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.
        "id": "A String", # The ID of the access-control entry.
        "role": "A String", # The access permission for the entity. Can be READER or OWNER.
        "entityId": "A String", # The ID for the entity, if any.
        "entity": "A String", # The entity holding the permission, in one of the following forms:
            # - user-userId
            # - user-email
            # - group-groupId
            # - group-email
            # - domain-domain
            # - allUsers
            # - allAuthenticatedUsers Examples:
            # - The user liz@example.com would be user-liz@example.com.
            # - The group example@googlegroups.com would be group-example@googlegroups.com.
            # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
        "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)</code>
  <pre>Updates an ACL entry on the specified object. This method supports patch semantics.

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. (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.
  "object": "A String", # The name of the 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.
  "id": "A String", # The ID of the access-control entry.
  "role": "A String", # The access permission for the entity. Can be READER or OWNER.
  "entityId": "A String", # The ID for the entity, if any.
  "entity": "A String", # The entity holding the permission, in one of the following forms:
      # - user-userId
      # - user-email
      # - group-groupId
      # - group-email
      # - domain-domain
      # - allUsers
      # - allAuthenticatedUsers Examples:
      # - The user liz@example.com would be user-liz@example.com.
      # - The group example@googlegroups.com would be group-example@googlegroups.com.
      # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
  "email": "A String", # The email address associated with the entity, if any.
  "selfLink": "A String", # The link to this access-control entry.
}


Returns:
  An object of the form:

    { # An access-control entry.
    "domain": "A String", # The domain associated with the entity, if any.
    "object": "A String", # The name of the 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.
    "id": "A String", # The ID of the access-control entry.
    "role": "A String", # The access permission for the entity. Can be READER or OWNER.
    "entityId": "A String", # The ID for the entity, if any.
    "entity": "A String", # The entity holding the permission, in one of the following forms:
        # - user-userId
        # - user-email
        # - group-groupId
        # - group-email
        # - domain-domain
        # - allUsers
        # - allAuthenticatedUsers Examples:
        # - The user liz@example.com would be user-liz@example.com.
        # - The group example@googlegroups.com would be group-example@googlegroups.com.
        # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
    "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)</code>
  <pre>Updates an ACL entry on the specified object.

Args:
  bucket: string, Name of a bucket. (required)
  object: string, Name of the object. (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.
  "object": "A String", # The name of the 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.
  "id": "A String", # The ID of the access-control entry.
  "role": "A String", # The access permission for the entity. Can be READER or OWNER.
  "entityId": "A String", # The ID for the entity, if any.
  "entity": "A String", # The entity holding the permission, in one of the following forms:
      # - user-userId
      # - user-email
      # - group-groupId
      # - group-email
      # - domain-domain
      # - allUsers
      # - allAuthenticatedUsers Examples:
      # - The user liz@example.com would be user-liz@example.com.
      # - The group example@googlegroups.com would be group-example@googlegroups.com.
      # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
  "email": "A String", # The email address associated with the entity, if any.
  "selfLink": "A String", # The link to this access-control entry.
}


Returns:
  An object of the form:

    { # An access-control entry.
    "domain": "A String", # The domain associated with the entity, if any.
    "object": "A String", # The name of the 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.
    "id": "A String", # The ID of the access-control entry.
    "role": "A String", # The access permission for the entity. Can be READER or OWNER.
    "entityId": "A String", # The ID for the entity, if any.
    "entity": "A String", # The entity holding the permission, in one of the following forms:
        # - user-userId
        # - user-email
        # - group-groupId
        # - group-email
        # - domain-domain
        # - allUsers
        # - allAuthenticatedUsers Examples:
        # - The user liz@example.com would be user-liz@example.com.
        # - The group example@googlegroups.com would be group-example@googlegroups.com.
        # - To refer to all members of the Google Apps for Business domain example.com, the entity would be domain-example.com.
    "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>