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

  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, ifMetagenerationMatch=None, userProject=None, provisionalUserProject=None, ifMetagenerationNotMatch=None)</code>
  <pre>Retrieves default object ACL entries on the specified bucket.

Args:
  bucket: string, Name of a bucket. (required)
  ifMetagenerationMatch: string, If present, only return default ACL listing if the bucket's current 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 present, only return default ACL listing if the bucket's current metageneration does not match the given value.

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, entity, body, userProject=None, provisionalUserProject=None)</code>
  <pre>Patches a default object 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.
  "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.
}

  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, entity, body, userProject=None, provisionalUserProject=None)</code>
  <pre>Updates a default object 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.
  "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.
}

  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>