<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.objects.html">objects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(bucket, object)</a></code></p>
<p class="firstline">Deletes data blobs and associated metadata.</p>
<p class="toc_element">
  <code><a href="#get">get(bucket, object, projection=None)</a></code></p>
<p class="firstline">Retrieves objects or their associated metadata.</p>
<p class="toc_element">
  <code><a href="#get_media">get_media(bucket, object, projection=None)</a></code></p>
<p class="firstline">Retrieves objects or their associated metadata.</p>
<p class="toc_element">
  <code><a href="#insert">insert(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</a></code></p>
<p class="firstline">Stores new data blobs and associated metadata.</p>
<p class="toc_element">
  <code><a href="#insert_media">insert_media(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</a></code></p>
<p class="firstline">Stores new data blobs and associated metadata.</p>
<p class="toc_element">
  <code><a href="#list">list(bucket, projection=None, pageToken=None, delimiter=None, prefix=None, max_results=None)</a></code></p>
<p class="firstline">Retrieves a list of objects matching the criteria.</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="#patch">patch(bucket, object, body, projection=None)</a></code></p>
<p class="firstline">Updates a data blob's associated metadata. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(bucket, object, body, projection=None)</a></code></p>
<p class="firstline">Updates a data blob's associated metadata.</p>
<p class="toc_element">
  <code><a href="#update_media">update_media(bucket, object, body, projection=None)</a></code></p>
<p class="firstline">Updates a data blob's associated metadata.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(bucket, object)</code>
  <pre>Deletes data blobs and associated metadata.

Args:
  bucket: string, Name of the bucket in which the object resides. (required)
  object: string, Name of the object. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(bucket, object, projection=None)</code>
  <pre>Retrieves objects or their associated metadata.

Args:
  bucket: string, Name of the bucket in which the object resides. (required)
  object: string, Name of the object. (required)
  projection: string, Set of properties to return. Defaults to no_acl.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.

Returns:
  An object of the form:

    { # An object.
      "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
      "name": "A String", # The name of this object. Required if not specified by URL parameter.
      "contentLanguage": "A String", # Content-Language of the object data.
      "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
        "contentType": "A String", # Content-Type of the object data.
        "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
        "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
        "length": "A String", # Content-Length of the data in bytes.
        "link": "A String", # Media download link.
        "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
        "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
      },
      "bucket": "A String", # The bucket containing this object.
      "contentEncoding": "A String", # Content-Encoding of the object data.
      "selfLink": "A String", # The link to this object.
      "owner": { # The owner of the object. This will always be the uploader of the object.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form user-userId.
      },
      "cacheControl": "A String", # Cache-Control directive for the object data.
      "acl": [ # Access controls on the object.
        { # 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.
        },
      ],
      "id": "A String", # The ID of the object.
      "contentDisposition": "A String", # Content-Disposition of the object data.
      "metadata": { # User-provided metadata, in key/value pairs.
        "a_key": "A String", # An individual metadata entry.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="get_media">get_media(bucket, object, projection=None)</code>
  <pre>Retrieves objects or their associated metadata.

Args:
  bucket: string, Name of the bucket in which the object resides. (required)
  object: string, Name of the object. (required)
  projection: string, Set of properties to return. Defaults to no_acl.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.

Returns:
  The media object as a string.

    </pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</code>
  <pre>Stores new data blobs and associated metadata.

Args:
  bucket: string, Name of the bucket in which to store the new object. Overrides the provided object metadata's bucket value, if any. (required)
  body: object, The request body.
    The object takes the form of:

{ # An object.
    "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
    "name": "A String", # The name of this object. Required if not specified by URL parameter.
    "contentLanguage": "A String", # Content-Language of the object data.
    "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
      "contentType": "A String", # Content-Type of the object data.
      "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
      "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
      "length": "A String", # Content-Length of the data in bytes.
      "link": "A String", # Media download link.
      "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
      "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
    },
    "bucket": "A String", # The bucket containing this object.
    "contentEncoding": "A String", # Content-Encoding of the object data.
    "selfLink": "A String", # The link to this object.
    "owner": { # The owner of the object. This will always be the uploader of the object.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form user-userId.
    },
    "cacheControl": "A String", # Cache-Control directive for the object data.
    "acl": [ # Access controls on the object.
      { # 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.
      },
    ],
    "id": "A String", # The ID of the object.
    "contentDisposition": "A String", # Content-Disposition of the object data.
    "metadata": { # User-provided metadata, in key/value pairs.
      "a_key": "A String", # An individual metadata entry.
    },
  }

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  projection: string, Set of properties to return. Defaults to no_acl, unless the object resource specifies the acl property, when it defaults to full.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.

Returns:
  An object of the form:

    { # An object.
      "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
      "name": "A String", # The name of this object. Required if not specified by URL parameter.
      "contentLanguage": "A String", # Content-Language of the object data.
      "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
        "contentType": "A String", # Content-Type of the object data.
        "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
        "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
        "length": "A String", # Content-Length of the data in bytes.
        "link": "A String", # Media download link.
        "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
        "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
      },
      "bucket": "A String", # The bucket containing this object.
      "contentEncoding": "A String", # Content-Encoding of the object data.
      "selfLink": "A String", # The link to this object.
      "owner": { # The owner of the object. This will always be the uploader of the object.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form user-userId.
      },
      "cacheControl": "A String", # Cache-Control directive for the object data.
      "acl": [ # Access controls on the object.
        { # 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.
        },
      ],
      "id": "A String", # The ID of the object.
      "contentDisposition": "A String", # Content-Disposition of the object data.
      "metadata": { # User-provided metadata, in key/value pairs.
        "a_key": "A String", # An individual metadata entry.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert_media">insert_media(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</code>
  <pre>Stores new data blobs and associated metadata.

Args:
  bucket: string, Name of the bucket in which to store the new object. Overrides the provided object metadata's bucket value, if any. (required)
  body: object, The request body.
    The object takes the form of:

{ # An object.
    "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
    "name": "A String", # The name of this object. Required if not specified by URL parameter.
    "contentLanguage": "A String", # Content-Language of the object data.
    "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
      "contentType": "A String", # Content-Type of the object data.
      "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
      "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
      "length": "A String", # Content-Length of the data in bytes.
      "link": "A String", # Media download link.
      "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
      "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
    },
    "bucket": "A String", # The bucket containing this object.
    "contentEncoding": "A String", # Content-Encoding of the object data.
    "selfLink": "A String", # The link to this object.
    "owner": { # The owner of the object. This will always be the uploader of the object.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form user-userId.
    },
    "cacheControl": "A String", # Cache-Control directive for the object data.
    "acl": [ # Access controls on the object.
      { # 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.
      },
    ],
    "id": "A String", # The ID of the object.
    "contentDisposition": "A String", # Content-Disposition of the object data.
    "metadata": { # User-provided metadata, in key/value pairs.
      "a_key": "A String", # An individual metadata entry.
    },
  }

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  projection: string, Set of properties to return. Defaults to no_acl, unless the object resource specifies the acl property, when it defaults to full.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.

Returns:
  The media object as a string.

    </pre>
</div>

<div class="method">
    <code class="details" id="list">list(bucket, projection=None, pageToken=None, delimiter=None, prefix=None, max_results=None)</code>
  <pre>Retrieves a list of objects matching the criteria.

Args:
  bucket: string, Name of the bucket in which to look for objects. (required)
  projection: string, Set of properties to return. Defaults to no_acl.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.
  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
  delimiter: string, Returns results in a directory-like mode. items will contain only objects whose names, aside from the prefix, do not contain delimiter. Objects whose names, aside from the prefix, contain delimiter will have their name, truncated after the delimiter, returned in prefixes. Duplicate prefixes are omitted.
  prefix: string, Filter results to objects whose names begin with this prefix.
  max_results: integer, Maximum number of items plus prefixes to return. As duplicate prefixes are omitted, fewer total results may be returned than requested.

Returns:
  An object of the form:

    { # A list of objects.
    "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.
      { # An object.
          "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
          "name": "A String", # The name of this object. Required if not specified by URL parameter.
          "contentLanguage": "A String", # Content-Language of the object data.
          "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
            "contentType": "A String", # Content-Type of the object data.
            "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
            "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
            "length": "A String", # Content-Length of the data in bytes.
            "link": "A String", # Media download link.
            "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
            "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
          },
          "bucket": "A String", # The bucket containing this object.
          "contentEncoding": "A String", # Content-Encoding of the object data.
          "selfLink": "A String", # The link to this object.
          "owner": { # The owner of the object. This will always be the uploader of the object.
            "entityId": "A String", # The ID for the entity.
            "entity": "A String", # The entity, in the form user-userId.
          },
          "cacheControl": "A String", # Cache-Control directive for the object data.
          "acl": [ # Access controls on the object.
            { # 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.
            },
          ],
          "id": "A String", # The ID of the object.
          "contentDisposition": "A String", # Content-Disposition of the object data.
          "metadata": { # User-provided metadata, in key/value pairs.
            "a_key": "A String", # An individual metadata entry.
          },
        },
    ],
    "kind": "storage#objects", # The kind of item this is. For lists of objects, this is always storage#objects.
    "prefixes": [ # The list of prefixes of objects matching-but-not-listed up to and including the requested delimiter.
      "A String",
    ],
  }</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="patch">patch(bucket, object, body, projection=None)</code>
  <pre>Updates a data blob's associated metadata. This method supports patch semantics.

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

{ # An object.
    "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
    "name": "A String", # The name of this object. Required if not specified by URL parameter.
    "contentLanguage": "A String", # Content-Language of the object data.
    "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
      "contentType": "A String", # Content-Type of the object data.
      "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
      "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
      "length": "A String", # Content-Length of the data in bytes.
      "link": "A String", # Media download link.
      "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
      "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
    },
    "bucket": "A String", # The bucket containing this object.
    "contentEncoding": "A String", # Content-Encoding of the object data.
    "selfLink": "A String", # The link to this object.
    "owner": { # The owner of the object. This will always be the uploader of the object.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form user-userId.
    },
    "cacheControl": "A String", # Cache-Control directive for the object data.
    "acl": [ # Access controls on the object.
      { # 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.
      },
    ],
    "id": "A String", # The ID of the object.
    "contentDisposition": "A String", # Content-Disposition of the object data.
    "metadata": { # User-provided metadata, in key/value pairs.
      "a_key": "A String", # An individual metadata entry.
    },
  }

  projection: string, Set of properties to return. Defaults to full.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.

Returns:
  An object of the form:

    { # An object.
      "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
      "name": "A String", # The name of this object. Required if not specified by URL parameter.
      "contentLanguage": "A String", # Content-Language of the object data.
      "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
        "contentType": "A String", # Content-Type of the object data.
        "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
        "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
        "length": "A String", # Content-Length of the data in bytes.
        "link": "A String", # Media download link.
        "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
        "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
      },
      "bucket": "A String", # The bucket containing this object.
      "contentEncoding": "A String", # Content-Encoding of the object data.
      "selfLink": "A String", # The link to this object.
      "owner": { # The owner of the object. This will always be the uploader of the object.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form user-userId.
      },
      "cacheControl": "A String", # Cache-Control directive for the object data.
      "acl": [ # Access controls on the object.
        { # 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.
        },
      ],
      "id": "A String", # The ID of the object.
      "contentDisposition": "A String", # Content-Disposition of the object data.
      "metadata": { # User-provided metadata, in key/value pairs.
        "a_key": "A String", # An individual metadata entry.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(bucket, object, body, projection=None)</code>
  <pre>Updates a data blob's associated metadata.

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

{ # An object.
    "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
    "name": "A String", # The name of this object. Required if not specified by URL parameter.
    "contentLanguage": "A String", # Content-Language of the object data.
    "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
      "contentType": "A String", # Content-Type of the object data.
      "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
      "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
      "length": "A String", # Content-Length of the data in bytes.
      "link": "A String", # Media download link.
      "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
      "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
    },
    "bucket": "A String", # The bucket containing this object.
    "contentEncoding": "A String", # Content-Encoding of the object data.
    "selfLink": "A String", # The link to this object.
    "owner": { # The owner of the object. This will always be the uploader of the object.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form user-userId.
    },
    "cacheControl": "A String", # Cache-Control directive for the object data.
    "acl": [ # Access controls on the object.
      { # 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.
      },
    ],
    "id": "A String", # The ID of the object.
    "contentDisposition": "A String", # Content-Disposition of the object data.
    "metadata": { # User-provided metadata, in key/value pairs.
      "a_key": "A String", # An individual metadata entry.
    },
  }

  projection: string, Set of properties to return. Defaults to full.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.

Returns:
  An object of the form:

    { # An object.
      "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
      "name": "A String", # The name of this object. Required if not specified by URL parameter.
      "contentLanguage": "A String", # Content-Language of the object data.
      "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
        "contentType": "A String", # Content-Type of the object data.
        "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
        "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
        "length": "A String", # Content-Length of the data in bytes.
        "link": "A String", # Media download link.
        "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
        "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
      },
      "bucket": "A String", # The bucket containing this object.
      "contentEncoding": "A String", # Content-Encoding of the object data.
      "selfLink": "A String", # The link to this object.
      "owner": { # The owner of the object. This will always be the uploader of the object.
        "entityId": "A String", # The ID for the entity.
        "entity": "A String", # The entity, in the form user-userId.
      },
      "cacheControl": "A String", # Cache-Control directive for the object data.
      "acl": [ # Access controls on the object.
        { # 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.
        },
      ],
      "id": "A String", # The ID of the object.
      "contentDisposition": "A String", # Content-Disposition of the object data.
      "metadata": { # User-provided metadata, in key/value pairs.
        "a_key": "A String", # An individual metadata entry.
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="update_media">update_media(bucket, object, body, projection=None)</code>
  <pre>Updates a data blob's associated metadata.

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

{ # An object.
    "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
    "name": "A String", # The name of this object. Required if not specified by URL parameter.
    "contentLanguage": "A String", # Content-Language of the object data.
    "media": { # Object media data. Provided on your behalf when uploading raw media or multipart/related with an auxiliary media part.
      "contentType": "A String", # Content-Type of the object data.
      "timeCreated": "A String", # Creation time of the data in RFC 3339 format.
      "algorithm": "MD5", # Hash algorithm used. Currently only MD5 is supported. Required if a hash is provided.
      "length": "A String", # Content-Length of the data in bytes.
      "link": "A String", # Media download link.
      "hash": "A String", # Hash of the data. Required if a hash algorithm is provided.
      "data": "A String", # URL-safe Base64-encoded data. This property can be used to insert objects under 64KB in size, and will only be returned in response to the get method for objects so created. When this resource is returned in response to the list method, this property is omitted.
    },
    "bucket": "A String", # The bucket containing this object.
    "contentEncoding": "A String", # Content-Encoding of the object data.
    "selfLink": "A String", # The link to this object.
    "owner": { # The owner of the object. This will always be the uploader of the object.
      "entityId": "A String", # The ID for the entity.
      "entity": "A String", # The entity, in the form user-userId.
    },
    "cacheControl": "A String", # Cache-Control directive for the object data.
    "acl": [ # Access controls on the object.
      { # 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.
      },
    ],
    "id": "A String", # The ID of the object.
    "contentDisposition": "A String", # Content-Disposition of the object data.
    "metadata": { # User-provided metadata, in key/value pairs.
      "a_key": "A String", # An individual metadata entry.
    },
  }

  projection: string, Set of properties to return. Defaults to full.
    Allowed values
      full - Include all properties.
      no_acl - Omit the acl property.

Returns:
  The media object as a string.

    </pre>
</div>

</body></html>